こんにちは。テスト設計を担当するゆうゆうです。
最近、JCSQE中級ソフトウェア品質技術者資格試験を受けるために「ソフトウェアの品質保証」について勉強しました。「ソフトウェア品質知識体系ガイド SQuBOK Guide V3」はその本の分厚さに一瞬ひるみますが、読んでみると意外と面白かったし勉強になりました。そして、JCSQE中級ソフトウェア品質技術者合格しました(わーい!)。勉強って過程が大事だと思うけど、結果が伴うとやっぱりうれしいものですね。
ソフトウェアテストの品質
さて、ここからが今日の本題。ソフトウェアの品質向上というくくりでいえば、たとえば、シフトレフトして上流工程で不具合を見つけて対応しよう、テストを自動化して頻繁にテストをして品質を担保しようといった話になるでしょう。
でも、テスト会社である私たちは総合テストを担当することが多く、その目の前のテストの品質を上げることがソフトウェア品質向上に寄与することにつながります。そう、私たちの課題は「ソフトウェアテストの品質向上」なんです。今回は、その中から「テスト実施の品質を上げる」ためにテスト設計者に何ができるかを考えていきます。
総合テスト実施の現場で、テストの実施品質を左右するものはなにか。その一つが、テスト実施者の“思考を阻害しないこと”ではないかと思います。テスト実施中に思考が阻害されるような要素があると、テストに集中できません。そうなると、集中していれば気づいていたかもしれないことを見逃したり、注意力が散漫になって間違ったテストを実施してしまうといった最悪のケースも考えられます(あいたたた)。この、思考を阻害する要因を取り除き、テストに集中できるテストケースを作ることができれば、テスト実施の品質も上がるんじゃないかなと思うわけです。
思考を阻害しないためのテスト設計
先日、1つのテストに対して1つのテストデータを利用するシナリオテストのテストケースレビューをしました。テストデータの再利用ができないため、「シナリオ数×テストする環境数」分のテストデータが必要なテストです(もうすでにやっかいなにおいがプンプンします)。
そのテストケースは、テストデータが別シートで一覧化され、参照するテストデータの番号がテストケース内に記載されているという形で作成されていました。
テストデータNo. | シナリオNo. | 確認環境 | アカウント | 登録情報 |
---|---|---|---|---|
001 | シナリオ1 | Windows | ●●● | … |
002 | シナリオ1 | Mac | ▲▲▲ | … |
003 | シナリオ1 | Android | ◆◆◆ | … |
004 | シナリオ1 | iPhone | ◆◆◆ | … |
005 | シナリオ2 | Windows | ◆◆◆ | … |
… | … | … | … | … |
この状態では、手順と期待結果、テスト結果を記載するテストケースのシートと、テストデータのシートを行ったり来たりしてテストデータを参照しなければいけません。自分がテスト実施者になった場合を想像すると、こんな感じ。
「えっと、シナリオ1の確認環境がMacだからテストデータはNo.2ね。ということは、MacでテストデータシートのNo.2にかかれたアカウントでログインしてシナリオ1を実施すればいいのね…」
「わかりずらっ!」
テストデータを一覧化することは、必要なテストデータが抜けもれなく準備できているかという確認のためには有効。でも、これはテスト設計とテスト実装を担当する側の都合で、このようなテストデータの指定ではテスト実施者の思考が阻害され、集中力が持続できません。
かといって、テストデータをテストケース内にすべて記載するのはテストケースの作成とメンテナンス工数が増え、作成時のミスも発生しやすい。そこで考えたのが、テストデータの指定を「シナリオNo._確認環境」で指定するという方法でした。
これなら、テストケース内に記載されたテストデータNo.をみずとも、自分がこれから実施するテストシナリオNo.とテスト環境からテストデータが探し出せて楽になるはず!と思ったのです。浅はかだった~、あの時の自分(遠い目)。そうです、実際にテストを開始すると現場から「複数のシートを行ったり来たりなんて、やりにくい!」との声が飛んできたのです(しゅん)。
VLOOKUP関数でテストデータとテストケースを結ぶ
現場の声を受け、テストケースの書かれたシートとテストデータシートをハイパーリンクで行き来できるようにする案を出しましたが、即却下(やっぱだめかー)。結局、テストケースのシート内にそのシナリオで使用するテストデータ情報を記載することで解決に至りました。複数のシートを参照すると、どうしても思考が阻害されてしまう。その根本原因を取り除くことがやっぱり大事でした(早く気づけ、自分)。
とはいえ、手入力でテストアカウント情報をシナリオごとに分かれたテストケースの全シートに入力するのでは、作成の手間とメンテナンス性の問題が残る。そこで、VLOOKUP関数を使ってテストデータシートからアカウント情報を引っ張ってくることにしました。
テストデータNo. | 使用するアカウント |
---|---|
シナリオ01_環境A | =VLLOKUP(B2,テストデータ一覧!$B$1:C$200,2,) |
シナリオ01_環境B | =VLLOKUP(B3,テストデータ一覧!$B$1:C$200,2,) |
テストデータ一覧シートの「$B$1:C$200」の範囲を参照し、B列にテストデータNo.、C列にアカウントが記載されている場合の例。
これで、テストデータを参照しに行くという“テスト実施者の思考と集中力を阻害するもの”をひとつつぶすことができました。その効果がたとえ10秒でも、思考が中断されなければテストの精度はその分向上するはず。集中することで、テスト実施者の能力を最大限に引き出せるはず!
そう信じて、テスト実施レベルでのソフトウェアテストの品質向上に設計者としてできることを、明日もまた考えるのであります。
テスト設計って、ほーんと奥が深いですね。さよならっ、さよならっ、さよならっ。
おわり