Friendly ハンズオン8 Friendly.Windows.Grasp - .Netアプリ操作でよく使う機能 -
前回でFriendly.Window.Graspがどのようなものか概略を説明しました。まだちょっとボヤっとしてますよねw?ここでは、実際に使ってみてもう少し理解を深めてもらおうと思います。ハンズオンの練習用プロジェクト練習用のプロジェクトはこちらからダウンロードお願いします。Ishikawa-Tatsuya/HandsOn8 ·...
View ArticleFriendlyハンズオン9 Win32用上位ライブラリ
今回はWin32の話です。プロダクトによっては、過去の資産を持っていて、一部ネイティブで作っているものもありますよね。そうでなくて完全な.Netのアプリでも、実はネイティブの画面は出てくるのです。と言うことで、ネイティブの画面も操作できるようにしておく必要がありますね。FriendlyはネイティブのDLL公開関数も実行させることができます。ネイティブDLL公開関数の呼び出し - 株式会社Codeer...
View ArticleFriendly ハンズオン 10 .Netアプリで出てくるネイティブウィンドウ対応
前回はWin32用の上位ライブラリのNativeStandardControlsを使う練習でした。今回は、さらに実践的に.Netで出てくるWin32のWindowに対応してみます。先にネタをバラしておきます。操作方法は書きますが、最終的にはメッセージボックス以外は操作しない方がいいです。???じゃあどうするかって?それは、最後まで読んでみてくださいw.Netなのに、出てくるWin32のウィンドウって...
View ArticleFriendly ハンズオン 11 WPF用上位ライブラリ
今回はWPFのGUIコントロールの操作です。これは、めとべやさんと協力して作っています。ソースコードはこちらです。Roommetro/Friendly.WPFStandardControls ·...
View ArticleFriendly ハンズオン 12 TestAssistant(キャプチャリプレイもできますw)
今回はTestAssistantというツールを使ってみます。タイトルは若干釣りです。キャプチャリプレイ好きな人もいるのでwTestAssistantとはFriendlyとその上位ライブラリを使ったテストの作成の効率を上げるためのツールです。何ができるの?意外と多機能なのです。画面の解析タイプの解析メッセージ解析キャプチャリプレイスクリプトの実行C#とFriendlyについての理解が必要です。「そんな...
View ArticleFriendly ハンズオン 13 アプリケーションドライバ -その2-
前回の続きです。読んでない方は、そちらを先に読んでください。前回作ったアプリケーションドライバでは「内部仕様」と「操作技術」の隠蔽度が不十分ってことでしたね。では改善してみます。内部仕様の隠蔽_app.MainForm.ListBoxEmployee.Dynamic().Items[0].ToString() addForm.Window.Dynamic().Close();...
View ArticleFriendly ハンズオン 13 アプリケーションドライバ -その3-
前回までで、通常操作に関しての実装は完了して、思い通りにアプリを操作できるところまで行きました。で、今回はテスト自動化で困りがちな点の対応を考えていきます。これもアプリケーションドライバ層で吸収すれば良いと思います。ここから先はAppDriverクラスを拡張していきます。そんなに難しいことではなくチップス的なテクニックです。モーダルで固まった場合の対応タイムアウトさせるしかないですね。時間が来たら対...
View ArticleFriendly ハンズオン 13 アプリケーションドライバ -その4-
前回の続きです。今回は対象アプリのライフサイクルの管理に関してやります。あれ?でも今までも起動と終了を管理してましたよね。それだけではダメなんでしょうか?もちろん、今までのでもOKです。一つのテストごとにexeを起動しなおすと、前回のテストに影響されずにテストができます。バッチリです。でも・・・大きなアプリだと起動と終了は遅いだいたい、システムテストまで自動化したいと考えるのは大きなアプリであること...
View ArticleFriendly ハンズオン 13 アプリケーションドライバ -その5-
前回の続きです。あと、ひと手間かけてやりましょう。それは対象プロセスのデバッグです。デグレ検出→調査したい自動検査でデグレを検出しました!作った甲斐がありましたね!では調査しましょう。もちろん対象プロセスはデバッガから起動したもので調査したいですね。あれ?EXE起動から始まってる・・・あー、今の方式だと、EXEを起動させてテスト実行開始してますね。まあ、アタッチすればよいのですが面倒です。それに、ゆ...
View ArticleFriendly2.5.0とFriendly.Windows2.5.1をリリースしました。
久しぶりのリリースです。NuGet Gallery | Packages matching...
View ArticleFriendly ハンズオン 14 -準備- テストシナリオ共通部分抽出
お久しぶりです・・・だいぶ空いてしまいました。ブログって一回書かなくなるとダメですね。気を取り直してテストシナリオの共通部分の抽出行きましょう。あれ?シナリオ書くって言ってなかった?はい。Friendly ハンズオン 13 アプリケーションドライバ -その5- -...
View ArticleFriendly ハンズオン 14-2 テストシナリオ実装
今回はテストシナリオ実装やってみます。(やっとこれを元に作っていきます。Ishikawa-Tatsuya/HandsOn14-2 ·...
View ArticleFriendly.Windows.2.6.0をリリースしました。
タイトルの通りです。それに伴ってFriendly.Windowsを参照しているdllも更新しています。 Friendly.Windows.Grasp.2.5.1 Friendly.Windows.NativeStandardControls.2.2.3 Friendly.FormsStandardControls.2.3.2...
View ArticleFriendly.WPFStandardControls.1.3.0をリリースしました。
WPF系の機能追加です。x:Name以外でのコントロールの特定x:Nameを付けるのは、なんら恥じることはありません。テスタビリティーを向上させるという大義名分があります。付けても使わないようにしたらいいだけです。だいたい、x:Name付けなくてもコードビハインドからコントロール取得する手段ありますしね!でも・・・。XAML系のガチな人はx:Nameを付けることを良しとしませんw。(ごもっとも)でも...
View Articledynamicで、あれ?って思うこと
Frienldyはdynamicを使うライブラリです。で、dynamicって書いててちょっと直感的でない時があるんです。よく考えると、「そうだよね。」ってなるんですけど、僕もハマったので書いておきます。引数に渡すと、対象の関数まで動的になる例えば、こんなメソッドがあったとします。IEnumerable<int> Func(paramsint[] val) { return val; }...
View Article拡張メソッドで、あれ?って思ったこと
あれ?って思ったことシリーズ第二弾。つい先日、Cで書かれた組み込み機器と通信するプログラムをC#で書きました。で、テストを書くときに、@neueccさんのChaining Assertionを使いました。これは、Assert書くのを気持ちよくしてくれるライブラリです。こんな感じ。int actual = 0; //普通はこう書くけど Assert.AreEqual(actual, 0);...
View ArticleMicrosoft MVP for .Netを受賞いたしました!
おかげさまで、二回目の受賞となりました。これも支えてくださった皆様のおかげです。去年は初年度ということで色々な経験をさせていただきました。特に印象に残ったのはグローバルサミットと、MVP Showcaseですね。何と2位になりました!MVP Showcase Winners!とは言え、過去の栄光に浸ってる場合じゃない!どんどん前に進んで行きますよー。と言うわけで引き続きよろしくお願いします。
View ArticleFriendly.WPFStandardControls.1.4.0を公開しました。
NuGet Gallery | Friendly.WPFStandardControls 1.6.0今回は機能追加です。ボタン検索前回のバージョンアップでは、DependencyObjectに対して、バインディングとタイプで検索する機能を追加しました。Friendly.WPFStandardControls.1.3.0をリリースしました。 -...
View ArticleInfragistics社、GrapeCity社のコントロール操作ライブラリの作成を始めました。
Friendlyの便利なところは、通常のAPIをRPCでプロセス越しに呼び出せること、DLLインジェクションでテスト時だけ対象プロセスにコードを注入できることです。この機能を使えば、サードパーティー製のコントロールも簡単に操作できます。と言うわけで、InfaragisticsさんとGrapeCityさんの製品の操作ライブラリを作ってみました。対象の製品は当然有料なんですが、Infragisticsさ...
View Article