Submit Search
Upload
攻略ユニットテスト with Win32 API
•
1 like
•
896 views
Ryo Amano
Follow
2006.1.13 : 第14回 XPJUG ユーザー会 * 『攻略ユニットテスト with Win32 API』
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 38
Download now
Download to read offline
Recommended
次世代I/Oインターフェイス「Eject-io」
次世代I/Oインターフェイス「Eject-io」
Takeshi HASEGAWA
ネットワークカメラを使った玄関前モニタリングの苦労話
ネットワークカメラを使った玄関前モニタリングの苦労話
Takeshi HASEGAWA
El concepto del limite (Cálculo I)
El concepto del limite (Cálculo I)
Dr. Juan R. Mejias-Ortiz
ネットワークへのCI的アプローチ
ネットワークへのCI的アプローチ
susumu tanaka
Let'sトライ!VisualStudio(C#)でGainerプログラミング-果たして忘れ物お知らせアプリは完成するのか?!
Let'sトライ!VisualStudio(C#)でGainerプログラミング-果たして忘れ物お知らせアプリは完成するのか?!
asa88
Unityと.NET
Unityと.NET
AimingStudy
動的なILの生成と編集
動的なILの生成と編集
terurou
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
Yoshiyuki Nakamura
Recommended
次世代I/Oインターフェイス「Eject-io」
次世代I/Oインターフェイス「Eject-io」
Takeshi HASEGAWA
ネットワークカメラを使った玄関前モニタリングの苦労話
ネットワークカメラを使った玄関前モニタリングの苦労話
Takeshi HASEGAWA
El concepto del limite (Cálculo I)
El concepto del limite (Cálculo I)
Dr. Juan R. Mejias-Ortiz
ネットワークへのCI的アプローチ
ネットワークへのCI的アプローチ
susumu tanaka
Let'sトライ!VisualStudio(C#)でGainerプログラミング-果たして忘れ物お知らせアプリは完成するのか?!
Let'sトライ!VisualStudio(C#)でGainerプログラミング-果たして忘れ物お知らせアプリは完成するのか?!
asa88
Unityと.NET
Unityと.NET
AimingStudy
動的なILの生成と編集
動的なILの生成と編集
terurou
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
Yoshiyuki Nakamura
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2
潤司 渡部
ラウンドテーブル:結局アジャイルとは何だったのか
ラウンドテーブル:結局アジャイルとは何だったのか
Shun Sasaki
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Mori Tetsuya
ownCloudの深イイ話
ownCloudの深イイ話
Yuki Takahashi
Abpro
Abpro
Noverce
第2回nseg slideshare
第2回nseg slideshare
ko ty
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi IWANAGA
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
Fumihiko Kinoshita
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキ
You&I
徹底比較Unreal engine4&unity5
徹底比較Unreal engine4&unity5
Seiki Okude
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会
Satoshi Harada
Ossフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみた
Akifumi Niida
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Unity ゲーム開発
Unity ゲーム開発
Katsutoshi Makino
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
Tatsuya Sakai
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
schoowebcampus
デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門
webcampusschoo
もんじゃいるのススメ
もんじゃいるのススメ
Ryo Amano
「ツナガル」クミコミシステム
「ツナガル」クミコミシステム
Ryo Amano
More Related Content
Similar to 攻略ユニットテスト with Win32 API
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
ume3_
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2
潤司 渡部
ラウンドテーブル:結局アジャイルとは何だったのか
ラウンドテーブル:結局アジャイルとは何だったのか
Shun Sasaki
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
Mori Tetsuya
ownCloudの深イイ話
ownCloudの深イイ話
Yuki Takahashi
Abpro
Abpro
Noverce
第2回nseg slideshare
第2回nseg slideshare
ko ty
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
Kazumi IWANAGA
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
Fumihiko Kinoshita
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキ
You&I
徹底比較Unreal engine4&unity5
徹底比較Unreal engine4&unity5
Seiki Okude
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会
Satoshi Harada
Ossフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみた
Akifumi Niida
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Unity ゲーム開発
Unity ゲーム開発
Katsutoshi Makino
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
Tatsuya Sakai
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
schoowebcampus
デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門
webcampusschoo
Similar to 攻略ユニットテスト with Win32 API
(20)
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2
ラウンドテーブル:結局アジャイルとは何だったのか
ラウンドテーブル:結局アジャイルとは何だったのか
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
20150123 第28回 Unity 勉強会「Unity に於けるビルド自動化のおはなし & 設定管理とリソース管理のおはなし」
ownCloudの深イイ話
ownCloudの深イイ話
Abpro
Abpro
第2回nseg slideshare
第2回nseg slideshare
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
モノづくりを楽しもう! ~ このデバイスとクラウドでできること
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アート・オブ・アジャイル デベロップメント ~組織を成功に導くエクストリームプログラミングの道~
アジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキ
徹底比較Unreal engine4&unity5
徹底比較Unreal engine4&unity5
Intalio japan special cloud workshop
Intalio japan special cloud workshop
【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会
Ossフル活用でinfrastructure as codeやってみた
Ossフル活用でinfrastructure as codeやってみた
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
Unity ゲーム開発
Unity ゲーム開発
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
実録!HoloLens×AI×IoTアプリが開発できるまでの挫折と成功
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門 先生:和田 修一
デザイナー・コーダーのための黒い画面入門
デザイナー・コーダーのための黒い画面入門
More from Ryo Amano
もんじゃいるのススメ
もんじゃいるのススメ
Ryo Amano
「ツナガル」クミコミシステム
「ツナガル」クミコミシステム
Ryo Amano
Movie Format in a Nutshell 2013
Movie Format in a Nutshell 2013
Ryo Amano
MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.
Ryo Amano
20130211.yuko party.beakmark
20130211.yuko party.beakmark
Ryo Amano
デブサミ100人本のご紹介
デブサミ100人本のご紹介
Ryo Amano
MY JOB WENT TO VIETNAM?
MY JOB WENT TO VIETNAM?
Ryo Amano
リーダー塾第4期説明会に寄せて
リーダー塾第4期説明会に寄せて
Ryo Amano
Meisters 6年目の挑戦
Meisters 6年目の挑戦
Ryo Amano
そろそろ飲み会マッシュアップについてヒトコト言っておくか
そろそろ飲み会マッシュアップについてヒトコト言っておくか
Ryo Amano
わたしといがいが
わたしといがいが
Ryo Amano
XP Fiesta Kansai 2010 "アジャイルマインド勉強会の方からやってきました"
XP Fiesta Kansai 2010 "アジャイルマインド勉強会の方からやってきました"
Ryo Amano
ビーク・マークとはなにか
ビーク・マークとはなにか
Ryo Amano
動画圧縮のしくみ
動画圧縮のしくみ
Ryo Amano
Movie Format in a nutshell
Movie Format in a nutshell
Ryo Amano
IT現場のリーダー塾卒業式プレゼンテーション
IT現場のリーダー塾卒業式プレゼンテーション
Ryo Amano
"involve" NOT "evolve" DevLOVE ed.
"involve" NOT "evolve" DevLOVE ed.
Ryo Amano
Activities in the "R" Pj.
Activities in the "R" Pj.
Ryo Amano
DDDのすすめ
DDDのすすめ
Ryo Amano
"involve", NOT "evolve" -- DevSumi2008
"involve", NOT "evolve" -- DevSumi2008
Ryo Amano
More from Ryo Amano
(20)
もんじゃいるのススメ
もんじゃいるのススメ
「ツナガル」クミコミシステム
「ツナガル」クミコミシステム
Movie Format in a Nutshell 2013
Movie Format in a Nutshell 2013
MY JOB WEND TO VIETNUM? DevSumi ver.
MY JOB WEND TO VIETNUM? DevSumi ver.
20130211.yuko party.beakmark
20130211.yuko party.beakmark
デブサミ100人本のご紹介
デブサミ100人本のご紹介
MY JOB WENT TO VIETNAM?
MY JOB WENT TO VIETNAM?
リーダー塾第4期説明会に寄せて
リーダー塾第4期説明会に寄せて
Meisters 6年目の挑戦
Meisters 6年目の挑戦
そろそろ飲み会マッシュアップについてヒトコト言っておくか
そろそろ飲み会マッシュアップについてヒトコト言っておくか
わたしといがいが
わたしといがいが
XP Fiesta Kansai 2010 "アジャイルマインド勉強会の方からやってきました"
XP Fiesta Kansai 2010 "アジャイルマインド勉強会の方からやってきました"
ビーク・マークとはなにか
ビーク・マークとはなにか
動画圧縮のしくみ
動画圧縮のしくみ
Movie Format in a nutshell
Movie Format in a nutshell
IT現場のリーダー塾卒業式プレゼンテーション
IT現場のリーダー塾卒業式プレゼンテーション
"involve" NOT "evolve" DevLOVE ed.
"involve" NOT "evolve" DevLOVE ed.
Activities in the "R" Pj.
Activities in the "R" Pj.
DDDのすすめ
DDDのすすめ
"involve", NOT "evolve" -- DevSumi2008
"involve", NOT "evolve" -- DevSumi2008
Recently uploaded
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Recently uploaded
(10)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
攻略ユニットテスト 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 now