チームで成功させるシステムテスト⾃動化 by friendly · microsoft mvp for .net...

35
チームで成功させるシステムテスト⾃動化 by Friendly 株式会社Codeer 石川達也 http://www.codeer.co.jp/

Upload: others

Post on 22-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

チームで成功させるシステムテスト⾃動化by Friendly

株式会社Codeer石川達也http://www.codeer.co.jp/

Page 2: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

⽯川達也

株式会社Codeer代表取締役

Microsoft MVP for .Net

Windowsアプリテスト⾃動化歴10年

Windowsアプリ操作⽤ライブラリFriendlyの開発者

⾃⼰紹介

http://www.codeer.co.jp/

http://ishikawa-tatsuya.hatenablog.com/

Page 3: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

Friendly紹介

じわじわ来てます。⼀部上場企業様でも続々と採⽤中

先進的な設計・検証技術の適⽤事例報告書2014年度版に事例掲載予定

Page 4: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

アメリカでも⼤好評でした!

Friendly紹介

Microsoft MVP Showcase 2位!http://blogs.msdn.com/b/mvpawardprogram/archive/2014/11/04/mvp-showcase-winners.aspx

Page 5: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

5

アジェンダ

・テスト⾃動化とは

・テスト⾃動化に必要な能⼒

・テスト⾃動化プログラムのレイヤ化

・アプリケーションドライバの実装

Page 6: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

6

テスト⾃動化とは

About test autom ation.

Page 7: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

7

テスト⾃動化

膨⼤なコストが必要とされるテスト作業の

「何割か」

を⾃動化することです。

全てを置き換えるものではない。非現実的な期待をしない。

About test autom ation.

Page 8: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

⾃動化しておけば、テストは繰り返し実⾏可能です。

【品質状況の把握】⽇々、指定のテストケースに関しては、リスクが排除されていることが、分かります。つまり、品質の状況を把握できるのです。これは⾃動化した最⼤のメリットです。

デグレードのリスク回避

About test autom ation.

Page 9: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

能1実

能2実

能3実

能4実

能5実

能6実

能7実

能8実

一回当たりテスト件数

開発期間→

自動 手動

テスト⾃動化のメリット

⼿動は、⼀度やったら終わりですが、⾃動化しておけば、それは開発期間中ずっと実⾏されデグレードのリスクを回避することができます。テストの負荷分散にもつながります。

手動の場合、最後に頑張って再度一通り見直す作業が入る

テストの蓄積と、テスト実⾏作業の負荷分散

About test autom ation.

Page 10: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

10

・リリース後に重要な機能で不具合が発覚!その機能は網羅的に⾃動テストを付けていたが、漏れていたケースがあった。

・漏れていた観点を元にテスト付け⾜し。

・修正後テスト実⾏→既存の⾃動テストでNG発⾒

→作ってて良かった!

・再修正→全てのケースをクリア→無事リリース!

つい先⽇も、こんなことがありました。

About test autom ation.

Page 11: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

そもそも網羅性の⾼いテストが⾃動化されている機能だった。

11

これが可能だったのは

1 6 11 16 21 26 31 36蓄積され続けたテストケースがあった。

安定動作する⾃動テストだった。

About test autom ation.

テストケース(網羅性)が把握できていて漏れが⾒つかった場合、すぐに改善出来た。

Page 12: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

12

テスト⾃動化に必要な能⼒

Ability for test autom ation.

Page 13: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

13

システムテスト⾃動化には、⼆つの能⼒が必要です。

テスト設計能⼒

テストシナリオ作成能⼒

Ability for test autom ation.

Page 14: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

テスト設計能⼒

・基本は⼿動の場合と同じ

・開発側からの視点を追加し、グレイボックス的なメニューもあればより効率的

なんにせよ、既にできているはずですよね?

Ability for test autom ation.

Page 15: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

15

テストシナリオ作成能⼒

ココがボトルネックになっている!

Ability for test autom ation.

Page 16: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

16

全部テストチームでやる?

・キャプチャリプレイ使う?・スクリプトの整形は?・トラブル発⽣したら?・開発側が内部的に何か変えたときのメンテは?

無理じゃない?

Ability for test autom ation.

テストシナリオ作成能⼒

Page 17: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

17

全部開発チームでやる?

・調べたらできるかもしれんけど・・・・時間ない・量は作れない・とは⾔え、やっぱやり⽅わからん

なしではないけど、もっといい手段ない?

Ability for test autom ation.

テストシナリオ作成能⼒

Page 18: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

18

プロジェクトで⼀丸となって取り組めば何とかなるのでは?

Ability for test autom ation.

Page 19: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

19

テスト⾃動化プログラムをレイヤ化する

Separate the test autom ation program to layer.

Page 20: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

20

モヤモヤしたテストシナリオ

複雑な操作、内部仕様(コントロールのIDなど)、テスト仕様

が混沌と書かれている

メンテも量産ももちろん分業も無理

Separate the test autom ation program to layer.

Page 21: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

21

アプリケーションドライバを使ってレイヤ化したテストシナリオ

テストシナリオ.dll

テストプロセス

① ②アプリケーションドライバ.dll

操作とテストが分離されている

Separate the test autom ation program to layer.

Page 22: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

・・・・・・

アプリケーションドライバ

アプリケーションをテストシナリオから操作するためのインターフェイス操作に関する複雑さを隠蔽する。開発チームが担当。

アプリケーションドライバ テストシナリオ

Separate the test autom ation program to layer.

Page 23: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

・・・・・・

テストシナリオ

外部仕様のみで記述される。基礎的なプログラムの知識のみで記述可能。テストシナリオはそれなりのボリュームになる。主にテストチームが担当。

アプリケーションドライバ テストシナリオ

Separate the test autom ation program to layer.

Page 24: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

ボリュームイメージ

・・・・・・・・・・・・

アプリケーションドライバ

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・・・・

・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

・・・・・・・・・・・・

シナリオ

アプリケーションドライバは画⾯、機能の実装時に付け⾜し実装していく

プロダクトに特化した⾼品質なインターフェイスを使うことでシナリオを容易に実装

Separate the test autom ation program to layer.

Page 25: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

25

デモ

https://github.com/Ishikawa-Tatsuya/HandsOn14

アプリケーションドライバを使って、テストチームがテストシナリオを書く

Separate the test autom ation program to layer.

Page 26: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

26

アプリケーションドライバの実装

Im plem ents of AppDriver.

Page 27: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

27

とは⾔え、別プロセス操作。

どうすれば?

しかも低コストで作成しなければならない。

Im plem ents of AppDriver.

Page 28: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

⼀般的には

キーマウスエミュレート→不安定、プログラムから使うには指定が困難。

Im plem ents of AppDriver.

テストスクリプト

---------

⼊⼒ストリーム

UIオートメーション→難易度が⾼い。⾃由度が低い。

テストスクリプト

------

Library

Page 29: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

6Im plem ents of AppDriver.

内部APIは、ここでは通常の実装時に使⽤、作成するAPIを指します。

⾮常に強⼒です。

確実に動作します。

【提案】 内部APIを使いましょう!

プロダクト実装時の知識を活かせるのです!

Page 30: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

30

Windowsアプリで内部API操作はこれ!

Is a magical library!It break through the walls of processes.

Win32、WinForms、WPF対象プロセスに仕込みなしで内部APIを呼べる魔法のライブラリ!

Im plem ents of AppDriver.

Page 31: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

31

デモ

Im plem ents of AppDriver.

Page 32: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

6

便利なライブラリも多数提供実装コストをさらに軽減

Friendly

Friendly.Windows

Friendly.Windows.Grasp

Friendly.Windows.NativeStandardControls(Win32)

Friendly.FormsStandardControls(WinForms)

Friendly.WPFStandardControls(WPF)

Friendly.PinInterface

Friendlyはアプリケーションドライバを実装するのに使います。

Page 33: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

システムテストは団体戦です。→あと⻑期戦です。

Page 34: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

34

テスト⾃動化⽀援業務承らせていただきます。

・コンサルティング・トレーニング・テスト⾃動化受託・プロダクト開発+テスト⾃動化受託

ご好評いただいております。まずは、御社の開発状況を伺わせてください。

Page 35: チームで成功させるシステムテスト⾃動化 by Friendly · Microsoft MVP for .Net Windowsアプリテスト⾃動化歴10年 ... 11/04/mvp-showcase-winners.aspx. 5

35

ご清聴ありがとうございました!

【Picture】Dawn Huczek