【基礎】テストエビデンスの取得について
長くて苦しい結合テストがやっと終わった。
テスト設計ではなく、久々に「テスター」として結合テストの最初から終わりまで一人でやり切った。
※わからないことは聞きまくりだったけども
しかし、長くて苦しかった訳はほとんど自分にあった。
とにかくテスト実施時の基本的なことをおろそかにしていたのだ...
何が大事だったか、戒めのために残しておこうと思う
テストを実施することよりも重要なことは、エビデンスをどう残すかということ
テストケースの消化、ということに集中しがちだが、結局納品物として「テストをしましたよ」という証明になるのはエビデンスになる。 「やりました」と口で言ってもエビデンスが残ってなければ話にならないからだ。 単体テストレベルであれば、打鍵のみでエビデンスを残さないケースもあるだろうが、結合テストではカッチリエビデンスに残すことに なるので、そのためにどうやってエビデンスを残すのか?というのは大事。
そして、エビデンスをどう残すかは決まったルールがあればそれに従うだけだが、 もし決まったルールがないのであれば、基本的には以下の4点を基本エビデンスとして残すこと。
- WEB系であれば、実行後の画面キャプチャ
- 実行前のデータ状態
- 実行後のデータ状態
- 実行後のログ
エビデンスとテストケースの紐付け
エビデンスを格納した後でテストケースとエビデンスと一致させるために、紐付けが必要になる。
基本的にはエビデンス自体にテストケースナンバーをつけた上で保存しておけば基本は大丈夫。
わかりやすいのは、テストケースの大項目単位でフォルダを作成して、階層的にフォルダ管理をすることで
エビデンスの紐付けはしやすくなる。
テストケースが「絶対」に正しいということはない
これはテストを実施中には実は判別が難しい。
テストケースが正しいか、誤っているかは仕様を理解していないと判別がつかないからだ。
単純にテストを消化するだけだと、テストケースの「期待値欄」とテスト結果が一致しないので、
「テスト結果=NG」としてしまいがち。
なので、テスト結果がNGとなった項目については、テスト実施直後くらいに先に報告をすべき。
※現場によってはRedmine等のテスト結果を管理するためのツールを利用しているかもしれない。
テスト実施前にどんなテスト結果が必要か準備と確認をしておくこと
テスト実施前に手順の確認、という意味合いもあるが、
- DBダンプを取る必要がある
- 画像のキャプチャを取る必要がある
- 実行ログを取得する必要がある
- クライアントツール等のキャプチャを取る必要がある 等々
これらのエビデンスを取るために「何が必要なのか」を実施前に把握しておくこと。
テスト実施のための環境
テストを実施する環境は様々あると思うが、
- WEBブラウザ(IEやChromeのブラウザ種別の他に、versionも考慮されるはず)
- ローカル環境(どこで実行するか、ログの出力はどこか)
- サーバ環境
- Dockerなどの仮想環境
- AndroidやiPhone等の各種スマホ
それぞれ「テストをするためにどんな環境構築が必要か?」と確認しておくこと。 最初から用意されている場合もあるが、大概何かしらの準備が必要になる。
遅れていても余裕を持って(余裕がなくなることがミスを生む)
テストってどうしてもスムーズに進まず、どこかで遅れが発生することがある。 そもそもどんなテストをするのか、漠然と理解していてもきちんと理解できていない状態で、 テストを実施していると順調に進んでいるのか遅れているのかもよくわからなくなる気がする。 順調に進んでいるように見えて、実は確認すべきテスト項目の半分くらいしか確認できていない、 なんてこともあったりする。終わったと思ってエビデンスを格納する段階で「エビデンスが足りてない...」なんてことも。
場合によってはバグが多くてテスト実施はしたものの不完全だったりするなんてこともある。 現状の理解をきちんとをすることで進捗状態を把握できる。 パニックにならないためにも、状況を理解できる余裕を持つようにしよう。
もし大事はエビデンスを誤って消去してしまったら...
- MVコマンドでファイル名を置換しようとしたつもりが、RMコマンドを打っていた...
- 誤ってファイルの上書きをしてしまい、元のファイルが消えてしまった
など何かしらの操作により大事なエビデンスが消えてしまった場合の対処方法
RMコマンドで消してしまった場合は、ファイルシステムがext3またはext4であること限定ですが、 以下の手段により復旧が可能なようですので試してみる価値はあります。
Linuxの恐怖体験「rmで間違ってファイル消してしまった!」そんな時はextundeleteでリカバリ | Unskilled?
大事なファイルを消してしまったけどextundeleteを使って危ないところで助かった話 - Qiita
Windowsの場合は、ゴミ箱に入っている可能性があるので、探してみよう。 そして、もし復旧ができなかった場合は素直に「すみません消してしまいました」と報告しよう。 何かしら対処を考えてくれるかもしれないし、単純にテストの取り直しを指示されるかもしれない。 おっかないのでRMコマンド打つ前はバックアップを取るのを忘れないようにしよう。
実施コマンド、投入したデータ、JSON、は念の為残しておこう
テスト実施時に叩いた、コマンドやデータ類、JSONなどの投入データは念の為手元に置いておこう。 だいたいテスト実施前に実行コマンド、データ、JSONなんかは実施前手順書的なドキュメントにあるだろうけど、 手順書に書いてある通りのコマンドなどで実施できない場合に書き換えもありうる。
日付やIDなどがユニークなキー値になっていて、すでに同じようなテストデータが投入されている場合に、 入力が弾かれてしまう場合があるからだ。
そもそも手順書の記載が誤っているかもしれない。
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/06/21
- メディア: 単行本
- この商品を含むブログを見る
【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践
- 作者: 石原一宏,田中英和,田中真史
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2012/01/28
- メディア: 単行本
- 購入: 2人 クリック: 12回
- この商品を含むブログ (9件) を見る
- 作者: 高橋寿一,湯本剛
- 出版社/メーカー: 技術評論社
- 発売日: 2006/05/10
- メディア: 単行本(ソフトカバー)
- 購入: 29人 クリック: 469回
- この商品を含むブログ (28件) を見る
JUnit実践入門 ── 体系的に学ぶユニットテストの技法 WEB+DB PRESS plus
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2018/11/14
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
- 作者: 松谷峰生
- 発売日: 2018/04/20
- メディア: Kindle版
- この商品を含むブログを見る