メディアフォース 開発者ブログ

株式会社メディアフォースの開発者による非公式ブログです。

テスティングフレームワークを試す

おはようございます。 メディアフォースの齊藤です。

毎年恒例で16日はアプレッソさんのAdvent Calendarに参加させていただいております。 qiita.com

ということで今回は DataSpider Servista 4.1 で追加された、地味に使えると評判のテスティングフレームワークを試してみます。

テスティングフレームワークとは

アプレッソのサイトで公開されているヘルプによると テスティングフレームワーク

テスティングフレームワークとは、「DataSpider Servistaで開発したスクリプトのテストをどのように記述して、実行し、検証するか」という仕組みを支援する一連の機能群と、それらを効果的に使用するためのガイドラインの総称です。

とあります。

単独の機能を表しているわけではなく、その言葉とおりにフレームワークとして定義されているようです。

機能面では、

  • テスト用スクリプトを作成できる
  • テスト用スクリプトを一括実行できる
  • テストに利用できる検証用アイコンが用意されている
  • テスト後にテストレポーティングが自動生成される

とのことで、JavaJUnitのようなイメージになりそうです。

当社のようなSIerでは、作成したプロジェクトを納品するにあたってテスト仕様書やテスト結果報告書は必ず作るので自動生成されてくれるのは中々良さそうです。

早速試していきます。

とりあえず適当なCSVを読んでフィルタリング、フォーマッティングしてExcelで出力する処理でも作ってみましょう。 f:id:mf_sol_eai:20171216151639p:plain

ん?

f:id:mf_sol_eai:20171216152003p:plain

早くも出てきたぞ・・・ このタイミングで作れるということは、テストを先に作るテストファーストでもいけそうですね。 せっかく気がついたのでテストファーストで試してみましょう。

テストファーストの場合、 あるべき仕様 としてテストを定義します。

今回は次のようなCSVファイルから山形県出身だけ抽出して連番を振り直したファイルを作成する処理を想定します。


連番,氏名,氏名(カタカナ),性別,電話番号,メールアドレス,生年月日,出身地 1,丹羽羽菜,タンバハナ,女,0238039536,atamba@xwseri.ol,1979/04/29,岐阜県 2,三好千夏,ミヨシチナツ,女,0892703515,umiyoshi@mwkhbhyh.cv,1988/01/19,山形県 3,山川美羽,ヤマカワミウ,女,05906205,miu_yamakawa@nkbzvbvk.pak,1965/03/31,石川県 4,三村利治,ミムラトシハル,男,0991816393,toshiharu08482@lbomk.lw,1978/05/06,愛知県 5,陳一也,チンカズヤ,男,023924877,kazuya212@hwkgv.ih,1971/11/10,沖縄県 6,勝又文乃,カツマタアヤノ,女,0184439746,ayano85398@memr.idf,1964/09/15,山形県 7,青野柚衣,アオノユイ,女,0539608685,yui702@ldeku.mykzg.ado,1977/01/17,山形県 8,羽鳥修一,ハトリシュウイチ,男,0760818209,shuuichi_hatori@anxgfcs.yfb,1962/06/13,栃木県 9,大嶋優花,オオシマユカ,女,0930535292,yuka83358@wmcxlnuuh.nt,1962/11/25,茨城県

10,関口友吉,セキグチトモヨシ,男,0556578828,isekiguchi@typslyh.cl,1967/12/06,山形県

処理の期待値としては以下のようになります。


連番,氏名,氏名(カタカナ),性別,電話番号,メールアドレス,生年月日,出身地 1,三好千夏,ミヨシチナツ,女,0892703515,umiyoshi@mwkhbhyh.cv,1988/01/19,山形県 2,勝又文乃,カツマタアヤノ,女,0184439746,ayano85398@memr.idf,1964/09/15,山形県 3,青野柚衣,アオノユイ,女,0539608685,yui702@ldeku.mykzg.ado,1977/01/17,山形県

4,関口友吉,セキグチトモヨシ,男,0556578828,isekiguchi@typslyh.cl,1967/12/06,山形県

とりあえずメインのスクリプトを作ります。

f:id:mf_sol_eai:20171216160007p:plain

f:id:mf_sol_eai:20171216160550p:plain

テストから作るのでスクリプトの中身はカラのままです。

テストスクリプトを開いて、テストしたスクリプトをドラッグ・アンド・ドロップします。 f:id:mf_sol_eai:20171216160802p:plain

続いて、スクリプトから出力されたファイルを読みます。

f:id:mf_sol_eai:20171216162839p:plain

f:id:mf_sol_eai:20171216164351p:plain

続いてデータの検証をするアイコンを配置します。

f:id:mf_sol_eai:20171216164523p:plain

「テーブルモデル比較」を使います。

f:id:mf_sol_eai:20171216165205p:plain

f:id:mf_sol_eai:20171216165308p:plain

フローをつなげてテストスクリプトは完成

f:id:mf_sol_eai:20171216170238p:plain

テストスクリプトができましたので、スクリプトを作っていきます。

f:id:mf_sol_eai:20171216171224p:plain f:id:mf_sol_eai:20171216170653p:plain

さて、テストスクリプトを実行してみましょう

f:id:mf_sol_eai:20171216171333p:plain

エラーになってしまいました。 「連番」の1行目が期待値と違うようです。

出力されたデータをみるとなるほど、連番の振り直しをしていませんでした。

f:id:mf_sol_eai:20171216171503p:plain

ということで、「出力ノード番号」を使って連番を振り直します。

f:id:mf_sol_eai:20171216171650p:plain

改めて実行しましょう。

f:id:mf_sol_eai:20171216171817p:plain

成功です!

テストを先に作るテストファーストにも向いていて開発効率があがりそうですね。 今回は簡単なテストでしたが、次回は(あるのか!?)もう少し複雑なテストを作ってレポートまで出力してみたいと思います。