アドベントカレンダー ソフトウェアテスト1日目の @kimpaku です。
テストエンジニアとしてエンプラ系Webシステムの開発に携わっています。
今日は、ソフトウェアのテストでは欠かせない「スクリーンショット」のあれこれを書こうと思います。以下は、私個人の意見ですので、ご指摘、アドバイス等あればぜひお待ちしています^^
1.スクリーンショットとは何か?
別名「画面キャプチャ」とも。本記事においては、Web画面、スマホ、その他デバイスの画面の画像を取得したものを指す。
一般的には、エビデンスというとシステムのログであったり、DBのダンプ、出力ファイルも含まれると思いますが、画面があるシステムでは、エビデンス=スクリーンショットという場合もあるように思います。
スクリーンショット+エビデンスと言ったときによくあるのが、「Excelに画像をペタペタと貼り付けるのが辛かった」話かと思います。一部の開発ではまだまだ現役なのかもしれないのですが、個人的には、特に指定がない場合、リリースなどから3カ月、半年など一定期間経つまではZipなどにして残しておいて、あとは削除してしまえばよいのかなと思っています。
2.なぜスクリーンショットを取るのか
①正しく試験をしたという証拠
実装においてはソースコードそのものが成果物になるが、テストを実施したという証拠です。
##②実施した操作を記録
どのような操作をしたかという記録が残り見直すことが出来る。テストあるあるとして、開発者から「そういえば、先月の時点でxX画面のYYボタン押したときって、エラー出たっけ?」などという問い合わせを受けることがあります。1日に数百画面を見続けるテスターにとっては、いちいち覚えてられないので、エビデンスをまとめて置いたディレクトリを参照することが多いです。
##③納品物
業界によっては、お客さまから納品する物件の1つとして求められたりする。
3.いつスクリーンショットを取るのか
例えば、機能的な動作を確認するテストにおいては、を実施する3つのタイミングだと思っています
①確認したい機能を操作する直前
②機能が結果を出すまで
③機能が結果を出した直後
おそらく、典型的なエビデンスと呼ばれるものは③なのかなと思います。
あえて、①、②も取るのは、自分自身が試験通り操作したことを残すという意味で取っています。というのは、
テストをしたことがある方なら経験があると思うのですが、バグがあったときに開発者に報告すると「再現しないよ(´・ω・`)」って言われることってあると思うんですね。
そういう時に、まとめてスクリーンショットを渡して、漫画のように見てもらって再現手順を見てわかってもらえるようにしています。
①操作直前
4.どうやってスクリーンショットを取るのか?
Windowsの標準機能の「Prtsc」で取得して、ペイントに貼り付けるという古典的な方法もあるかとは思いますが、私が使うのは主に2つ(+1)です。
①Snipping Tool ... Windows標準のツール。画面を簡単操作で切り取ることが可能。標準搭載なのでソフトウェアインストールの制限のある環境などでも使える。
②SnapCrab, Winshotといったフリーソフトウェア ... インストールが必要であるものの、ファイル形式、連続撮影、ディレクトリ指定、ショートカットなど細かい指定ができるのが特徴。個人的には、いちいち記録用ディレクトリを決めたり、名前を付けたりしなくて良いため愛用している。
(番外) AGDRec ... 画面の動画を作成するツール(シェアウェア)。個人的には、取り忘れることも少なく好き。
5.その他、気を付けていることなど
##①不必要なものが映り込んでいないか
気づかないうちにメールのポップアップなどデスクトップ通知であったり、他のウィンドウ、はたまたデスクトップが映り込んでいて余計な情報が入っていることで、セキュリティ的なリスクになったりします。なので、特に納品を求められるものなどは事前にパラパラと眺めて、不要な映り込みがないかチェックしましょう。
##②必要なものが映っているか
これもまた、気づかないうちに対象物以外がアクティブになっていたり、画面が切れていて必要な部分が映っていなかったりします。ツールによっては複数ディスプレイに対応しておらず、あとから見てみたら、「何も映っていない画像ファイルばかりが・・・」となることがあるので、スクリーンショットを取り始めるタイミング、2,3枚取ったところで実際に取得できているか確認することをお勧めします。
##③マウスは入れる
個人的な好みだと思うのですが、マウスのアイコンを入れたほうが後からどう操作したのかが分かるので、入れるようにしています。
#最後に
ここまでつらつらとスクリーンショットについて書いてきましたが、企業や業界によって求められるものは違うように思います。筆者自身も面倒だなと思ってやってきたこともありますが、一番思うのは良いプロダクト/サービスを生み出すためにツールを使って、効率的に作業をして品質を高めたい。そのためには、問題があったこと、問題がなかったことをスクリーンショットで見せるのが手っとり早いなという経験と実感です。一参考になればと思います。
明日は、 @mhlyc さんですね。よろしくお願いします。