netconf

30
WPF と UWP とととととと とととととと Dawn Huczek

Upload: tatsuya-ishikawa

Post on 21-Jan-2017

1.771 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Netconf

WPF と UWP 開発におけるテスト自動化

Dawn Huczek

Page 2: Netconf

自己紹介・石川達也・ ( 株 )Codeer 代表取締役・ Microsoft MVP

・ささいなことですが ( ブログ )

・ OSS Friendly Selenium 拡張 LambdicSql

Visual Studio and Development Technologies

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

https://www.nuget.org/profiles/ishikawa-tatsuya

趣味はギターとライブラリ作成

Page 3: Netconf

なぜ、テスト自動化か?

Page 4: Netconf

なぜ、テスト自動化か?

・開発速度を上げる・リスクを下げる・トータルコストを下げる

みんなで幸せになろうよ。

Page 5: Netconf

なぜ、テスト自動化か?

実装中に何度も重たいアプリを起動して手動で確認してたんですけど、単体テストを利用するようになって、そういうケースでは実装速度が劇的に上がりましたね。

開発者 T さん 単体テストを使いこなそう

Page 6: Netconf

なぜ、テスト自動化か?実装と平行して、アプリケーションレベルのテストも作成していきました。実装を進める中で、当然以前の実装に影響を与えるような修正も入りますがその再確認のコストとストレスはかなり少なかったですね。開発速度はかなり上がりました。開発中なんで仕様変更もあり、そのメンテは大変なものもありましたが逆に影響範囲が分かってよかったですね。

マネージャー H さん こんな感じ1 2 3 4 5 6

Page 7: Netconf

なぜ、テスト自動化か?うちは、品質保証うるさくてリリースのたびに、 3 人月分のテストを実施する必要があったんですが、そのテストの大部分を自動化することができたので非常に楽になりリリース速度が上がりました。

新米リーダー S さん(大企業勤務) シンプルにテスト工数減りました

tatsuya ishikawa
Page 8: Netconf

なぜ、テスト自動化か?

もう(自動化)Friendly なしでは、もうプロジェクトが回りません。

ベテランマネージャー K さん(大企業勤務)あざっすー

Page 9: Netconf

なぜ、テスト自動化か?

テスト工程だけじゃなく開発全体に効いてくる!

Page 10: Netconf

なぜ、テスト自動化か?・開発速度を上げる・リスクを下げる・開発のトータルコストを下げる

「自動化」を実現するには、プログラムの技術。プロジェクトごとにそれは違います。今日の話が参考になれば幸いです。

Page 11: Netconf

WPF、 UWPでのテスト自動化手法

Page 12: Netconf

・単体テスト・ VM を使ったシナリオテスト・アプリを外部から操作

WPF、 UWPでのテスト自動化手法

VisualStudio を使うとやりやすいよ

Page 13: Netconf

・単体テスト・ VM を使ったシナリオテスト・アプリを外部から操作

WPF、 UWPでのテスト自動化手法

いや、単体テスト重要ですよ。でも他で誰かが説明してるでしょ?

今日もはコレ

Page 14: Netconf

アプリを外部から操作

人類の夢!人間がやってる手動テストに一番近い。品質保証の一部を担える!

パワフル!

Page 15: Netconf

アプリを外部から操作

得体がしれない →単体テスト、 VM レベルのテストまでとは全く異質上手くいってるとこあんまり聞かない・・・ →昔からそれっぽいのあるけどね

だめじゃん・・・

Page 16: Netconf

アプリを外部から操作

人間の操作に近づけよう?

まあ、最終は強力な AI ないと無理ちゃうかな?近い将来できるかもしれないけど。そのころには、プログラムも書いてくれるでしょう。

Page 17: Netconf

アプリを外部から操作

単体(結合)テストに近づけるのだ!プログラムから操作可能。テスタビリティーに関して圧倒的な柔軟性。

それを可能にするのが・・・

Page 18: Netconf

   OSS で無料公開されています。  大企業様から中小企業様まで続々採用中。・ Microsoft MVP Showcase で 2 位。・ IPA 「先進的な設計・検証技術の適用事例報告書 2015年度版」掲載

Page 19: Netconf

WPF アプリに関してデモ

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

アプリとテストコードはこちらからダウンロードできます。

基本から WPF の UI 要素の特定方法まで!

Page 20: Netconf

まるで単体テストのような自由度でしょう?

・プロパティー、フィールド、メソッドの呼び出し・モックの挿入※別プロセスなのに操作が同期している。

プロジェクトに最適なテストが書ける!

Page 21: Netconf

Driver.dllScenario.dll

技術!

テスト内容

外部仕様から理解できるテスト。せっかくなんで、見通しよく。

レイヤを分けよう!

Page 22: Netconf

ドライバ実装時は、技術力をフルに使う。テストというより、アプリ操作のプログラム。WPF 用の便利ライブラリもあるのでそれもご利用ください。

定型処理は便利関数にまとめています。

・ WPFButtonBase・ WPFComboBox・ WPFListBox・ WPFListView・ WPFMenuBase・ WPFMenuItem

・ WPFProgressBar・ WPFRichTextBox・ WPFSelector・ WPFSlider・ WPFTabControl・ WPFTextBox

・ WPFTextBlock・ WPFToggleButton・ WPFTreeView・ WPFTreeViewItem・ WPFCalendar・ WPFDatePicker・ WPFDataGrid

Page 23: Netconf

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

Page 24: Netconf

でも、重要なのはなんでもできる自由度!工夫できる自由度!テスタビリティは自分たちで高めるもの。

Page 25: Netconf

なんと!UWP 用も開発中!

   デモ

Page 26: Netconf

Codeer はテスト自動化支援やってます。

宣伝

Page 27: Netconf

・ Friendly トレーニング・対象プロジェクトごとに適したプランのご提案・自動化環境構築のお手伝い・サポートサービス

弊社の自動化支援メニュー( Windows アプリ)

・アプリケーションドライバ受注作成・テストシナリオ受注作成

【コンサルティングメニュー】

【開発メニュー】

Windows アプリのテスト自動化に関してはどこにも負けません!http://www.codeer.co.jp/AutoTest/Consulting

Page 28: Netconf

・対象プロジェクトごとに適したプランのご提案・自動化環境構築のお手伝い・サポートサービス

弊社の自動化支援メニュー( Web )

・ PageObject受注作成・テストシナリオ受注作成

【コンサルティングメニュー】

【開発メニュー】

新規サービス。Windows アプリで培ったノウハウも生かしつつ、Selenium を使って VisualStudio と C# でテスト自動化を実現します。Asp.Net を使っているプロジェクトにお勧め!http://www.codeer.co.jp/AutoTest/Consulting

Page 29: Netconf

弊社自動化コンサルタント

・ 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

Page 30: Netconf

まとめ。

・テスト自動化は、テストフェーズだけでなく 開発全体を効率化するものである。

・テスタビリティは自分たちで上げる。

・ Codeer のテスト自動化支援サービスを利用する。