ウォーターフォール案件を中心に経験を積んできたテストエンジニアが、アジャイル型で進めるプロジェクトにアサインされて心が折れる――。ここ最近、そこかしこで見受けられる光景だ。アジャイルは短い期間で機能のリリースを繰り返す。少しずつテスト対象の機能が増えていき、テストエンジニアは徐々に時間不足に追い込まれていく。

 アジャイル型開発とは、開発単位を細分化し、短い開発サイクルを繰り返す開発プロセスのことである。1つひとつの要件を小さくし、少しずつ機能追加していく。多くの場合、システムを稼働させながら必要な機能から開発していくことになる。

 最初に決定した要件定義・設計に従って開発・実装していくウォーターフォール型の開発プロセスと比べると、「仕様変更や不具合発生による手戻り工数を抑えられる」「リリースを小さく早くすることで市場の反応を得やすい」「実物を見ることでサービスをイメージしやすくなる」といった特徴がある。顧客の反応を確認しながら軌道修正したいBtoCサービスやクラウドサービスではメリットが多い。

アジャイルのプロセスとスプリントの例
[画像のクリックで拡大表示]

 アジャイル型開発では「スプリント」と呼ばれる、2週間程度の決められたサイクルでタスクを消化していく。今回はこうした短いスプリントの中で、着実にテストを実施するためのコツを解説しよう。なお、ここでは数回のスプリントをまとめてリリースする、テストエンジニア1人がフルタイムでアサインされているという前提で説明を進める。

開発メンバーもテストに巻き込む

 アジャイル型開発ではスプリントごとに機能を作り、それを繰り返して大きなシステムを作っていく。開発が進むほど、スプリント内のテストで確認すべき範囲は広がっていく。単純にテストの量を増やしていくと時間がなくなる。時間切れでテスト不足のままリリースして、障害が発生するというのがよく聞くトラブルだ。

 アジャイル型開発に参加するテストエンジニアには、テストを効率良く実施することが求められる。コツは大きく2つある。1つめは「テストの計画」、もう1つは「自動テストの導入」だ。以下、順番に説明していこう。

 1つめのテストの計画では、そのスプリントでテスト対象になり得る範囲からテストを実施する箇所、実施しない箇所を決める。このために、最初は開発者やテストエンジニアがシステムに対して抱く不安点、過去のスプリントや類似のシステムで発生した障害を洗い出す。これに基づいて、不安な箇所、過去に障害が発生した箇所は必ずテストを実施し、そうでない箇所はテストを実施しない、後回しにするといった決断をする。

 ここで重要なのは、テストエンジニアが1人で抱え込まないこと。不安点は積極的にチームと共有しよう。場合によっては、開発担当のメンバーに開発中に確認してもらうよう頼むことも可能だ。「1人でテストを行う」のではなく、「チームで機能をリリースする」という発想で計画を立てる。

 テストエンジニアがテスト対象を十分に理解している場合は、テストケースを作成せずにテストを実行するという方法もある。テストケースを作成する時間を省き、その分をテスト実行に充てられる。ただし、テストの知見が属人化する、実施したテストの内容を後から振り返りにくい、といった大きめの副作用があるので注意が必要だ。普通では実施しない操作を試す「意地悪テスト」に限るなど、テストケースなしで実施するテストは範囲を限定的にしておこう。

この先は有料会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら