kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

REST APIでTest Itemを作る方法とサンプル

Excelでテストケースを管理したい、だからテストケース管理ツールの類はやだなぁ、という話は割とどこでもあると思います。ただ、莫大なExcelで結果に署名するだけの簡単なお仕事といっても、「ねぇ母さんあの時やったテスト結果のExcelファイルはどこに行ったんでしょう」ということで探すのも大変です。

マネージメント層はExcelでその時だけ結果が見れば大体満足、しかし品質として管理するなら、ちゃんと履歴として残したい、要件と関連付けて管理するほうがいいのですが、なかなかやらない。Azure DevOpsの拡張機能の中にはテストをオフラインでやれるようにExportするものもありますが、逆はない。

marketplace.visualstudio.com

そんなわけで、こんなツールを作ってみました。

github.com

"Sync"とついていますが、一方通行です、すいません。Azure Functionsにデプロイすると動いてない(3.1にしたらこのありさま…)とかありますが、ちょっと調べます。仕組みとしては、SharePointに所定の形式のExcelファイルをアップロードすると、AutomateでAzure Functionsを呼び出して、REST APIでAzure DevOpsに登録します。テストケースを書くのは慣れたExcelで、テスト結果はAzure DevOpsで管理できてハッピーです(たぶん)。

一番悩んだのがTest Stepを登録するところでした。

テスト手順と期待値を登録するとき、html形式で登録することはわかっていたんですが、どうやるのかといえばJSONでこんな形式で登録するということでした。このあたり

{
  "Value" = "steps", 
  "Operation" = "add", 
  "Path" = "/fields/Microsoft.VSTS.TCM.Steps"
}

learn.microsoft.com

Work Itemの作成は普通にわかりやすいREST APIなのですが、Pathの記述方法がわからなかった。試行錯誤して調べたら、同じくREST APIのWork Item Types Fieldに一覧があって、Pathの指定にはこの値を書けばいいということがわかって一気に進みました。Work Item上にあるフィールドは全部このFieldで定義されているPath形式で指定することになります。

あと、Work Itemを作るAPIは複数のFieldを一度に登録するほうがうまく動くようで、Title(/fields/System.Title)と一緒に指定しています。というか、Titleが必須フィールドなので、最初の呼び出しではTitleが含まれていないと失敗します。

テストの再現手順と期待値はHTMLです(このあたり)。注意点がいくつかあります。

  • HTMLの記号はエスケープする( < > "など)
  • (対応していないけど)改行があった場合、<br/>などのタグに置き換える。
  • (対応していないけど)色も同様

普通に一行で済むような手順と期待値であれば前述の関数で変換できるはずです。

サンプル扱いですが、もしよかったら動かしてみてください。Functionsでうまく動いていない問題は急ぎでなんとか…。