こんにちは、Qualitylabです。 テストの基礎をお伝えするにあたって、前回は「テストとは何か?」ということを解説しました。この記事では、テストの必要性について解説していきます。
◯目次
- なぜテストが必要だと思いますか?
- サービスイン後のインシデントを未然に防ぐこと
- 品質基準を満たしていることを証明すること
- 当たり前品質を実現し、安心・安全なプロダクトを届けること
- JSTQBで定義されているテストの必要性
- テストの必要性を説明するときに欠かせない「品質」との関係性は?
- 最後に
早速ですが、なぜテストが必要だと思いますか?
近年ソフトウェア開発ライフサイクルの中で、テストの必要性が注目されてきています。 Qualitylabではテストの必要性を大きく分けて以下の3点だと考えており、日々目標にして業務に取り組んでいます。
①サービスイン後のインシデントを未然に防ぐこと
②品質基準を満たしていることを証明すること
③当たり前品質を実現し安心・安全なプロダクトを届けること
下記に順に説明していきます。
①サービスイン後のインシデントを未然に防ぐこと
- 最終コストの削減はもちろん、サービスイン後のインシデントを防ぎ、クライアントの社会的な信用を向上・維持することに貢献します。
Qualitylabでは、これまでのノウハウを元にして作成した観点リストや複数名でのレビューなどを導入し、客観的な目線で個人のバイアスがかかったテストを設計することがないように取り組んでいます。 また、仕様の抜け漏れを指摘することによって、不具合の作り込みを未然に防ぐこともインシデントを防ぐために必要な取り組みです。そのために、上流工程からプロジェクトに参加して、顧客の要望や要件、仕様に対してQA目線でレビューすることが必要です。上流工程からプロジェクトに参加することの重要さや最終的なコストの削減などの利点をお客様にお伝えすることを意識しています。
②品質基準を満たしていることを証明すること
- テストプロセス標準を開発プロジェクトで使用し、策定したテスト計画に基づいたテスト設計・検証を実施することで品質基準をクリアしていることを証明します。
品質基準をクリアできていることを証明するためには、テストプロセスを標準化することが必要です。なぜなら、基準を評価するテストプロセスが属人化していたり主観に基づいていると、同じ目線で評価出来ないからです。策定されるテスト計画や設計されたテスト・実施にばらつきが出てしまい、品質基準がブレてしまいます。 しかし、すべての開発プロジェクトで使用可能なテストプロセス標準を作成することはほとんど不可能といえます。Qualitylabでは、継続的にテストプロセス標準の見直しを行い、プロジェクトに応じてテーラリングが可能な状態にすることを目指しています。
③当たり前品質を実現し安心・安全なプロダクトを届けること
- クライアント・エンドユーザ・システム運営者などの利用者目線でプロダクトを評価することで当たり前品質を実現し、関係者が幸せになること。
品質は大きく「当たり前品質」と「魅力的品質」と捉えることができます。
スマートフォンで例えると、「問題なく充電できること」や「通話音声が聞こえる」といった品質は当たり前品質であり、「写真を高画質で撮ることができること」といった品質は魅力的品質と考えられます。
当たり前品質 や 魅力的品質 などのソフトウェアの品質は顧客の満足度に繋がります。 しかし、「魅力的品質」を重視しすぎることにもリスクがあります。 例えば、納品の直前に「魅力的品質」を増やすために仕様の追加をした場合、それまでに行なっていたテスト結果や、テストを行って得られた信頼性を低下させることになり、「当たり前品質」が下がってしまう可能性もあるためです。
Qualitylabでは、「当たり前品質」を当たりに実現できるように顧客が納得する水準の品質を目指して、自分たちの仕事に取り組んでいます。
JSTQBで定義されているテストの必要性 また、JSTQB FLのシラバスでは、このようにテストの必要性を説明しています。 “ソフトウェアテストでは、コンポーネントやシステムが稼働する前に欠陥を検出して修正することで品質向上に貢献したり、契約や法律上の要件、および各業界の標準に合致していることを証明したりするために必要になります。そのためには、ソフトウェア開発ライフサイクルの中の適切な時点で、適切なテスト技法を適用したテストを行うことが重要です。”
品質向上はもちろん、さまざまな基準を満たしていることを証明するためだけではなくクライアントやエンドユーザーの暮らしがより便利になるためにもテストは必要です。 ではなぜ、ソフトウェア開発ライフサイクルの中の適切な時点で、適切なテスト技法を適用したテストを行うことが重要なのでしょうか?
1:10:100の法則
まずは、以下のグラフをご覧ください。
欠陥を発見するタイミングが遅くなるほど、修正作業・修正コストが増大することがわかると思います。ソフトウェアのバグ修正コストは、発見されるタイミングによっては10倍、100倍になりえます。特にリリース後では、大幅に増えることになります。こういった事象を起こさないためにも、適切なタイミングで適切なテスト技法を適用することが重要です。
ソフトウェアと品質
ソフトウェアテストの必要性を考えるにあたって、「品質」という言葉は欠かせません。ソフトウェアと品質については次の3つと関係があります。
・品質の確保
ソフトウェアの品質を確保するため、リリース前にテストを行います。 適切に設計したテストを実施することで、リリース後の欠陥多発や欠陥偏在によるリスクの度合いを下げることができます。 また、期待する結果と実際の結果に差異が生じた場合は不具合として報告します。 報告された不具合や欠陥を修正することによって、システムの品質を上げることができます。 リリース前のテストは品質を確保するために行うといったことを認識すると、テストは手段であり、不具合や欠陥を修正してシステムの品質を上げるための目的であることがわかると思います。 発見した不具合や欠陥が修正されているか確認する際のテストも重要です。仕様通りに修正されているか、別機能に影響が及んでいないかといったことまで確認して(リグレッションテスト)、初めて品質が確保されたと自信を持って言えるでしょう。
・品質の計測
テストから検出した欠陥を基に、ソフトウェアの品質を計測することができます。 欠陥や故障の計測によって、品質に対する定量的な判断を行うことができます。 判断には、ソフトウェアの機能要件/非機能要件や品質特性(使用性、効率性、保守性など)を指標として計測することができます。ただし、適切なテストケースを使用している場合に限ります。 また、計測の例としては以下のものがあります。
- テストケース消化数と故障発生件数から割り出したバグ密度
- テスト実施時間の経過と故障発生件数の推移
- システムの性能(応答時間など)に関するデータの収集
・プロセス改善のための情報提供
テストを行っていると様々な欠陥が見つかります。 例えば、過去に似たような欠陥が見つかっていたというケースもあるでしょう。なぜ似たような欠陥が見つかるのでしょうか。理由としては、過去に見つかった欠陥を修正する際に、欠陥の根本原因を除去せず修正しているためです。 欠陥の分析を行うことで、欠陥の根本原因を理解することができ、開発プロセスを改善する必要があるかもしれないということが発見できるかもしれません。 そして、開発プロセスが改善されれば同じ欠陥の作り込みを未然に防ぐことができます。同じような過ちを繰り返すことがなくなれば、将来開発するソフトウェアの品質の改善にも繋がります。 また、テストは品質保証活動の一つとして組み込む必要があります。 テストそのものを目的にしたり結果を放置せず、欠陥の修正やプロセスの改善に反映させることが重要となります。
最後に
ここまでソフトウェアテストの必要性や目的などを説明してきました。 この記事を通じて、少しでもテストの重要性が伝わっていたら幸いです。
次回は「テストの7原則」についてご紹介します。
『Qualitylab』とは(※1)
ソフトウェアの品質保証を行う弊社サービス『Qualitylab』には、JSTQBが実施している、JSTQB認定テスト技術者資格試験の資格保有者が在籍しています。
Qualitylabとは、アプリケーションの機能・サービス品質をテストすることに特化した新サービスで、APAC,EMEA,Americasの20の国と地域、32拠点から豊富な人材リソースおよび国内外パートナー企業との豊富なネットワークにより、コスト最適でスピーディな提案をいたします。
Qualitylabは自社サービスの品質に課題を感じている顧客、バージョンアップ頻度が高くリグレッションテスト(※2)にコストと時間がかかっている顧客を対象にコスト効率・検出効率を最適化し、独立した第三者チームを提供いたします。
※1: 2022年4月より名称がテスター・ラボからQualitylabに変更となりました。
※2: リグレッションテストとは、開発でプログラムの一部を変更した際に、新たな問題が発生していないかを検証するテストのことです。