PR

実施するテストを考えるテスト設計者

 (2)テスト設計者は「テストケース」の設計と実施手順の作成を担当する。テストケースとは、どういう前提条件でどういった入力をすると、どのような期待結果になるのかといったテストで確認すべき事項を記述したドキュメントだ。テストの目的は狙った品質通りにソフトウエアが作られているかどうかを確認すること。この目的を満たすよう、テストで確認すべき事項を検討して決めるのがテスト設計者の役割だ。

 例えば、仕様書通りに機能が実装されているかどうかを確認するには、仕様書を読み込んで入力値によって動作が変わる箇所を把握して、それを網羅するようにテストケースを設計しないとならない。テストは機能を確認するだけではない。使いやすさ(ユーザビリティ)、性能、セキュリティなども確認する。これには機能の確認とは別のテストの方法を検討する必要がある。

 また、ソフトウエアの開発段階に応じて、複数のソフトウエア部品を組み合わせて実施する「結合テスト」、本番に近い動作環境で全部品を組み合わせて実施する「システムテスト」、要求を満たしているかをユーザーの立場で確認する「受け入れテスト」といった異なるテストをする。テスト設計者はテストで確認したい内容や開発の段階を考慮し、目的に合わせたテストケースを検討する。

 テスト設計者には効率性の追求も求められる。例えば、品質を担保するために大量のテスト実施手順を用意したとしよう。数が多いとテストの実施にコストがかかるし、極端に多すぎて納期までにテスト実施が完了できないようだと、納期遅延や品質悪化を招くことになる。

 筆者の所属するSHIFTでは、テストケースの設計では「必要最小限のテストケース数」で「効果的に不具合を見つけることができ」かつ「テスト対象に対して漏れがなく」さらに「テスト実行結果が人によってばらつかないこと」を重視している。この4つを全て満たすようにテストケースを考えるのは難しい仕事というのは想像できるだろう。

テストチームを率いるテストリーダー

 (3)テストリーダーは、テスト実行者、テスト設計者から構成されるテストチームを管理する役割だ。テスト作業を見積もる、計画を立てる、テストの実施状況を把握する、開発者やプロジェクトマネジャーに今後の見通しやリスクを報告する――といった仕事を担う。

 たいていの場合、テストは時間の余裕が少ない。作業を続けられないような重大なバグに出くわしたら、迅速かつ柔軟に計画を変更しなければならない。メンバーのマネジメントも重要な仕事だ。テストの実施作業は人手に頼ることが多いので、特にテスト実行者は数が多くなりがち。多人数のマネジメントが必要になる。仕事の難易度が高いこともあり、テスト設計者を経験したエンジニアが次のステップとして目指すことが多い。

 以上の3つの役割は、ほとんどのプロジェクトにいるであろうテストエンジニアの役割だ。プロジェクトの先進性や規模によっては、3つの役割に分類しきれないテストエンジニアも存在する。そうした1つが「テスト自動化エンジニア」。テストの自動化を担うテストエンジニアだ。このほか、大規模プロジェクトのプロジェクトマネジャーを品質やテストの面から支援する「品質PMO」という役割もある。

 国際ソフトウエアテスト資格認定委員会(ISTQB)では、試行中や開発中も合わせると将来的には17種類の役割を定義する予定だ。モバイルアプリケーションや自動車といった特定業界を専門にするテストエンジニア、アジャイル開発のテストを担当する「アジャイルテストエンジニア」などである。