この記事はShyam Ramanathanによるゲスト投稿です。
時間を節約し、エラーを防ぐには、ソフトウェアテストの主要なトレンドを先取りすることが不可欠です。
QAの目的は、全体的なデリバリーの観点からチームをサポートし、高い顧客満足度を達成し、そしてもちろん、ソフトウェアの欠陥を本番前に見つけることです。World Quality Report for 2021-2022によれば、QA部門はビジネスの成長と成果の向上に貢献する必要があります。また、企業の重役がかつてなくQAを重要視していることも強調されています。QAは後付けで考えるものではなくなってきています。QAはシフトレフトという目標に貢献し、デリバリーを加速し、プロジェクトの品質を高めます。
自動化をすばやくスケールアップできる、テスト環境の管理を改善できる、組織内のテスターのスキルを高めるアプローチを徹底できる、こういった能力は企業の繁栄にとって外してはならないトレンドのほんの一部です。
以下は、2022年に強いQA組織を作り上げるのに役立つソフトウェアテスト分野のトレンド トップ 10です。
1.開発スキル
現在のソフトウェア開発シーンにおいて、テスト分野のソフトウェア開発エンジニア(SDET)には大きな需要があります。テストの設計と実行に特化したQAテスターがいるだけでは、もはや十分ではありません。ドメイン知識を補完する優れた技術スキルや、手動テスターと自動化テスターの両方からなる多様性のあるチームも必要です。深いドメイン知識と強力な職務知識の組み合わせが重要です。
日々テストを行う中で、開発スキルを備えた人たちは、開発チームに対して開発特有の言葉を使って明確にバグを説明できるので、結果として修正までの時間を短くできます。また、開発スキルを持ったテスターがいると、欠陥レビューミーティングにおいて、QAが開発チームの視点からバグの修正方法について説明できるという点でも有利です。
2.アジャイルとDevOps
現況では、より速い製品ライフサイクル、より迅速なリリース、小規模な自律的チームが大いに求められています。アジャイルはさまざまなチーム間のコラボレーションを改善し、各プロジェクト固有の要請に合わせて調整可能な手法を提供します。多くの企業がアジャイルに移行している大きな理由として、デリバリーの加速、継続的インテグレーション、そしてより頻繁なデプロイメントによって、究極的にはエンドユーザーのニーズによりよく応え、より高い品質を提供するためといったことが挙げられます。 重要なのは、より早くエンドユーザーからのフィードバックを得て、必要に応じてコース修正をすることです。機能する最小限の製品をリリースするというスタートアップのカルチャーも、このようなトレンドの一例です。
DevOpsとは、開発ライフサイクル全体に関わるプロセス全体を自動化し、合理化することに他なりません。DevOpsテストの重要な要素として、アジャイルテストのベストプラクティスの採用があり、より多くの継続的インテグレーション技術を導入して確実な実行を保証するほど、成果物の品質も向上します。
アジャイルおよびDevOps開発モデルに「シフトレフト」という概念が取り入れられることがよくあります。シフトレフトは、全体的な品質の改善に役立ってきた重要な概念の1つです。QAチーム、開発チーム、ビジネスアナリスト(「BA」)チームがより早くからコラボレーションするほど、最終製品の品質がより高くなる可能性も高まります。
DevOpsおよびアジャイルの普及に伴って、シフトライトの採用も増えていくはずです。基本的に、シフトライトとは運用環境でのテスト、観察可能性、未知の予期しない事態に備えることを意味します。シフトライトはデプロイメントに対する即時フィードバックの取得も可能にします。シフトライトアプローチでは、アプリケーションのパフォーマンス、設計、ユーザービリティが継続的にモニターされ、ユーザーからのフィードバックが継続的に提供されます。
テストはアジャイルとDevOpsを確実に成功させるのに大きな役割を果たします。ライフサイクルのより早い段階、つまり初期に設計を練るためのセッションや受け入れ条件の合意形成時にQAチームが関与することで、より早くテストケースを作り始められます。つまり、開発チームはよりテストが容易になるようコードを作成できるほか、機能がどのようにテストされるかを知り、機能を開発しながら部分的にテストを担当することで、本来の要件を満たす機能はどのようなものであるかをよりよく理解できるようにもなります。
3.人工知能
QAに関するかぎり、AIはまだ始まったばかりの分野であり、AIがどのようにテストを変えるかを語る人は多くいても、実地に利用している人はほとんどいないようです。AIの主要な目的は、自動化(つまり機械学習)を利用してよりよい成果をデリバリーすることです。また、AIはデータサイエンティストやAI品質の専門家などに新しい仕事を生み出します。
AIベースのシステムのテストスキル、またAIを援用したテスト技術の利用スキルの両方を身につけたテスターには、今後数十年間、高い需要があるでしょう。AIの出現は、ソフトウェア開発チーム内でのQAエンジニアの役割を変化させます。テスターが組織内で新しい役割を確立するにあたって、AIを補い、AIに創造性を制限されないために、テスターは創造的である必要があります。
最近の進歩は、テストへのAI適用の新しい可能性を提示しています。よりよいテストデータ、レポート、テストケースを生成するためにAIアルゴリズムが開発され、予測可能なモデルが意思決定に役立てられ、リスクが高い領域やテストのカバレッジを把握するために、AI主導の分析が欠陥の検出を支援します。
4.モバイルテストの採用
インターネットへの接続に利用されるデバイスとして、モバイルデバイスは市場で55%のシェアを獲得し、デスクトップを抜いて大多数を占めています。現在のビジネス環境において、モバイルテストラボを設置できる組織、主体的にデバイスを管理できる組織、モバイルテストのテストカバレッジ計測を自動化できる組織は有利になるでしょう。
一般的に、モバイルアプリケーションには次の3つの種類があります。ネイティブアプリケーション、Webアプリケーション、ハイブリッドアプリケーションです。幅広いプラットフォームをカバーするため、多くの組織はハイブリッドアプリを選択しています。モバイルでテストを行う場合、エンドユーザーの視点から考えることが必須です。つまり、モバイルアプリがユーザーの要求に従って設計されているかどうかを理解するうえで、ユーザビリティが重要な差別化要因であるということです。画面のルック&フィール、フォントのサイズ、画面で使われている色、その他の特性が徹底して考え抜かれていなければなりません。
モバイルユーザーに良好なエクスペリエンスを保証するには、探索テストも重要です。顧客からのフィードバックに耳を傾け、ただちに対処することが重要です。 多くのモバイルテストの専門家は、可能なかぎり物理的デバイスを用いてテストするのが望ましいと推奨しています。もちろん、単体テストやスモークテストは、エミュレーターを用いてテストするのに適しています。エミュレーターで実行するほうが容易であるため、テストの大部分はエミュレーターで行われています。それでも、実機でのテストはエンドユーザーのエクスペリエンスを完璧に模倣できるので、QAは可能なかぎり物理デバイスを使用するべきです。モバイルテストに使用される主なツールには、Appium、Calabash、Frank、Robotium、SeeTestがあります。
5.テスト自動化
おそらく、自動テストは、QAが品質とコストの両面からプロジェクト全体に価値を付加できる最も有力な道であり、製品への顧客の信頼を醸成するのにきわめて重要です。
自動化の主な利点は、テストをバッチで実行できること、また、人間の介入なしに実施される回帰テストを実行できることです。自動テストでは、いつでも複数のスクリプトを起動して実行できます。これによって、多数のシステムや構成を並行してテストし、重要性の高い詳細な手動テストのための時間を作ることができます。DevOpsおよびデイリービルドの出現に伴って、毎回のビルドの成果物をデリバリーするのに一貫したテストの実行が不可欠になりました。一貫したテストは、それまでのすべての変更が損なわれず、最新の変更の品質が良好であるというユーザーの信頼を築きます。
自動テストの量がある線を超え、多数のテストケースが自動化されると、欠陥がより早期に見つかるため、コスト削減に役立つほか、多数の手動テストを強化してリソースを最適化できます。また、周到に作成された自動テストスイートがあれば、バグがより早期に見つかり、バグ修正の全体的な所要時間が短くなるため、チーム全体の生産性が向上します。
ここ数年で、商用のソフトウェア自動化ツールから Seleniumなどのオープンソースツールに向かう流れがあります。このような傾向は、オープンソースツールの知見を持つ組織に新興市場での優位性をもたらします。選択したツールがクライアントの環境で問題なく動作するかを確認するには、PoCの実施が不可欠です。広く利用されているオープンソースのテストツールとして、Selenium、Cypress、Cucumber、Testlink、TestNG、Watirなどが挙げられます。
6.テストを追跡するメトリクスの確立
メトリクスに関しては、さまざまな派閥があります。ソフトウェアテストは創造的な活動であり、創造性を計測するのは無意味だと言う人もいます。しかし、すべてのステークホルダーがプロジェクトの現在地を知りたいと考えており、進捗を測るメトリクスの確立は、プロジェクト全体の成功にとって重要です。メトリクスは、製品の品質を測るのにも、テスト自体の品質を測るのにも利用できます。メトリクスがなければ、品質目標が達成されたかどうかが、どうしてわかるでしょうか?
定期的にメトリクスをレポートすることで、プロジェクト品質が常に維持され、ステークホルダーに十分な情報が提供されていることを保証できます。これは、プロジェクトで決定を下し、適切なコース修正を行うのに非常に重要であり、結果的にビジネス成果の向上につながります。よく使われるメトリクスとして、スケジュール遅延、工数の増大、欠陥除去効率、総欠陥抑制効果などがあります。
7.セキュリティテストへの投資
過去に報道された有名企業のセキュリティ侵害事例の影響もあり、ここ10年でセキュリティはテストの最前線になっています。Covid-19 パンデミックの襲来以降、サイバー犯罪の比率が高まりました。セキュリティテストという専門領域の有識者を見つけることは、多角的なテスト組織の確立にとって不可欠です。セキュリティテストに含まれるテストの種類として、脆弱性テスト、侵入テスト、セキュリティ監査、APIセキュリティテストなどが挙げられます。一般的に、セキュリティ要件には、完全性、認証、可用性、認可、否認防止などの特殊な要素が含まれます。
セキュリティテストで注力すべきもう1つの領域が、テストおよびデプロイメントで使用するクラウド環境です。Synopsis.comによれば、「クラウドという概念は、共有および利用が可能な無限のリソースプールを暗に意味します。アプリケーションをクラウドにデプロイするのは、分散されたコンピューティング能力を活用することで利益を得られるプロセスだと多くの人々が期待します――いっぽうで、クラウドに関連するセキュリティリスクも受け継ぐことになります」。パブリッククラウドはさまざまな組織間でリソースを共有し、仮想化は多数の脆弱性を生むことが理由です。問題を克服する最良の方法は、適切なコントロールが実施されていることを確認し、環境をセキュア化することです。
8.チーム全体が品質に責任を持つ
最近の品質コンプライアンス要件を満たすため、開発部門とQA部門の統合がより一般的になってきています。そうすると、品質はQAチームだけの責任ではなくなります。デリバリーの責任はチーム全体にあります。QAチームと開発チームが協働することで、より良い品質とより多くの協調的ソリューションが実現します。この傾向は、開発者とQAメンバーがペアを組んで探索テストを実施することにもつながります。それは、すばらしいアイデアを促進する助けになるほか、サイロを打ち壊し、より高品質のソフトウェアと言う共通の目的を持って統合された1つのチームとして機能するというDevOpsムーブメントの基礎でもあります。
9.ラピッドソフトウェアテスト
James Bachの説明によれば、ラピッドソフトウェアテスト(RST)は「テストを行う人たちとテストが行われることを必要とする人たちを中心としたソフトウェアテストに対する責任あるアプローチです。ツール(「自動化」)を取り入れた(「方法の体系」という意味での)方法論ですが、プロセスを導き、推進する熟練した技術的メンバーの役割を重視します。この方法論の要は、オントロジー(さまざまな優先順位、概念、アクティビティ、テストのその他の要素をどのように組織化し、定義するか)、ヒューマニズム(私たちは方法論を各実践者の制御下に置くことで、責任とレジリエンスを促進します)、ヒューリスティック(問題を解決するための試行錯誤)にあります」。現在のソフトウェア開発は人間の制御下にあります。皆、何であれ自分がベストだと考えることを実行でき、また実行するべきであり、RSTは、どんなテストであれ自分が行っているテストに対して責任を引き受けるよう推奨するマインドセットおよびスキルセットです。
10.モノのインターネット(IoT)のテストのスケールアップ
Oracle.comによれば、モノのインターネット(IoT)は「他のデバイスやシステムとインターネット上で接続しデータを交換することを目的としてセンサー、ソフトウェア、その他の技術が組み込まれた物理的オブジェクトのネットワークです。一般家庭向け製品から高度な工業的ツールまで、幅広いデバイスがあります。」と説明されています。IoTには巨大な潜在的需要があり、今後数年以内に10億を超えるデバイスが接続されると見られています。 デバイスの複雑性、規制、多数の通信モードなどの要因から、しっかりとしたテスト戦略がいっそう重要になるでしょう。
IoTデバイスは他の大部分のデバイスとは明確に異なっており、IoTエコシステムの持つ複雑な接続性はIoTデバイスのテストの重要性を高めます。通常、IoTプラットフォームは4つの要素からなります。データセンター、センサー、ネットワーク通信、アプリケーションです。どの要素にも固有のテスト手法があり、テスターはそれらの手法を考慮して包括的なテスト戦略を立てる必要があります。
従来のソフトウェアテストがIoTに対しても有効とはかぎりません。IoTテストの成功のカギは、信頼のおけるセキュアなネットワークです。ソフトウェア品質を確保するため、テスターには深いドメイン知識が必要です。組み込みシステムやハードウェアのテストの経験が浅いテスターは、これらの領域のスキルを身に着ける必要があります。IoTの開発を成功させるには、導入の初期に標準とプラクティスを整備する必要があります。さまざまなデバイスやセンサーに対して明確な標準を確立し、データ要件を明確に定義し、さまざまなアクティビティを一覧できるリアルタイムのダッシュボードを作成し、しっかりとしたコントロールを働かせて関連するすべてのシステムのセキュリティを確保します。
ここで表明された意見は私個人のものであり、所属する組織の見解を表すものではありません。
Shyam Ramanathanは21年以上にわたってIT業界で働き、幅広い知識と経験を身に着けたGlobal Delivery Directorです。Shyamの顧客には、Fortune 500企業も含まれます。熱心なブロガーであり、自らの潜在能力を最大限に拡張し、他の人たちの能力も最大化することを使命としています。著書「Maximise Potential」は2012年から4年以上にわたって書き続けられた107のブログ記事をすべて収録しています。LinkedIn でShyamをフォローできます。Shyamには1万5千人を超えるフォロワーがいます。
(この記事は、開発元Gurock社の Blog 「Top 10 Software Testing Trends in 202」2022年2月23日の翻訳記事です。)