<~2015>Windows PowerShellを使って、再現可能なバグ票を書こう

テスト・エンジニア(組織によってはQAといったり、テスターと言ったり、その他の言葉が使われることもありますが、ここでは汎用的なテスト・エンジニアを使います)がテストをしているときに障害が見つかった場合、バグ票(障害票、障害レポートなどとも言われます)を起票します。

プログラマーにとって分かりやすい障害レポートについては下記の森崎先生の記事が詳しいです。

究極のバグレポート

わかりやすさには色々あるのですが、もっともプログラマーや開発者にとって工数が掛かるのが、障害をバグ票で書かれた手順に従って再現することです。

元となるテストケースがある場合でも、テストケースや再現手順が自然言語で書かれている場合、曖昧だったり、情報が欠落していたりで、結局テスト・エンジニアに横に来て再現してもらったり、テスト・エンジニアがリモートにいたりするすると延々と言葉のキャッチボールで数時間、数日を費やしてしまったりと、自然言語による再現手順の記述は大きく開発側に負担を掛けるものなのです。

そこで、恐らくあなたのWindows PCにもインストールされているであろうWindows PowerShellを活用しましょう。

Windows PowerShellは従来のWindowsコマンド・プロンプトとは比較にならないほど豊富な機能を持った、オブジェクト指向ベースの新世代シェルでWindowsのCLIはUNIXのシェル環境に比べて貧弱で使い物にならないと思っていたエンジニアにも魅力的なシェルになっています。

Windows PowerShellの大きな特徴は、従来のUNIXのシェルが文字列ベースであるのに対して、扱う単位がオブジェクト・ベースであると言うことです。そして、このオブジェクトにはPowerShell自身のオブジェクトだけでなく、.NET, COM, WMIなどWindowsで使用されるあらゆるプログラムのオブジェクトを扱うことができるようになっています。

ためしに、ShiftのトップページのCookieがどのようにセットされるかPowerShellで見てみましょう。

> Invoke-WebRequest http://www.shiftinc.jp/ | Select-Object -Expand BaseResponse | Select-Object -Expand Cookies
Comment :
CommentUri :
HttpOnly : False
Discard : False
Domain : www.shiftinc.jp
Expired : False
Expires : 0001/01/01 0:00:00
Name : PHPSESSID
Path : /
Port :
Secure : False
TimeStamp : 2013/06/10 16:41:21
Value : a5ur663qikfq0l82h3t3tak6o5
Version : 0

Comment :
CommentUri :
HttpOnly : False
Discard : False
Domain : .shiftinc.jp
Expired : False
Expires : 2013/06/10 17:31:22
Name : wassup
Path : /
Port :
Secure : False
TimeStamp : 2013/06/10 16:41:21
Value : NWM1ZDJkZjkyNmYwZGFlZDc3MmU4ODZhOTY4NmJmMjI6OjEzNzA4NTI3ODI6Ojo6MTE4LjIxLjExNS4yMzI6OmkxMTgtMjEtMTE1LTIzMi
5zMzAuYTA0OC5hcC5wbGFsYS5vci5qcDo6
Version : 0

Inoke-WebRequest コマンドレット (PowerShellのコマンドは「コマンド・レット」と呼ばれます)にURLを指定すると、

Microsoft.PowerShell.Commands.HtmlWebResponseObject

というWebページの情報を含むオブジェクトが戻り値として返ってくるので、Cookieを辿るために、Select-Object コマンドレットを使って、順にオブジェクトの階層を展開していきます。

Cookieヲタドルぐらいならもちろん別のツールを使って、手順と結果を貼り付けることはできます。

でも、他のプロパティも同時に知りたい、報告したいとなった途端に手動のステップではコミュニケーション・ミスが大きなものになってしまいます。同じような手順で、キャラクタセットを取得してみましょう。

> Invoke-WebRequest http://www.shiftinc.jp/ | Select-Object -Expand BaseResponse | Select-Object -Expand CharacterSet
UTF-8

1行で間違いなく再現可能なコマンドになっていますね。

このようにテストツールや解析ツールが使えないような環境でもWindows PowerShellならOS標準の機能で様々などの環境でも再現可能なコマンドを記述することができます。複雑な再現手順を自然言語で書いていて言葉のキャッチボールになってしまっているな、効率悪いな、なんとかしたいなーと思ったテスト・エンジニアはこれを機にWindows PowerShellのスキルを身についてぜひ、分かりやすく、効率のよいバグ票の記述や障害解析に役立てましょう。忙しいプログラマーや開発者に感謝されるテスト・エンジニアにスキルアップできると思います。

最期に、テスト・エンジニアや開発者も向けのWindows PowerShellの書籍を紹介します。洋書なのですが、非常にコンパクトにまとまっており、また今回のようなバグ票や障害解析での応用などテスト・エンジニアや開発者が活用できるノウハウが満載です。

Windows Powershell for Developers
http://www.amazon.co.jp/Windows-Powershell-Developers-Douglas-Finke/dp/1449322700/ref=tmm_pap_title_0 (ペイパーバッグ)
http://www.amazon.co.jp/Windows-PowerShell-for-Developers-ebook/dp/B008JFVXUO/ref=kinw_dp_ke (Kindle版)

日本語の書籍もあるのですが、Windows PowerShellのコマンドレットは運用管理向けのものが多いため、運用管理向けの書籍となってしまっている場合が多く、今回のようなバグ票での活用などで利用するには情報が不足しているところがあります。ですので、英語でも怖がらず是非上記の書籍でWindows PowerShellを学んでみましょう。

お問合せはお気軽に
https://service.shiftinc.jp/contact/

SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/

SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/

SHIFTの導入事例
https://service.shiftinc.jp/case/

お役立ち資料はこちら
https://service.shiftinc.jp/resources/

SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/