【テスト自動化】単体テストとUIテストを自動化する方法

こんにちは!CODE CLUB965のKです!

今回は、テスト自動化について書こうと思います。

以前、テスト自動化のメリットと自動化導入の判断ポイントについて書きました。

まだ読んでいない方は、ぜひ読んでみて下さい!

今回は、テスト自動化の実現方法について書きます。

以前、テストの種類は大きく3つに分かれるという記事を書きました。
こちらの記事です。

3つとは、「単体テスト」「機能テスト」「シナリオテスト」の3つです。

テスト自動化の観点で見ると、「機能テスト」と「シナリオテスト」はどちらも、画面を操作するテストで同じです。

つまり、テスト自動化の観点では、メソッド単位のテストである「単体テスト」と画面を操作するテストである「UIテスト」の2つに分けることができます。

この2つのテストをどのように自動化していくのか見ていきます。

単体テストの自動化

プログラミング言語ごとに、単体テストを実装するためのライブラリがあるので、それを使って自動化を実現します。

例えば、RailsであればRSpec、Node.jsであればJest、といったライブラリがあります。

単体テストの実装方法は非常にシンプルで、以下の流れです。

1. 期待値を用意する
2. テスト対象のメソッドを呼び出して結果を取得する
3. 期待値と結果を比較して、メソッドが正しく動作しているかテストする

割とイメージはしやすいかと思います。

この流れを単体テストのライブラリを使って実装します。

UIテストの自動化

UIテストの自動化には様々な手段がありますが、よく使われるツールの1つがSeleniumです。

Seleniumを使うことで、WebアプリケーションのUIテストを自動化することができます。

Seleniumは、ブラウザの操作を覚えさせることができ、また画面の表示が期待値と合うかどうかのチェックをすることができます。

例えば、ログイン機能を自動化するとします。

まずは、操作を覚えさせます。

1. ログイン画面を開く
2. メールアドレスに「sample@sample.com」と入力する
3. パスワードに「sample99」と入力する
4. 「ログイン」ボタンを押す

というような感じです。

ちなみに、覚えさせるための手段ですが、実際にブラウザ上で操作をして覚えさせることもできますし、操作をプログラミングすることもできます。

操作を覚えさせたら、操作後の期待値を定義します。

ログイン機能の例であれば、例えば、「『Sampleさん、ようこそ』の文字列が含まれる画面に遷移すること」です。

操作と操作後の期待値が定義できたら、テストを実施することができます。

定義に従って自動で操作が行われ、操作後の画面が期待値と合うかどうかをテストしてくれます。

最後に

いかがでしょうか?
やってみると、意外と簡単にUIテストが実装できることが分かります。

今回はテスト自動化の実装方法について書きました。
興味が湧きましたら、ぜひ試してもらえたらと思います!

それでは、また!

Follow me!