More Related Content
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test PPTX
EMTEを使って自動化の費用対効果をわかりやすく表現する PDF
PPTX
PPT
KEY
PDF
PDF
What's hot
PDF
TDD Boot Camp Tokyo for C++ 2014-01 補講 PDF
PPTX
キーワード駆動によるシステムテストの自動化について 2015 PDF
xUnit Test Patterns - Chapter16 PDF
PDF
xUnit Test Patterns - Chapter19 PDF
大規模な負荷でもドキドキしない為のJava EE PPT
PDF
PDF
モックライブラリを使ってきちんとユニットテストする #Objective-C PPTX
PPT
KEY
PDF
PDF
JustTechTalk#10 React開発における自動テスト実践 PDF
PDF
PPTX
PDF
iOSアプリ開発でもTravis CI #eytokyo PDF
テスティングフレームワークに入門してみた - Swift編 Similar to Unit testで定時帰宅!
PDF
PDF
PDF
C# から java へのプログラム移植で体験したtddの効果は? KEY
KEY
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト PDF
Code complete ch22_developper_test PDF
PDF
PPTX
KEY
テスト初心者Androiderのためのソフトウェアテスト入門 PDF
PDF
SGT2013 技術トークス「アジャイルテスティング」 KEY
テスト駆動開発の導入ーペアプログラミングの学習効果ー PDF
PPT
PDF
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】 PDF
JS開発におけるTDDと自動テストツール利用の勘所 PDF
PPT
PDF
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研) PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S... PDF
PMBOK 7th Edition Project Management Process Scrum PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
PMBOK 7th Edition_Project Management Context Diagram PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard PDF
PMBOK 7th Edition_Project Management Process_WF Type Development Unit testで定時帰宅!
- 1.
- 2.
- 3.
- 4.
そもそもテストとは
• ソフトウェアテスト
>コンピュータのプログラムを実行し、正し
く動作するかどうか確認する作業
> プログラム中の欠陥(バグ)をできる限り
多く発見することを目標として行われる
> ソフトウェアテストに成功するとは、欠陥
を発見することである。ソフトウェアテス
Via:Wikipedia
トでは、欠陥が存在することを示すことは
- 5.
ユニットテストとは
• 単体テスト(Unit Testing)
> 単体テスト、あるいはユニットテストと
は、メソッドなどの小さな単位で行うテス
トのことである。単体テストは、ホワイト
ボックステストを利用して行われる場合が
多い。 プログラムは
機能 機能 複数の機能(モジュール)が
機能 機能
> 品質を上げることはできるが、要求を満た
機能 機能
組み合わさって成り立ってい
る。
機能単位でユニットテストを
しているかはわからない 作る
- 6.
ユニットテストとは
• アジャイルな開発手法で必須
>仕様通りに動くか確認
• ユニットテストが仕様書にもなる
> ドキュメントはメンテナンスがされなくな
る アジャイルフトウェア開発
> 動いているものが正解
迅速かつ適応的にソフトウェア開発を
行う軽量な開発手法群の総称 。
代表的な手法にXPやスクラムなどがあ
る。
- 7.
- 8.
- 9.
なぜユニットテストを書く
の?
• 問題を小さなうちに摘み取る
• 問題の発生を初期の段階で防ぐ
• 仕様の確認
あなたの書い
• 使い方がわかる たコードは本
当に正しいで
すか?
- 10.
問題を小さなうちに摘み取る
• 問題を小さなうちに摘み取る
>ハインリッヒの法則
• 1件の重大災害の裏には、29件のかすり傷程度
の軽災害があり、さらにその裏にはケガはな
いものの300件のヒヤリとした体験が存在して
1件の重大な事故・災害
いる 29件の軽微な事故・災
> 問題は後になるほど重症化する害
300件のヒヤリ・ハット
• 問題が広範囲にわたる
- 11.
問題の発生を初期の段階で防
ぐ
• 問題の発生を初期の段階で防ぐ
リリースする前の
> 動かない 問題発覚と
リリース後の問題発覚
• ユニットテストで動かしてみる
コストが高いのは?
> 間違った動作
• 検証することで確認する
> 性能
• 実際に動かすことで確認できる
- 12.
仕様の確認
• 仕様の確認
>アジャイルな開発では実装のよりどころと
するドキュメントが少ない。実装を説明す
るよりもテストコードを見たほうが早い
> 机上の設計書よりも動くコード
- 13.
使い方がわかる
• 使い方
>ユニットテスト見れば、そのクラスの使い
方、何をしているかわかる
> 学習テスト 学習したいライブラリなどをユニット
テスト書いて実行して使い方や内容を
確認します。書いて使って覚える!
- 14.
- 15.
- 16.
- 17.
規約を作ろう ・場当たり的なテストはしな
い。
• 書き方の規約 ・環境に依存したテストは注
意
> テストメソッドの規約 ・テストを書けないものもあ
る
• メソッド名はtest~から始まる
> テストクラス名の規約
• テスト対象のクラス名+Test
> テストケースはシンプルに
• 複雑なテストケースになる場合は設計を見直す
- 18.
ツールを使おう
• ツール
>Junitはあたりまえ
• Junit4を使いましょう。アノテーション便利
> Seasar周りのテストツール
> Eclipseプラグイン
• Seasar使ってるならS2Junit4 Pluginを入れよう
– http://s2junit4plugin.sandbox.seasar.org/
– ただしQuickJunitと相性悪し
> Maven2
• レポート作ってくれる
- 19.
- 20.
ツールを使おう
• S2JUnit4
> できること
• 自動フィールドバインディング
• DBアクセス
– DataAccessor
• MockIntercept
– インターフェースなしでメソッドの返り値を自由自
在
• テストデータを自動で用意
http://s2container.seasar.org/2.4/ja/S2JUnit4.html
• 検証用データとDBの比較
- 21.
ツールを使おう
• S2JUnit4 Pluginfor Eclipse
> もともとはQuickJunitの派生
> Ctrl+9でテストコードと実装コードを行
き来
> Ctrl+0でテスト実行、Ctrl+Shift+0でデバッグ
> Ctrl+Shift+9 でテスト用Diconファイル編
http://s2junit4plugin.sandbox.seasar.org/
集
- 22.
- 23.
ツールを使おう
• Hudson
> 「継続的インテグレーション」
(Continuous Integration )
• ファウラーたんによって広められた
• 別々に開発された部品を持ち寄ってお互いの
動作を検証する「統合テスト」を早い段階か
ら恒常的に行うこと
• CIは単に統合テストだけではなく,広くビル
- 24.
S2Junit4を掘り下げてみる
• 自動フィールドバインディング
>ルール
• バインディング対象のフィールドは非static、非final、
非プリミティブ型かつnull
• フィールドの変数定義がインターフェース型でそのイン
タフェースをもつコンポーネントがコンテナに存在する
場合、そのコンポーネントがフィールドにセットされる
• バインディングは、テストメソッド実行の直前に行われ
RunWithで
る(ただしTestContextインタフェースは例外的に
Seasar2.classを
before()メソッド実行前にバインディングされる)。テ
忘れずに
ストメソッドの実行が終了するとバインディングされた
- 25.
- 26.
- 27.
S2Junit4を掘り下げてみる
• MockIntercept
> モックにしたいクラスにAOPで
<component class="examples.aop.Hello">
<aspect>
<component class="org.seasar.framework.aop.interceptors.MockInterceptor">
<initMethod name="setReturnValue">
このDiconファイ <arg>"greeting"</arg> メソッド名
<arg>"Hello"</arg>
ルも </initMethod> 返り値名
S2Junit4Plugin <initMethod name="setReturnValue">
OGNL式で書く
<arg>"echo"</arg>
で作る
<arg>"Hoge"</arg>
</initMethod>
</component>
</aspect>
</component>
- 28.
- 29.
- 30.
ユニットテストをしっかりや
ると
• 仕様変更に強くなる
> テストがあるから変更にも強い!
• ソースコードの保守がしやすくなる
> メンテナンスコスト低減
• 品質が上がる
> 最初の時点でバグつぶし
> 要求に対する適合度
• 設計がシンプルになる
> テストがシンプルなら設計もシンプル
- 31.
- 32.
- 33.
- 34.