Submit Search
攻略ユニットテスト with Win32 API
1 like
907 views
Ryo Amano
2006.1.13 : 第14回 XPJUG ユーザー会 * 『攻略ユニットテスト with Win32 API』
Technology
Read more
1 of 38
Download now
Downloaded 39 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
More Related Content
PDF
次世代I/Oインターフェイス「Eject-io」
Takeshi HASEGAWA
PPTX
ネットワークカメラを使った玄関前モニタリングの苦労話
Takeshi HASEGAWA
PDF
El concepto del limite (Cálculo I)
Dr. Juan R. Mejias-Ortiz
PDF
ネットワークへのCI的アプローチ
susumu tanaka
PPT
Let'sトライ!VisualStudio(C#)でGainerプログラミング-果たして忘れ物お知らせアプリは完成するのか?!
asa88
PDF
Unityと.NET
AimingStudy
PDF
動的なILの生成と編集
terurou
PPT
2006-04-22 CLR/H #14 .NET and open source
Yoshiyuki Nakamura
次世代I/Oインターフェイス「Eject-io」
Takeshi HASEGAWA
ネットワークカメラを使った玄関前モニタリングの苦労話
Takeshi HASEGAWA
El concepto del limite (Cálculo I)
Dr. Juan R. Mejias-Ortiz
ネットワークへのCI的アプローチ
susumu tanaka
Let'sトライ!VisualStudio(C#)でGainerプログラミング-果たして忘れ物お知らせアプリは完成するのか?!
asa88
Unityと.NET
AimingStudy
動的なILの生成と編集
terurou
2006-04-22 CLR/H #14 .NET and open source
Yoshiyuki Nakamura
Similar to 攻略ユニットテスト with Win32 API
(20)
PDF
20120927 findjob4 dev_ops
ume3_
PPTX
Out systemsaichiusermeeting#5 lt2
潤司 渡部
PPTX
ラウンドテーブル:結局アジャイルとは何だったのか
Shun Sasaki
PDF
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Mori Tetsuya
PPTX
ownCloudの深イイ話
Yuki Takahashi
PPTX
Abpro
Noverce
PDF
第2回nseg slideshare
ko ty
PPTX
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi OHIRA
PDF
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
Fumihiko Kinoshita
PDF
アジャイルマニフェストから見るインセプションデッキ
You&I
PDF
徹底比較Unreal engine4&unity5
Seiki Okude
PDF
Intalio japan special cloud workshop
Daisuke Sugai
PDF
【第1回】アジャイル・スクラム勉強会
Satoshi Harada
PPTX
Ossフル活用でinfrastructure as codeやってみた
Akifumi Niida
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
PPTX
Unity ゲーム開発
Katsutoshi Makino
PPTX
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
Tatsuya Sakai
PDF
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
PDF
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
schoowebcampus
PDF
デザイナー・コーダーのための黒い画面入門
webcampusschoo
20120927 findjob4 dev_ops
ume3_
Out systemsaichiusermeeting#5 lt2
潤司 渡部
ラウンドテーブル:結局アジャイルとは何だったのか
Shun Sasaki
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Mori Tetsuya
ownCloudの深イイ話
Yuki Takahashi
Abpro
Noverce
第2回nseg slideshare
ko ty
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi OHIRA
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
Fumihiko Kinoshita
アジャイルマニフェストから見るインセプションデッキ
You&I
徹底比較Unreal engine4&unity5
Seiki Okude
Intalio japan special cloud workshop
Daisuke Sugai
【第1回】アジャイル・スクラム勉強会
Satoshi Harada
Ossフル活用でinfrastructure as codeやってみた
Akifumi Niida
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Unity ゲーム開発
Katsutoshi Makino
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
Tatsuya Sakai
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
schoowebcampus
デザイナー・コーダーのための黒い画面入門
webcampusschoo
Ad
More from Ryo Amano
(20)
PDF
もんじゃいるのススメ
Ryo Amano
PDF
「ツナガル」クミコミシステム
Ryo Amano
PDF
Movie Format in a Nutshell 2013
Ryo Amano
PDF
MY JOB WEND TO VIETNUM? DevSumi ver.
Ryo Amano
PDF
20130211.yuko party.beakmark
Ryo Amano
PDF
デブサミ100人本のご紹介
Ryo Amano
PDF
MY JOB WENT TO VIETNAM?
Ryo Amano
PDF
リーダー塾第4期説明会に寄せて
Ryo Amano
PDF
Meisters 6年目の挑戦
Ryo Amano
PDF
そろそろ飲み会マッシュアップについてヒトコト言っておくか
Ryo Amano
PDF
わたしといがいが
Ryo Amano
ZIP
XP Fiesta Kansai 2010 "アジャイルマインド勉強会の方からやってきました"
Ryo Amano
PDF
ビーク・マークとはなにか
Ryo Amano
PDF
動画圧縮のしくみ
Ryo Amano
PDF
Movie Format in a nutshell
Ryo Amano
PDF
IT現場のリーダー塾卒業式プレゼンテーション
Ryo Amano
PDF
"involve" NOT "evolve" DevLOVE ed.
Ryo Amano
PDF
Activities in the "R" Pj.
Ryo Amano
PDF
DDDのすすめ
Ryo Amano
PDF
"involve", NOT "evolve" -- DevSumi2008
Ryo Amano
もんじゃいるのススメ
Ryo Amano
「ツナガル」クミコミシステム
Ryo Amano
Movie Format in a Nutshell 2013
Ryo Amano
MY JOB WEND TO VIETNUM? DevSumi ver.
Ryo Amano
20130211.yuko party.beakmark
Ryo Amano
デブサミ100人本のご紹介
Ryo Amano
MY JOB WENT TO VIETNAM?
Ryo Amano
リーダー塾第4期説明会に寄せて
Ryo Amano
Meisters 6年目の挑戦
Ryo Amano
そろそろ飲み会マッシュアップについてヒトコト言っておくか
Ryo Amano
わたしといがいが
Ryo Amano
XP Fiesta Kansai 2010 "アジャイルマインド勉強会の方からやってきました"
Ryo Amano
ビーク・マークとはなにか
Ryo Amano
動画圧縮のしくみ
Ryo Amano
Movie Format in a nutshell
Ryo Amano
IT現場のリーダー塾卒業式プレゼンテーション
Ryo Amano
"involve" NOT "evolve" DevLOVE ed.
Ryo Amano
Activities in the "R" Pj.
Ryo Amano
DDDのすすめ
Ryo Amano
"involve", NOT "evolve" -- DevSumi2008
Ryo Amano
Ad
攻略ユニットテスト with Win32 API
1.
攻略 UnitTest with Win32
API 2006.1.13 あまのりょー
2.
自己紹介 like.no.other • こんにちは、あまのりょーです。おかげ様で、順調 に復活しています。cf.) XP祭り2005 •
とあるメーカー系ソフトハウスでメディア系のア プリケーションを作っています。 • ホントは Mac OS が得意&やりたいんですけど、 仕事ではやっぱり Windows の仕事が多いです。 orz • 永和の天野さんとの区別の方法を日夜研究中です。
3.
2005.11.17 • Embeded Technology
2005 (ET2005) の公開セッ ション「アジャイル手法は組込みシステム開発に使えるか」 • アジャイラーからは平鍋さん、永瀬さんなどの 錚々たるパネリスト
4.
私が理解した所の 結論 • アジャイル手法は組み込み開発に使えるでしょ。 • いや、むしろ
XP とか SCRUM とか名前を付けてな いだけで、アジャイルっぽい何かはクミコマーの中 に存在するよね。 • クミコマーもアジャイルのコミュニティに参加しよ うよ。
5.
ん? • っていうか、オイラがアジャイル系コミュ ニティの懇親会で名刺交換したことある のって、かなり主観だけど、、、、、、
6.
Webアプリ屋さん & Javaアプリ屋さん Rails W ebO bjects .asp M ySQ L DI-Container Swing JUnit
7.
やっぱり多い。 でも、
8.
クミコミ屋さん も割といるような 希ガス μITRON VxW orks bootstrap Flash M em ory P操 作 V操 作 JTAGICE data sheet
9.
ひょっとし て・・・
10.
PCアプリ屋さん が少なくね?
11.
今日は敢えて • あまり仲間がいない(断定していいのか!?) PC
ア プリ屋さんが、ターゲットです。 • Windoze の アプリを作っている。 • VisualStudio で C++、そしてもちろん unmanaged だ。(たぶん BCB でもイケル) • CppUnit を使ってユニットテストしている。 (たぶん boost::unit_test_framework でもイケ ル)
12.
EoT (Ease of
Testing) • ITメディアの平鍋さんの Blog (An Agille Way http:// blogs.itmedia.co.jp/hiranabe/) 2005/8/18 のエントリ より。 • そのためには・・・ • MVC の分離(MFCだと大変だけど) • Mock の利用(Mockpp を使えばある程度は) • et cetera... EoTの高い設計が、よいオブジェクト指向設計である。
13.
そうはいっても • 最後には Win32
API を呼んでいるコードが残るよ ね。 • Win32 API 用 Interface を用意して、テスト時には その Mock Object を用意してすげ替える? → 現実的じゃないし • むーん・・・
14.
しかし今 • ここに来て追い風が・・・
15.
時代は Binary 2.0 カンファレンス行きたかった・・・
16.
コンセプト • テスト時には Win32
API をちょっぴり Hackして 乗っ取った ちょっぴり Hook してみた(えへ) コードが呼ばれるようにしてみよう。 • つまり Win32 API 自体を Mock 化してみよう。
17.
!!CAUTION!! • この技を追求しすぎると、人は時として、暗黒面に 堕ちます。 • 通報されたり、タイーホ されないように・・・ •
実際、この hack をした mat 氏の mixi 名はある日「ダース・フモフモ」に 変わってました。
18.
IAT書き換え • さぁ、今回は IAT
(Import Address Table) を書き換え てみましょう。 • 参考文献: • 今回は技術的な詳細には触れません。気になる方 は私に直接声かけてくださいませ。
19.
ケース1 • ::GetDiskFreeSpaceEx() API
を使って、ディスクの 空き容量をチェックし、閾値 _以上_ なら true を返 すメソッドをテストしたい。 • テストコード内で巨大なファイルを touch するなど の方法が考えられますが、閾値付近に制御するこ とは非常に難しい。
20.
実行例1 - Hook無し Hookしていないと、容量が足りない 場合のテストコードが試せない
21.
実行例1 - Hook有り Hookして、少ない容量を返すように するとテストパス
22.
ケース2 • Web アプリ系でも問題になるテスト時の
pseudo DB。Windows では簡単な値の永続化はレジストリ を使って行います。 • レジストリアクセスの API は ::RegQueryValueEx() ですが、これを Hook すればOK。(もちろん Open/Close 用の API も Hook します)
23.
実行例2 - Hook有り HKLM
を書き込み権限で Open できて しまうユーザでテストしているので Open失敗の場合のテストが出来ない
24.
実行例2 - Hook有り Hookして、Openが失敗するようにし てみるとテストパス
25.
and so on •
この他にも、Win32 API の挙動を制御してユニット テストしたいケースはあると思います。(例:ウィ ンドウ位置調整など) • こういった場合に今回紹介した手法は使えるかも しれません。
26.
まとめ
27.
Win32 API Hook で ユニットテスト してウハウハ
28.
でもダークサイド に堕ちちゃいやん
29.
PCアプリ屋さん はもっとコミュニ ティに参加しよう
30.
以上。
31.
ヨンキュー! ご清聴ありがとう mixi コミュ: ヨンキュー普及委員会
もよろしく
32.
おまけ まだ終わってなかった時の
33.
先日、私が関わっているプロジェクトの 最初のイテレーションが終わりましたが、 その時のバーンダウンチャートです。 4つのモジュールがあります。
34.
トレンドはいいけど、最初に沢山設定しす ぎましたね。
35.
平坦部分が気になるけど、最後は収束。 タスク粒度の問題か。
36.
そ、その日にいったい何が・・・
37.
どこから始まってんねん!
38.
ホントに おしまい
Download