継続的テストは、ソフトウェアの開発に伴い各段階でテストを行うものです。欠陥やリスクをすぐに評価し、早期で対応を行うことができる継続的テストを今のワークフローに統合するために知っておくべき情報をまとめました。継続的テストやテストツールの導入を検討している方はぜひ参考にしてください。
継続的テストを説明するにあたり、シフトレフトの概念について紹介しておきましょう。
シフトレフトとは、開発テストを行う際にテスト工程を前倒しで行うというものです。これは、システム開発スケジュールが左から右に進行する流れとなっているため、それを左に移行する、シフトする、ということで呼ばれるようになりました。
早めにテストを行うことによって、ソフトウェアの問題を発見、修正することを目的としています。
継続的テストは、シフトレフトの概念に従ってソフトウェア開発の各段階でテストを行い、それぞれのリスクを評価、フィードバックを行うものなのです。
継続的テストを行うにあたり、開発者テスト担当者などそれぞれのステークホルダーがプロジェクト最初から最後までチームとなり進めていくのも特徴です。
1人がテストを実行しなければ他の人に影響が出てしまうため、自動化を行うことも重要になります。ソフトウェア品質向上やデリバリ加速によるコスト削減もメリットです。
継続的テストには、手動でテストを継続的に実行する方法と自動でテストを継続的に実行する方法の2つがあります。
手動でのテストはマンパワーによるものであり、担当者任せになってしまうこと、活動時間の上限が決められていることなどが課題となります。
一方、継続的テストツールを用いれば手動で行っていたテストが自動化でき、担当者の負担を減らすことができます。
また、継続的テストツールは自動化されたテスト生成によってその結果を即座に開発チームに提供します。チームとして問題をすぐに把握し対応することによって、本番環境に導入する際のリスクを低減できます。
さらにリリースが迅速にできるようになる、最終製品の品質を確保できるという点もメリットとして挙げられるでしょう。
継続的テストを導入して従来のテスト手法から移行する際には、様々な課題をクリアしなければなりません。DevOps環境向けの継続的テストツールが書けている、開発者が定期的にコードを正しく統合できないのは問題です。
適切なテスト環境がなく、最終的なテスト環境と一致する本番環境がなければ継続的テストは導入が困難です。
また、継続的テストの自動化をする際には、自動化だけでなくプロセス統合や技術の保守性、情報共有といった他の要素についても考慮しなければなりません。
継続的テストを実行するためには、様々な要素が必要となります。ここでは、3つの要素を紹介します。
継続的なテストを行う上で、各ソフトウェアテストをカバーする自動化テストが必要となります。
主なソフトウェアテストを挙げてみましょう。
自動化テストツールの導入を検討する際には、これらのテストに対応可能かどうかチェックしてください。
Continuous Integration(CI)は継続的インテグレーションのことであり、毎日1回など開発者の作業コピーを定期的に共有リボジトリに移動させそのたびに自動化されたビルドとテストを実行するというものです。
CIツールを利用する事によって小さな単位で検証しながらフェーズが進めば大きな単位で検証することによって、エラーのフィードバックが早くなります。
Continuous Deliveryは継続的デリバリーのことであり、CDと略されます。本番環境でのリリースに向けて準備することを主とし、ソフトウェアのパッケージングやテスト環境へのデプロイなどを行い、CDを経た本番環境にデプロイできる成果物を提供します。
CDのメリットとして、開発者がユニットテスト以上のコードテストが出来る、バグを早期発見できる、開発者の生産性を向上させるなどが挙げられます。
継続的テストを行うことによって、手動テストの自動化が可能となります。今よりも少ない時間と労力で高品質な製品が提供可能となるわけですが、ここでさらに継続的テストを最適化するためのポイントを押さえておきましょう。
まずは、プロジェクト自体を理解することから始めましょう。何をビルドするか、開発チームのスキルはどうかなどを考えます。
100%テストを行うことはっできないため、優先すべきストを考えてマッピングすることにより、テスト種類を明確にします。その上で、自動化できるものを探し、テストケースを考えましょう。
継続的テストをスムーズに行うにあたり、テストツールを導入しましょう。より早く・効果的にするテストツールを用いることで、ソースコードの解析や開発状況把握、継続的デリバリーなど多くの手動テストを削減することができるのです。
このとき、事業ごとに事業化してしまったら要件が違う部分が統合できないリスクがあります。継続的テストツールにはオンプレミスで利用できるものやクラウドで利用できるものがありますので、統一するようにしましょう。また、拡張性やプラグインがあるか、バージョン管理システム取れ刑しているかなどもチェックしておくと良いでしょう。
自動化導入に伴い、技術者・担当者がスキルを習得することも重要です。
継続的テストの成功と失敗を判断するための指標を決め、その内容を説明しておきます。これにより、ソフトウェアやアプリケーションが正しく機能しているかという結果を確認できるようになるのです。得られた結果は、進捗段階や品質の確認に使用しましょう。
このとき、試験結果をそのまま成果として利用できない、別途成果物として出力が必要などの課題があれば、開発や本番環境での自動化や連携がスムーズにいきません。開発・変更管理時の承認フローなどを適性化し、運用できるような体制づくりも求められるでしょう。
継続的テストを行うの上で、共同作業・コミュニケーションも重要な要素です。継続的テストは開発と運用、セキュリティ担当者を結びつけるものであり、チーム作業となります。開発、運用などそれぞれの部門の視点から問題解決に取り組むことにより、システム開発を成功させるのです。
また、開発チームの中で役割を責任を明確化し、チームで協力することも大切です。
開発者またはテスターが担当することになると思われますが、開発チームで協力して分担しましょう。
また、継続的テストではすべてのプロセスにおいて実際のユーザーを参加させることにより使い勝手や望んでいるものが得られるかどうかをチェックすることができます。
組織全体で標準化や情報共有をするのはもちろん、運用からフィードバックできる体制づくりを行いましょう。継続的な利用が出来るよう、パブリッククラウドの活用や活発な情報発信も重要となるでしょう。
継続的テストを導入すれば、手動テストの負担が減る、スピーディーに不具合を発見し修正できる、高品質な製品を作ることが出来るなどのメリットがありますが、いざ導入するとなれば様々な課題もあります。
適切なテスト環境や本番環境だけでなく、開発者の理解や継続的テストツールの用意、チーム内のコミュニケーション円滑化といった課題をクリアすることで、継続的テストを最適化する、恩恵を十分に受けることが可能となるのです。
継続的テストをする目的をしっかりと認識し、必要なテストを自動化することも重要です。まずは自社の目的は何か、実現のための課題は何かを明確化し、1つずつ改善するようにしましょう。
商品名 | Ranorex (ラノレックス) |
Autify (オーティファイ) |
---|---|---|
商品タイプ | パッケージ型
膨大なテスト工数を |
SaaS型
初期費用を抑えて |
対応テスト |
|
|
実行回数 の制限 |
制限なし |
制限あり
400回/1000回/任意 ※プランにより異なる |
日本語サポート | 導入後のセミナーが充実! | ヘルプサイトが充実! |
体験版 | 14日間 | 14日間 |
※Googleで「テスト自動化ツール」と検索し上位表示されたパッケージ型、SaaS型のテスト自動化ツール21種類の中から、(1)クロスデバイス、マルチブラウザに対応し、(2)日本語のサポートがあり、(3)ノンプログラミングでシナリオ作成が可能なツールをピックアップ(2021年11月1日調査時点)。パッケージ型、SaaS型それぞれの代表商品を選出しました。
【代表商品の選出基準】
☆パッケージ型:上記の条件の通り。
☆SaaS型:上記の条件に加え、公式サイト上に導入事例がもっとも多かったツールを選出。