SlideShare uma empresa Scribd logo
1 de 37
.NetCore3でテスト自動化+α
自己紹介
・石川達也
・(株)Codeer 代表取締役
・Microsoft MVP
・ささいなことですが(ブログ)
・OSS
Friendly
Selenium拡張
LambdicSql
Visual Studio and Development Technologies
http://ishikawa-tatsuya.hatenablog.com/
https://github.com/Codeer-Software
Desktop → Desktop
.NetCore3へ移行
// おすすめ手法
仕様化テスト
↑これを仕様とする
// 仕様化
入力 出力
(.NetCoreへの移行)
実装!
↑前と同じ
// 移行完了!再テスト
入力 出力
// 自動化
↑Assertを書いておく
もしくはログファイル
に落としておいて比較
w.Name.EmulateChangeText(“abc”);
w.Age.EmulateChangeValue(32);
w.Entry.EmulateClick();
w.Result.Text.Is(“result”);
ちなみに昔
WinForms + ネイティブ
のアプリで
VC++のコンパイラのバージョンを変えるときに
この手法が大いに役に立ちました。
その時は、今後のことも考えて仕様面を中心に
グレイボックス的にテスト設計をしました。
システムテストで大きく
振る舞いレベルのテストを書くと
多くのロジックが動いてくれるので
こんな感じの変更では
経験的にはコスパが良いです。
入力 出力
VM
M
// どれくらい作ればいいの?
必要なだけ。
悲観的に考えるなら、System.Object
から実装が変わってるから
どこがバグってもおかしくない。
https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer
MSを信じるならば、
これが通れば問題ないと考えれる
・カバレッジで判断
(システムテストでは難しい・・・。無理ではない)
・内部で使っているAPIで分類して、
重要な分類はとおるようにする
・画面の崩れも気になる場合は、
一応スクショもとることにして
最初だけは人が目で確認。
あくまでレイアウトの崩れのみチェック
・仕様面/リスク面から重要なポイントを抑える。
(少なくとも正常系ワンパスくらいは作っておきたい)
// どれくらい作ればいいの?
Windowsアプリを意のままに操作するためのライブラリ
弊社製品FriendlyはMicrosoft MVP Showcaseで2位になりました。
http://blogs.msdn.com/b/mvpawardprogram/archive/2014/11/04/mvp-showcase-winners.aspx
IPAの「先進的な設計・検証技術の適用事例報告書 2015年度版」に掲載。
http://www.ipa.go.jp/sec/reports/20151118.html
.NetCore対応!
Friendlyのデモ
おまけ。Friendlyの.NetCore対応話
CreateRemoteThread
でWin32のDLLをイン
ジェクション
HostAPIで
DotNetのDLL読み込み
要求を受け付けるサーバー起動
API実行要求を投げる
これがダメだと思ってた
・HostAPI
.Framework専用だからCoreには使えない
・DotNetのDLL読み込み
CoreからFrameworkのDLLは読み込めない
Standard化したものを作らないと・・・
いけた!
・HostAPI
Core用のHostAPIがあった!
(誰得のAPI?)
・DotNetのDLL読み込み
CoreからFrameworkのDLLは読み込めた!
???だったらStandardいらんじゃん・・・
Frameworkで
作った.dll
Frameworkのdll群Coreのdll群
Frmework.exeCore.exe
Exeの種類で参照先を変更している
dotnet publish
dotnet publish -r win-x64 /p:PublishTrimmed=true
dotnet publish
dotnet publish -r win-x64
dotnet/shared以下にあるdll以外の実行に必要なファイルが集められる
(ランタイムがインストールされてないと実行できない)
dotnet publish -r win-x64 /p:PublishSingleFile=true
win-x64環境で実行に必要なアセンブリの必要最小限が集められる
(ランタイムがインストールなくても動く)
※両方もちろん可能
win-x64環境で実行に必要なアセンブリが全部集められる
(ランタイムがインストールなくても動く)
/p:PublishTrimmed=true
え?
え?
/p:PublishTrimmed=true
/p:PublishTrimmed=true
やるなら自動テストは必須・・・
/p:PublishTrimmed=true
そこまでは頑張ってほしくなかったな・・・
デモ
それぞれをFriendlyで操作
dotnet publish のその他の使い道
参照先のdllがない!
.netcore, standardの
dllのプロジェクトは
地味な変更点として
Webアプリ、コンソールアプリは
2xまではdllだったけど
3からはexeになってる。
ビルドするとbinフォルダに参照先のdllも集められる
dotnet publish を dllのプロジェクトに対して使う
できた!これでこのフォルダのdllを読み込めば色々可能。
Web
// Selenium
作りたいのは、
プロダクトと自動テストの
協調処理
テストチーム
開発チーム
価値のある自動テスト
// どうしても量が必要
質 量×
製品紹介
Test Assistant Pro
Code と Tool のシナジー効果!
あなたのプロジェクトに Just Fit!
Driverの作成 + シナリオの作成の大部分をサポートします。
実装補助ツールという位置づけなので、
コードがわからない人だけで使うことはできません。
.NetCore対応!
初期学習
難易度
カスタマイズ プロジェクト
ごとの調整
作成速度 ソース
可読性
メンテ効率 動作確実性 実行速度 テスト実行時
ライセンス
某社ツール 低 △ 不要 △ △ △ △ △ 必要
TesAssistantPro 高※1 ◎ 必要 ◎ ◎ ◎ ◎ ◎ 不要
“価値のある自動テスト”を作成/運用することが可能な
世界でも稀有なツールです!
※1 Friendlyの学習コストを入れています。
// アーキテクチャ
// Codeer 技術者大募集!
CodeにこだわりCodeで語る。

Mais conteúdo relacionado

Mais procurados

テスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみたテスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみた
Kazuaki Fujikura
 

Mais procurados (20)

脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
 
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
 
EclipseでのデバッグTips
EclipseでのデバッグTipsEclipseでのデバッグTips
EclipseでのデバッグTips
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
SubversionServer設置
SubversionServer設置SubversionServer設置
SubversionServer設置
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
 
第11回rest勉強会 リファクタリング(クライアント編)
第11回rest勉強会 リファクタリング(クライアント編)第11回rest勉強会 リファクタリング(クライアント編)
第11回rest勉強会 リファクタリング(クライアント編)
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
第10回rest勉強会 リファクタリング(サーバ編)編
第10回rest勉強会 リファクタリング(サーバ編)編第10回rest勉強会 リファクタリング(サーバ編)編
第10回rest勉強会 リファクタリング(サーバ編)編
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
 
Microsoft azureとdockerとansibleと
Microsoft azureとdockerとansibleとMicrosoft azureとdockerとansibleと
Microsoft azureとdockerとansibleと
 
テスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみたテスト環境まるごとAwsにのっけてみた
テスト環境まるごとAwsにのっけてみた
 
Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例Jenkinsを利用したCI、弊社導入事例
Jenkinsを利用したCI、弊社導入事例
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作ったRuby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
 
PHPデプロイツールの世界
PHPデプロイツールの世界PHPデプロイツールの世界
PHPデプロイツールの世界
 
Jenkins + awsで並列テスト
Jenkins + awsで並列テストJenkins + awsで並列テスト
Jenkins + awsで並列テスト
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 

Semelhante a Test to net core 3

Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 

Semelhante a Test to net core 3 (20)

Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
ポンコツエンジニアのAZ-400受験期
ポンコツエンジニアのAZ-400受験期ポンコツエンジニアのAZ-400受験期
ポンコツエンジニアのAZ-400受験期
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
テスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめテスト駆動で行うネットワーク自動化のすすめ
テスト駆動で行うネットワーク自動化のすすめ
 
ポンコツエンジニアのAZ-400受験期 (後編)
ポンコツエンジニアのAZ-400受験期 (後編)ポンコツエンジニアのAZ-400受験期 (後編)
ポンコツエンジニアのAZ-400受験期 (後編)
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソAsp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
 
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版ありますElixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築
 
ASP.NET MVC Part 2
ASP.NET MVC Part 2ASP.NET MVC Part 2
ASP.NET MVC Part 2
 

Mais de Tatsuya Ishikawa

価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly
Tatsuya Ishikawa
 
Ride on azure~アイデアソン編~
Ride on azure~アイデアソン編~Ride on azure~アイデアソン編~
Ride on azure~アイデアソン編~
Tatsuya Ishikawa
 
私とC++ in 例外安全day
私とC++ in 例外安全day私とC++ in 例外安全day
私とC++ in 例外安全day
Tatsuya Ishikawa
 
他言語との連携(ネイティブから動的言語まで)
他言語との連携(ネイティブから動的言語まで)他言語との連携(ネイティブから動的言語まで)
他言語との連携(ネイティブから動的言語まで)
Tatsuya Ishikawa
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
Tatsuya Ishikawa
 

Mais de Tatsuya Ishikawa (20)

burikaigi2024.pptx
burikaigi2024.pptxburikaigi2024.pptx
burikaigi2024.pptx
 
【オンライン】.NET 6 移行祭り! C# Tokyo イベント
【オンライン】.NET 6 移行祭り! C# Tokyo イベント【オンライン】.NET 6 移行祭り! C# Tokyo イベント
【オンライン】.NET 6 移行祭り! C# Tokyo イベント
 
burikaigi2023
burikaigi2023burikaigi2023
burikaigi2023
 
Developer summit codeer
Developer summit codeerDeveloper summit codeer
Developer summit codeer
 
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術
Infragistics Web Day 2017 - 継続的な開発を支える テスト自動化技術
 
Stack2017 自動化困難な状況での活動方法
Stack2017 自動化困難な状況での活動方法Stack2017 自動化困難な状況での活動方法
Stack2017 自動化困難な状況での活動方法
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
 
Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張Dot netconf2017 - VS拡張
Dot netconf2017 - VS拡張
 
.Netconf
.Netconf.Netconf
.Netconf
 
価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly価値あるシステムテスト自動化の実現By friendly
価値あるシステムテスト自動化の実現By friendly
 
Stac2014 石川
Stac2014 石川Stac2014 石川
Stac2014 石川
 
Bindingからframework elementを見つける
Bindingからframework elementを見つけるBindingからframework elementを見つける
Bindingからframework elementを見つける
 
boost - std - C#
boost - std - C#boost - std - C#
boost - std - C#
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
Friendlyで始めるwindowsアプリシステムテスト自動化+内部使用技術解説
 
Windowsアプリテスト自動化 [Friendly+delphi]
Windowsアプリテスト自動化 [Friendly+delphi]Windowsアプリテスト自動化 [Friendly+delphi]
Windowsアプリテスト自動化 [Friendly+delphi]
 
Ride on azure~アイデアソン編~
Ride on azure~アイデアソン編~Ride on azure~アイデアソン編~
Ride on azure~アイデアソン編~
 
私とC++ in 例外安全day
私とC++ in 例外安全day私とC++ in 例外安全day
私とC++ in 例外安全day
 
他言語との連携(ネイティブから動的言語まで)
他言語との連携(ネイティブから動的言語まで)他言語との連携(ネイティブから動的言語まで)
他言語との連携(ネイティブから動的言語まで)
 
Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化Friendlyを使ったwindowsアプリテスト自動化
Friendlyを使ったwindowsアプリテスト自動化
 

Test to net core 3