カテゴリー:

ソフトウェアテストとは〜進め方・時間/コストがかかる理由〜

はじめに

どうもこんにちは。GCコンテンツ編集部です。突然ですが、「ソフトウェアテスト」と聞いて皆さんは何を思い浮かべるでしょうか。画面を動かしてバグが起きないか確かめるような作業でしょうか。はたまた、開発者が触るようなプログラムが正しく動くかどうか確かめることでしょうか。本コラム記事では、ソフトウェアテストとは何か、をより大きな枠組みとして捉えて全体の構成を見ていきたいと思います。ソフトウェアテストって聞いたことあるけどどういうものかイマイチわからないという方、ソフトウェアテストに仕事で関わる機会があるけどあまりソフトウェアテストについてちゃんと考えたことがなかったという方、ソフトウェアテストを行っているけど、ソフトウェアテストとは、についてあまり考えたことが無い方、などソフトウェアテストに関わる方々に本コラム記事をご一読いただき、ソフトウェアテストへの理解を推し進める一助となればと思います。

ソフトウェアテストとは

さて、改めてソフトウェアテストとは何でしょうか。
これは手法の問題ではなく、ソフトウェアテストとは開発全体の中でどういうものか、という意味合いでの問いです。ある著名なソフトウェアテストの研究者は「ソフトウェアテストは最もポピュラーな品質改善手法である」と言いました。これは、ソフトウェアテストを理解するにあたって引用される有名な一文の一つです。
高橋寿一さんの書籍「知識ゼロから学ぶソフトウェアテスト」にも記載されています。

品質改善手法、とは、品質保証を行うための方法といった意味合いです。よって、「ソフトウェアテストは最もポピュラーな品質改善手法である」という一文は、ソフトウェアテストが品質保証(QA)の手法の1つであることを前提としていると言えます。※QAとは何かについて興味がある方はリンク先記事の「QAとは何か」をご一読ください。

ソフトウェア品質保証体系ガイド(SQuBOK)においてもソフトウェアテストは品質保証(QA)の1つの手法であるとして位置づけられています。ちなみに、SQuBOKにおいてはソフトウェアテスト以外の品質保証の手法としてレビュー、インスペクション、ウォークスルーなどが記載されています。ここでは他の品質保証の手法には触れず、ソフトウェアテストの定義の話を深堀ります。

ソフトウェアテストは品質手法の一つであるだけでなく、「ポピュラー」であることも文章の中に含まれています。「ポピュラー」は、日本語では平易な、人気のある、という意味合いです。つまり、少し拡大解釈な部分もあるかもしれませんが、ソフトウェア品質を向上させるための品質改善手法ではソフトウェアテストがファーストチョイスである、と言い換えても差し支え無いでしょう。

実際、ソフトウェアにおいて、リリース後その品質に問題が生じる場合、まずソフトウェアテストの状況が調べられることが多いでしょう。そしてソフトウェアテストにおいて、その品質の問題を検出出来ていなかったらソフトウェアテストの量/観点を増やすという選択が第一に考えられるかと思います。

さて、そんな品質保証の手法の1つであるソフトウェアテストですが、その大きな枠組みの中にブラックボックステストやホワイトボックステストのようなテスト関連の枠組みが入ってきます。今回のコラム記事ではブラックボックステストやホワイトボックステストの話は割愛させていただきますが、これらもあくまでソフトウェアテストという大きな枠組みの中の一つである、ということはソフトウェアテストを理解するにあたって非常に重要です。

ソフトウェアテストの位置づけの全体像スライドイメージは以下です。そもそも品質保証(QA)の中にソフトウェアテストが存在する、ということが意外と忘れられがちです。

ソフトウェアテストの進め方

品質保証(QA)が開発と運用に挟まれる形で位置することは別記事でご説明させていただきました(記事「QAとは何か」)。品質保証自体の解釈が多岐に渡る中ではありますが、位置付けとしては多くの組織で同様であると思います。では、その品質保証(QA)の1つの手法であるソフトウェアテストはどのように進めていくのでしょうか

ソフトウェアテストのプロセスも多くの書籍で様々な形で記載されていますが、概ねの方向性としては以下のようになっているものが多いと思います。

まず1つめの計画フェーズではソフトウェアテスト全体の計画をたてます。
スコープや終了判定基準等もこの計画フェーズで決めてしまうことが多いです。QAチームが存在する組織においては、上位のQAマネージャーがプロダクトマネージャー、プロダクトオーナーと相談しながらテスト計画を定める例もしばしば見受けられます。
次に、設計フェーズにうつります。英語だとtest designと表現され、様々なソフトウェアテスト設計技法を用いてテストケースの設計を行っていくフェーズになります。

その次に、設計したテストケースを実行していくフェーズになります。多くの場合、テストケースの実行段階で出たバグの報告も含みます。テスト実行に特化した仕事をテスターと言ったりもします。バグの報告は表現方法含め専門的な知識を要することが多く、ソフトウェアテスト関連の多くの書籍でバグ報告方法に関しても記載されています。実際テストケースでバグが全く見つからないことは基本的に無いので、見つかったバグを修正するのが次のフェーズです。
開発チームとのやり取りも必要になり、大規模な開発になればなるほどソフトウェアテストの専門性に加えて、高いビジネスレベルのコミュニケーション力が必要となります。ケースバイケースですが、多くの修正が必要となった場合は再度テスト計画からやりなおすこともあります。

こうして、ある一定レベルでソフトウェアテストを行った後にリリース判定会議が行われ、リリースとなり、後続の運用フェーズに引き渡されます。

文書報告のレベルやRole and Responsibilityは組織の性格にも依存すると思いますが、QA(品質保証)を組織として行う意思がある場合、ソフトウェアテストはこのようなフローとなっていることが多いです。

※見ていただくとわかる通り、品質保証の深度はリリース判定に依存し、テストの規模が大きくなるほどコミュニケーションが重要となります。そのため、アメリカではソフトウェアテストの実施を第三者機関に委託することが推奨されています。ソフトウェアの品質を上げるために、如何に客観的な情報を集めて判断するか、が重要視されているというわけですね。いかにもアメリカ的です。

なぜソフトウェアテストで時間/コストがかかるのか

さて、ではこのように行われるソフトウェアテストはなぜ時間/コストがかかるのでしょうか

まず、一般的にソフトウェア開発全体の中でソフトウェアテストの時間/コストは50〜80%といわれています。定量的なデータとして提示されているわけではありませんが、著名なソフトウェアテストに関連する書籍の記載のため、一定以上の信頼性のもとこの数値は用いられることが多いです。

※企業や調査機関による算出で上記数値とは異なったデータのものもあります。

ではなぜソフトウェアテストに多くの時間/コストがかかるのでしょうか
まず1に、当たり前ですが、ソフトウェアテストはその実施の量に依存して時間はかかります。より多くのテストの実行にはより多くの時間/コストが必要となります。

次に、開発フェーズでのテストの質/量/結果によってQAフェーズのテストの量が変わってきます。具体的に言うと、開発の単体テストレベルで多くのバグを含んでいる場合、QAフェーズでも念入りにテストを行ってリリースする必要が出てきます。

そして、3つ目に、サービスの機能や重要度によって全体のテストの量/深さが変わってくることもあります。これは、命やお金に関わるようなソフトウェアの場合、多くのテストを行うべきである、という話です。当然ですが、漫画を読むアプリと航空機のソフトウェアでは求められるソフトウェアテストのレベルは変わってきます。

このように、大前提としてソフトウェアテストは開発の規模によって時間/コストは一次関数的に増加するような性質を持っており、加えて、サービスの属性や前段での開発フェーズによって必要なコストが変わってきます。
より多くの品質をソフトウェアに求めるのであれば、その分その品質を保証するために多くの時間/コストがかかるというわけです。

さて、ソフトウェアテストとはなにか、について3つの観点(品質保証全体の中のソフトウェアテストの位置付け、ソフトウェアテストの進め方、そしてソフトウェアテストに時間/コストがかかる理由)からご説明させていただきました。

最後に、Glenford J. Myersというソフトウェアテスト界の最も有名な研究者の言葉を借りて本コラム記事を締めくくりたいと思います。

“テストとは、非常に創造的であり、知的に挑戦しがいのある仕事である”

The art of software testing より

あくまでここに記載させていただいたものは一つの解釈です。ソフトウェアテストという創造的で、知的に挑戦しがいのある仕事に対して取り組むにあたって、本コラム記事が少しでも助けになると嬉しいです。実際のソフトウェアテストの現場の知識・技法等はまた別のコラム記事で紹介させていただきます。

まとめ

・ソフトウェアテストとは、最もポピュラーな品質改善手法である
・ソフトウェアテストの進め方は、1.計画、2.設計、3.実行である。ソフトウェアテストではないが、多くの場合その後続アクションとしてソフトウェアテストによって発見したバグの修正とリリース判定が行われる
・ソフトウェア開発全体の中でソフトウェアテストの時間/コストは50〜80%といわれている
・対象となるソフトウェアそのものの重要度や機能の性質、開発フェーズでのテストの質/量によってソフトウェアテストにかけるべき時間/コストが変化する

関連コラム

私たちと一緒に働く仲間をお待ちしております。

エントリー

エントリーご希望の方は下記へのメール、またはお問い合わせフォームよりお願いします。
弊社担当者よりご連絡させていただきます。

EMAIL:recruit@grandchallenge.co.jp
件名:エントリー希望(氏名)