【今回の登場人物】
- 大塚先輩:
- 入社10年目。5年前に柏田マネジャーと一緒にソフトウェアテスト事業を立ち上げた。カメラが趣味で、
暇さえあれば写真を撮りに出かける。 - 中山君:
- 入社5年目。本連載の主人公。入社以来ソフトウェアテスト一筋で経験を積んできた。そろそろ大きい仕事をしたいと考えている。
- 小川君:
- 入社2年目。新人研修後、
その有望さから半年間顧客先に常駐。テスト業務の他、 設計作業も経験を積んできた。趣味はベースで、 定期的に仲間とライブを行うなど仕事と趣味を両立している。 - 千秋ちゃん:
- 入社2年目。小川君の同期で、
開発部門所属。今までコーディングと単体テストは経験があるが、 システムテストに関わるのは初めての経験。趣味は自分磨き。
前回までの状況
新しくチームに合流した千秋ちゃんに資料を渡し、
元のプロジェクトの席に戻っている千秋ちゃんを見て心配になった大塚先輩は、
その会議のその場で小川君から作業レベルでの問題点や疑問も共有しておこうという提案があり、
今回はリーダではなく担当レベルが知っておく事柄も多いですが、
- 大塚先輩:
- ではみんな千秋ちゃんが作成したテストケースを見てほしい。
千秋の疑問 ~テストケースのフォーマット、ツール
- 千秋:
- えっと、
何から言えばいいかしら。そうね。これだわ。 - 千秋:
- テストケースの書き方なんですけど、
いまどきExcelで書くなんて古臭くありませんか? - 千秋:
- 最近読んだ本にはテストケースはテストコードとして書くのが普通と書いてありました。
- 中山君:
- えっ、
そうなの? - 千秋:
- それに、
こんなのいちいち手で書くの無駄よ。スクリプト書いちゃだめ? - 千秋:
- どうせツールで実行させるんでしょう。Excelで書いてその後スクリプトで書くなんて無駄じゃない。この程度だったらフリーのツールがどっかに転がってるでしょうし。
- 小川君:
- ダメだよ。コードだと可視性が落ちてしまうから、
使いどころを見極める必要があるね。今はその時じゃないよ。 - 千秋:
- 可読性? SEだったらコードぐらい読めるでしょう。それに動かしてみなくちゃ、
どんな結果がでるのかわからないじゃない。 - 小川君:
- 動かしてみて考えるんじゃなくて、
事前に期待結果を考えてやらないといけない。 - 千秋:
- 設計書に期待結果なんて書いていないじゃない。そんなもの、
どうしたらわかるのよ。 - 中山君:
- ちょっと待ってくれ。この案件はシステムテストなんだ。テストの一部分はツール化できるけれども、
全部は無理だよ。 - 千秋:
- え~、
いちいち手で動かさないといけないわけ? - 小川君:
- 中山先輩、
すいません。つい、 千秋ちゃんの話に引っ張られてしまって。そうなんだ。システムテストは手で行う部分も多いんだよ。
スクリプトによるテストは見極めを
千秋ちゃんはコンポーネントテストの経験があり、
それから、
プロジェクトで認定されていないツールを使うときは注意
千秋ちゃんはフリーのツールを使えば良いと言いましたが、
組織によってツールの取り扱い方は変わると思いますが、
規定の書式を尊重する
プロジェクトにはたいていの場合、
今回のケースはシステムテストを案件として取り扱っています。顧客への納品の可能性は高いと言えます。テストケースの表現形式を変える場合にはプロジェクト内の合意をちゃんととっておくことが重要です。
小川君の疑問 ~テストケースの優先度は?
千秋ちゃんのヒアリングがある程度進んだところで、
- 小川君:
- 書いたテストケースのすべてをテスト実施しますか?
- 中山君:
- 今回はわからないけれども、
全部はできないことが多いね。 - 小川君:
- 実施するテストとしないテストの区別はどうやっているんですか?
- 中山君:
- ケースバイケースだなぁ。プロジェクトによってそれぞれ違うから。
- 小川君:
- …質問を変えます。テストケースに優先度はありますか。
- 中山君:
- 品質リスクを狙ったテストケースは優先度が高いかなぁ。
- 小川君:
- このシステムにおける品質リスクについて書かれたものはありますか?
- 中山君:
- ……。
テストケースの優先順位付け
システムテストというのは、
開始時期は遅れるけれども終了時期に変更は無いということが多いのです。そのため、
このような場合、
大塚の質問 ~テストケースの粒度
小川君の質問が終わったところを見計らって大塚先輩が質問をしました。
- 大塚先輩:
- 千秋ちゃんのテストケースを見て、
みんな気づくことはあるかな。 - 千秋:
- 大塚さん、
私のテストケースが駄目ってことですか。 - 小川君:
- 僕も少し気づいていたんですが、
言葉にできなくて。 - 千秋:
- 何よ。ちゃんとはっきり言ったらどうなの。
- 小川君:
- 前のプロジェクトでも似たようなことがあったんだ。前のプロジェクトはたくさんの人がテストケースを書いていたんだ。それを見たときに感じたんだけど。
- 中山君:
- それは、
テストケースの粒度かもしれない。テストケースには粒度があるんだ。
(やっと、先輩らしいことが言えた) - 千秋:
- テストケースの粒度? 聞いたこと無いわ。
- 小川君:
- 当たり前だろう。僕らは知らないことが多いんだ。中山先輩、
その粒度というものを少し説明してもらえますか。 - 中山君:
- えっ、
説明?! うまく説明できないけれども、 テストケースには粒度はあるんだ。 - 大塚先輩:
- それについては、
後で本を紹介するよ。それを読めばおおむね分かると思うよ。
(本の該当ページを読んだ後)
- 千秋:
- テストケースに粒度があるってのはわかったわ。じゃあ、
適切な粒度ってのは誰に聞けばいいの? - 小川君:
- テストケースの粒度を決めるのはリーダの仕事ですか?
- 中山君:
- まぁ、
そうなるのかなぁ。 - 千秋:
- 中山クンが決めなかったからいけなかったってこと?
テストケースの粒度を決める。
一人でテストケースを書く場合は、
テストケースの粒度というのは、
テストケースの粒度について
大塚先輩が言っていた本は、
同書によれば、
テスト仕様は次のような詳細化レベルに分類できる。
レベル0:テストケースの実施前に文書を作成しない。とにかく作業をするだけ。
レベル1:全体的な目的とテストの性質についての簡単な説明。典型的な文書の長さは1~2行。
レベル2:テスト条件とテスト項目のリスト
(各条件の説明は1行に限る)。典型的な長さは1/ 4~1ページ。 レベル3:レベル2のリストに記載した各条件のテスト方法の概要。内容は入力データ、
初期条件、 各条件の予想結果など。典型的な長さは各条件ごとに1/ 4~1/ 2ページで合計で1~3ページ。 レベル4:手動でのテスト実施方法の手順説明
(全てのアクション、 クリック、 キーストロークを含む)。典型的な長さは各条件ごとに1/ 2~2ページで合計3~20ページ。 レベル5:自動テストプログラム。典型的な長さはテストスクリプト言語の簡潔さと密度によって異なる。簡潔なスクリプト言語では、
コード (命令) は通常10~100行になるが、 言語数が多いとソースコードは5~50ページになることがある。
アメリカの事例ですので、
ここで伝えたいことは、
大塚の質問 ~リーダとしてのテスト実装を考える
- 大塚先輩:
- 中山君はリーダとしてどのようにテスト実装工程を考えれば良いと思う?
今までの議論を聞いていて大塚先輩はきっと中山君はリーダとしてのテスト実装のイメージがないのではないかという疑問を持ったので、
- 中山君:
リーダとしてテスト実装をどう考えればいいか…ですよね。
(…こまったなぁ。今までは、 自分がテストケースを書いていけばいいんだし、 今もテストケースを書く立場なんだけど…。) (「テストケース書いたことあるよね。」 「じゃぁ、 書いて。」 だけじゃだめなんだよね。たぶん。) (そういえば、 進捗は何ではかるんだ? 1日あたりの作成テストケース数か?) (テスト実装工程には計画上1週間用意してあるけれども、 その間どうやってみていくんだ?)
考え込む中山君に、
- 大塚先輩:
- 多くの場合、
このテスト実装工程から急にテスト担当者が増員される。それだけに、 指示の出し方や進捗管理といった視点が強く必要になる。 - 中山君:
- はい。テスト設計までは、
どちらかというと少人数で集中的に行いますものね。 - 中山君:
- なるほど、
僕には 「多人数で作業を分担しながら行う」 という視点が抜けていたようです。
テスト実装の方針を示す
先ほど、
テストケースの作成状況をモニタする
テスト実装工程での主な成果物はテストケースです。ですから、
作成したテストケースはレビューする
あるプロジェクトでは、
定期的なミーティングを行おう
もちろん他の工程でも重要ですが、
できるだけ、
おわりに
大塚先輩のアドバイスに中山君はまず自分のリーダとしての像を考えるべきだと思いました。そこで、
このように、
果たして中山君は
次回は、