Download - Netconf
WPF と UWP 開発におけるテスト自動化
Dawn Huczek
自己紹介・石川達也・ ( 株 )Codeer 代表取締役・ Microsoft MVP
・ささいなことですが ( ブログ )
・ OSS Friendly Selenium 拡張 LambdicSql
Visual Studio and Development Technologies
http://ishikawa-tatsuya.hatenablog.com/
https://www.nuget.org/profiles/ishikawa-tatsuya
趣味はギターとライブラリ作成
なぜ、テスト自動化か?
なぜ、テスト自動化か?
・開発速度を上げる・リスクを下げる・トータルコストを下げる
みんなで幸せになろうよ。
なぜ、テスト自動化か?
実装中に何度も重たいアプリを起動して手動で確認してたんですけど、単体テストを利用するようになって、そういうケースでは実装速度が劇的に上がりましたね。
開発者 T さん 単体テストを使いこなそう
なぜ、テスト自動化か?実装と平行して、アプリケーションレベルのテストも作成していきました。実装を進める中で、当然以前の実装に影響を与えるような修正も入りますがその再確認のコストとストレスはかなり少なかったですね。開発速度はかなり上がりました。開発中なんで仕様変更もあり、そのメンテは大変なものもありましたが逆に影響範囲が分かってよかったですね。
マネージャー H さん こんな感じ1 2 3 4 5 6
なぜ、テスト自動化か?うちは、品質保証うるさくてリリースのたびに、 3 人月分のテストを実施する必要があったんですが、そのテストの大部分を自動化することができたので非常に楽になりリリース速度が上がりました。
新米リーダー S さん(大企業勤務) シンプルにテスト工数減りました
なぜ、テスト自動化か?
もう(自動化)Friendly なしでは、もうプロジェクトが回りません。
ベテランマネージャー K さん(大企業勤務)あざっすー
なぜ、テスト自動化か?
テスト工程だけじゃなく開発全体に効いてくる!
なぜ、テスト自動化か?・開発速度を上げる・リスクを下げる・開発のトータルコストを下げる
「自動化」を実現するには、プログラムの技術。プロジェクトごとにそれは違います。今日の話が参考になれば幸いです。
WPF、 UWPでのテスト自動化手法
・単体テスト・ VM を使ったシナリオテスト・アプリを外部から操作
WPF、 UWPでのテスト自動化手法
VisualStudio を使うとやりやすいよ
・単体テスト・ VM を使ったシナリオテスト・アプリを外部から操作
WPF、 UWPでのテスト自動化手法
いや、単体テスト重要ですよ。でも他で誰かが説明してるでしょ?
今日もはコレ
アプリを外部から操作
人類の夢!人間がやってる手動テストに一番近い。品質保証の一部を担える!
パワフル!
アプリを外部から操作
得体がしれない →単体テスト、 VM レベルのテストまでとは全く異質上手くいってるとこあんまり聞かない・・・ →昔からそれっぽいのあるけどね
だめじゃん・・・
アプリを外部から操作
人間の操作に近づけよう?
まあ、最終は強力な AI ないと無理ちゃうかな?近い将来できるかもしれないけど。そのころには、プログラムも書いてくれるでしょう。
アプリを外部から操作
単体(結合)テストに近づけるのだ!プログラムから操作可能。テスタビリティーに関して圧倒的な柔軟性。
それを可能にするのが・・・
OSS で無料公開されています。 大企業様から中小企業様まで続々採用中。・ Microsoft MVP Showcase で 2 位。・ IPA 「先進的な設計・検証技術の適用事例報告書 2015年度版」掲載
WPF アプリに関してデモ
https://github.com/Ishikawa-Tatsuya/WPFFriendlySampleDotNetConf2016
アプリとテストコードはこちらからダウンロードできます。
基本から WPF の UI 要素の特定方法まで!
まるで単体テストのような自由度でしょう?
・プロパティー、フィールド、メソッドの呼び出し・モックの挿入※別プロセスなのに操作が同期している。
プロジェクトに最適なテストが書ける!
Driver.dllScenario.dll
技術!
テスト内容
外部仕様から理解できるテスト。せっかくなんで、見通しよく。
レイヤを分けよう!
ドライバ実装時は、技術力をフルに使う。テストというより、アプリ操作のプログラム。WPF 用の便利ライブラリもあるのでそれもご利用ください。
定型処理は便利関数にまとめています。
・ WPFButtonBase・ WPFComboBox・ WPFListBox・ WPFListView・ WPFMenuBase・ WPFMenuItem
・ WPFProgressBar・ WPFRichTextBox・ WPFSelector・ WPFSlider・ WPFTabControl・ WPFTextBox
・ WPFTextBlock・ WPFToggleButton・ WPFTreeView・ WPFTreeViewItem・ WPFCalendar・ WPFDatePicker・ WPFDataGrid
6
Friendly
Friendly.Windows
Friendly.Windows.Grasp
Friendly.Windows.NativeStandardControls(Win32)
Friendly.FormsStandardControls(WinForms)
Friendly.WPFStandardControls(WPF)
Friendly.PinInterface
Infrastructure
Control drivers
Friendly.XamControls(WPF)
Friendly libraries
でも、重要なのはなんでもできる自由度!工夫できる自由度!テスタビリティは自分たちで高めるもの。
なんと!UWP 用も開発中!
デモ
Codeer はテスト自動化支援やってます。
宣伝
・ Friendly トレーニング・対象プロジェクトごとに適したプランのご提案・自動化環境構築のお手伝い・サポートサービス
弊社の自動化支援メニュー( Windows アプリ)
・アプリケーションドライバ受注作成・テストシナリオ受注作成
【コンサルティングメニュー】
【開発メニュー】
Windows アプリのテスト自動化に関してはどこにも負けません!http://www.codeer.co.jp/AutoTest/Consulting
・対象プロジェクトごとに適したプランのご提案・自動化環境構築のお手伝い・サポートサービス
弊社の自動化支援メニュー( Web )
・ PageObject受注作成・テストシナリオ受注作成
【コンサルティングメニュー】
【開発メニュー】
新規サービス。Windows アプリで培ったノウハウも生かしつつ、Selenium を使って VisualStudio と C# でテスト自動化を実現します。Asp.Net を使っているプロジェクトにお勧め!http://www.codeer.co.jp/AutoTest/Consulting
弊社自動化コンサルタント
・ Codeer 代表取締役・ Microsoft MVP・ 10年にわたりテスト自動化に取り組んでいる・ Friendly の作者・ C 、 C++ 、 C# が得意だが JavaScript 、 TypeScript もこなす
・ Microsoft MVP・長年 CI に取り組んでいる・ C 、 C++ 、 C# が得意だが JavaScript 、 TypeScript もこなす
http://www.codeer.co.jp/AutoTest/Consulting
まとめ。
・テスト自動化は、テストフェーズだけでなく 開発全体を効率化するものである。
・テスタビリティは自分たちで上げる。
・ Codeer のテスト自動化支援サービスを利用する。