KeyConductors
今、あらためて考えるテスト自動化【第2回】
テストを自動化するに当って、どのようなツールがあるのかを紹介したい。
テスト自動化ツールのご紹介
第1回では、テスト自動化の概略についてお伝えしましたが、テスト自動化には自動化が進んでいる分野と、そうでない分野に分かれます。
現在、単体テストやカバレッジ計算、UIテストなどは自動化ツールも普及しており、テスト自動化の動きが進んでいます。対して、結合テストや受け入れテストなどはまだ自動化ツールも少なく、これからの動きに期待したい分野となります。
第2回では、以下の図にあるように、それぞれの分野でのテスト自動化ツールに焦点を当て、テストの自動化ツールにはどのようなものがあるのかをご紹介したいと思います。
1.網羅的なテストを自動化するツール
網羅的なテストの自動化には、CI(Continuous Integration:継続的インテグレーション)ツールが使われます。この分野では、Jenkinsが広く使われており、いまやCIツールのデファクトスタンダードとなっています。
Jenkinsは、もともとソフトウェアのビルドを自動化するために使われていましたが、最近では、テストの自動化ツールとしても広く知られています。例えば、あらかじめ設定することで、ソースコードに変更が加わったタイミングで自動的に単体テストを実行する、ビルドするタイミングで機能の動作を確認するスモークテストを自動実行する、ソフトウェアの構成が変わったときに構成確認のテストを実行する、といったことが可能になります。
また、最近ではJenkinsと並ぶCIツールとして、ビルドやテスト、デプロイなどを自動実行するクラウドサービス「CircleCI」や「Travis CI」も出てきています。どちらもクラウドベースのソースコード管理サービス「GitHub」と連携し、ソースコードに変更が入ったタイミングで、ビルドおよびテストを実行するサービスです。
今までは、CIやテストの実施は社内のビルドサーバやテストマシンで実行することが多かったわけですが、CircleCIやTravis CIのようなクラウド型のCIツールが登場したことで、よりクラウドサービスを利用した開発が可能になってきています。
2.特定のテストに特化した自動化ツールとフレームワーク
次に、特定のテストに特化した自動化ツールおよびフレームワークをご紹介いたします。
(1)単体テストの自動化
単体テストの自動化には「xUnit」と呼ばれるフレームワークが広く使われています。これは単体テストのためのテストフレームワークの総称であり、例えばJavaでの開発向けであれば「JUnit」があります。JUnitは、現在多くのプロジェクトで使われていますので、聞いたことのある方も多いのではないでしょうか。その他、C言語であれば「CUnit」など、Java以外にもC++, Ruby, Pythonなど多くの言語向けの単体テストフレームワークが提供されています。xUnitはアジャイル開発において、テストファーストや、リファクタリングの前提となる非常に重要な要素なので、アジャイル開発を行なっているチームでは単体テストの自動化はすでに行われているのではないでしょうか。
(2)テストカバレッジ計測の自動化
テストケース全体のうちどれだけ実施したかを示すテストカバレッジ(テストの網羅率)が、ソフトウェアの品質を保つための重要な指標となっています。テストカバレッジの数値が、ソフトウェアの品質保証にもつながるのです。テストカバレッジの計測においても「COVERALLS」や「CodeConv」といったクラウドサービスが提供されています。
これもCircleCIやTravis CIと同様に、ソフトウェアに変更が入ったタイミングで、自動的にソフトウェアのテストカバレッジを測定します。また同時に、ソフトウェアのモジュールやパッケージ単位でもカバー率を測定し、前回のソフトウェア変更時のカバー率との比較も行ないます。例えば、新しく加わったソフトウェアへの変更によりカバー率が下がった場合は、警告が表示されます。このように、テストカバレッジを測定することで、継続的なソフトウェア品質の向上につなげられます。
(3)UIテストの自動化
今までUI(ユーザーインタフェース)テストは、テスト自動化の中で大きな課題でした。特にWebシステムのUIテストは、ブラウザごとにテストの仕組みを用意する必要があるため、複数のブラウザを横断したUIテストを実施するのは非常に困難でした。この状況を大きく改善したのが、オープンソースのテスト自動化ツールである「Selenium」です。
Seleniumは直接ブラウザを操作するのではなく、「WebDriver」によりAPIを利用してブラウザを操作します。それにより、単一のAPIで複数のブラウザを自動的に操作できるようになりました。Seleniumを活用することで、WebアプリケーションのUIテストを自動化することができるのです。W3C(World Wide Web Consortium :Web技術の標準化を行う団体)での標準化も進んでおり、2018年6月5日付けで、WebDriver APIがW3C標準の勧告に到達しました。
次に、スマートフォンアプリのUIテストはどうでしょうか。iOSについてはAppleから「XCUITest」というUIテストの自動化フレームワークが提供されており、AndroidについてはGoogleから「UI Automator」というフレームワークが提供されています。ただ、どちらもそれぞれのOS に特化したテストフレームワークになります。
このように、異なるプラットフォームのUIテストを共通の仕組みで自動化できるのが「Appium」になります。AppiumはSeleniumのWebDriverの仕組みを利用することで、iOSとAndroidを横断したUIテストが可能となります。
3.受け入れテストの自動化フレームワーク
このように、単体テストおよびUIテストの自動化については、CIツールやSelenium、Appiumといった自動化ツールが提供されていますが、結合テストや総合テスト、受け入れテストなど、テストの中にはまだまだ自動化できていないものがたくさんあります。このような大きな枠組みをターゲットにしたテスト自動化のフレームワークが出てきていますので、最後に紹介したいと思います。
受け入れテストのために開発されたテストフレームワークとして「Robot Framework」があります。ただ、受け入れテストに限らず広い使途で活用できる仕組みとなっています。このRobot FrameworkはPythonベースのテスト自動化フレームワークであり、テストデータへのインタフェース、テスト実施の枠組み、そしてテストを実施する環境へのインタフェースがそれぞれ定義されており、モジュラー化されたブロックを組み合わせることで自動化の仕組みを構築できるようになっています。今後はこのようなフレームワークも活用しながら、テストを自動化しソフトウェアの品質の向上につなげていくとよいのではないでしょうか。
さて、次回はテスト自動化の仕組みについてご説明いたします。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
こんなメディアも見られています
キーマンズネットに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
アクセスランキング
-
1
「Gemini Notebook」になって何が変わった? NotebookLMからの変更点をおさらい
-
2
ゼロから分かる「Python in Excel」 プログラミング未経験の筆者がデータ分析してみた
-
3
生成AIで減る作業時間、残る確認と責任 ITエンジニア1265人調査
-
4
そのFTP、止めて大丈夫? 「古いファイル転送」を残すか見直すか
-
5
なぜ「情シス不在」でもIT化が回る? 39人の町工場が15年かけて見つけた答え
-
6
「AIを盗む」のではなく「AIを動かす」ために Googleが捉えた攻撃者の異変
-
7
Googleの自動化ツール「Workspace Studio」×Gemini、4つの業務効率化アイデア
-
8
AI議事録は「文字起こし」で選ばない 表で分かる「Notta/AutoMemo/AiNote」の特性
-
9
7歳からのLinux愛好家が、なぜ今「Windows」に? OSの見方が変わった理由:896th Lap
-
10
その見積書、ChatGPTに入れて大丈夫? 現場で迷わない「OK/NG」の線引き
キーマンズネット SNS
インフォメーション
注目情報をチェック
キーマンズネットをフォロー