Soumettre la recherche
Mettre en ligne
Unit testで定時帰宅!
•
Télécharger en tant que KEY, PDF
•
7 j'aime
•
2,894 vues
Funato Takashi
Suivre
Technologie
Signaler
Partager
Signaler
Partager
1 sur 34
Télécharger maintenant
Recommandé
Casper導入資料
Casper導入資料
Yuuki Tan-nai
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
システムテスト自動化標準ガイド第6章
システムテスト自動化標準ガイド第6章
nihon buson
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
Myweekdays and testing
Myweekdays and testing
ryuji koyama
EMTEを使って自動化の費用対効果をわかりやすく表現する
EMTEを使って自動化の費用対効果をわかりやすく表現する
JYERUEY
初めての単体テスト
初めての単体テスト
Basuke Suzuki
Recommandé
Casper導入資料
Casper導入資料
Yuuki Tan-nai
PHP agile test tips
PHP agile test tips
Tsutomu Chikuba
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
システムテスト自動化標準ガイド第6章
システムテスト自動化標準ガイド第6章
nihon buson
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
Myweekdays and testing
Myweekdays and testing
ryuji koyama
EMTEを使って自動化の費用対効果をわかりやすく表現する
EMTEを使って自動化の費用対効果をわかりやすく表現する
JYERUEY
初めての単体テスト
初めての単体テスト
Basuke Suzuki
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
Takashi Imagire
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
リファクタリング読書会20120220
リファクタリング読書会20120220
Suguru Shirai
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
Toru Koido
xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19
Takuto Wada
テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
ryuji koyama
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
nihon buson
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
Nozomi Ito
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
Taiichilow Nagase
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
iOSアプリ開発でもTravis CI #eytokyo
iOSアプリ開発でもTravis CI #eytokyo
Koji Hasegawa
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
C++でテスト駆動開発
C++でテスト駆動開発
Akineko Shimizu
Stac2014 石川
Stac2014 石川
Tatsuya Ishikawa
事例から見るテスト自動化のポイント
事例から見るテスト自動化のポイント
Hiroshi Maekawa
Continuous delivery chapter4
Continuous delivery chapter4
favril1
Gamedevenvstudy1
Gamedevenvstudy1
Takashi Kokawa
Contenu connexe
Tendances
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
Takashi Imagire
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
リファクタリング読書会20120220
リファクタリング読書会20120220
Suguru Shirai
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
Toru Koido
xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19
Takuto Wada
テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
ryuji koyama
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
nihon buson
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
hakoika-itwg
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
Nozomi Ito
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
Takuto Wada
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
Taiichilow Nagase
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
iOSアプリ開発でもTravis CI #eytokyo
iOSアプリ開発でもTravis CI #eytokyo
Koji Hasegawa
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
C++でテスト駆動開発
C++でテスト駆動開発
Akineko Shimizu
Stac2014 石川
Stac2014 石川
Tatsuya Ishikawa
事例から見るテスト自動化のポイント
事例から見るテスト自動化のポイント
Hiroshi Maekawa
Tendances
(20)
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
リファクタリング読書会20120220
リファクタリング読書会20120220
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19
テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
システムテスト自動化標準ガイド第7章
システムテスト自動化標準ガイド第7章
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
大規模な負荷でもドキドキしない為のJava EE
大規模な負荷でもドキドキしない為のJava EE
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
iOSアプリ開発でもTravis CI #eytokyo
iOSアプリ開発でもTravis CI #eytokyo
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
C++でテスト駆動開発
C++でテスト駆動開発
Stac2014 石川
Stac2014 石川
事例から見るテスト自動化のポイント
事例から見るテスト自動化のポイント
Similaire à Unit testで定時帰宅!
Continuous delivery chapter4
Continuous delivery chapter4
favril1
Gamedevenvstudy1
Gamedevenvstudy1
Takashi Kokawa
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
Seiji KOMATSU
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
Yusuke HIDESHIMA
アジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
Software testing
Software testing
Masayuki Wakizaka
Introduction to Continuous Testing
Introduction to Continuous Testing
Atsuhiro Kubo
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
Toru Koido
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
継続的デリバリー読書会 第 7 章 コミットステージ
継続的デリバリー読書会 第 7 章 コミットステージ
Yasutomo Arai
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
urasandesu
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
Takuto Wada
ソフトウェアテスト入門
ソフトウェアテスト入門
iKenji
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
Hiroyuki Tanaka
ITS fidel
ITS fidel
Fidel Softech P. Ltd
テストを分類してみよう!
テストを分類してみよう!
Kenji Okumura
CruiseControl.NET設置
CruiseControl.NET設置
Kuniaki Igarashi
Similaire à Unit testで定時帰宅!
(20)
Continuous delivery chapter4
Continuous delivery chapter4
Gamedevenvstudy1
Gamedevenvstudy1
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
アジャイル×テスト開発を考える
アジャイル×テスト開発を考える
Software testing
Software testing
Introduction to Continuous Testing
Introduction to Continuous Testing
Gui自動テストツール基本
Gui自動テストツール基本
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
継続的デリバリー読書会 第 7 章 コミットステージ
継続的デリバリー読書会 第 7 章 コミットステージ
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
ソフトウェアテスト入門
ソフトウェアテスト入門
GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
ITS fidel
ITS fidel
テストを分類してみよう!
テストを分類してみよう!
CruiseControl.NET設置
CruiseControl.NET設置
Plus de Funato Takashi
プログラムを作って飯を食うということ
プログラムを作って飯を食うということ
Funato Takashi
Git flow cheatsheet
Git flow cheatsheet
Funato Takashi
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Maven2 plugin
Maven2 plugin
Funato Takashi
問題解決ノ勘所
問題解決ノ勘所
Funato Takashi
Javaでmongo db
Javaでmongo db
Funato Takashi
スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
Plus de Funato Takashi
(7)
プログラムを作って飯を食うということ
プログラムを作って飯を食うということ
Git flow cheatsheet
Git flow cheatsheet
Springでdao 20070413
Springでdao 20070413
Maven2 plugin
Maven2 plugin
問題解決ノ勘所
問題解決ノ勘所
Javaでmongo db
Javaでmongo db
スレッドダンプの読み方
スレッドダンプの読み方
Unit testで定時帰宅!
1.
UnitTestで定時帰宅!
船戸 隆 2009/06/19
2.
Agenda • ユニットテストとは • なぜユニットテストを書くの? •
ユニットテストの書き方 • まとめ
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.
計画しよう 1.仕様の理解 2.仕様の観点からテストケース抽出 3.プログラム構造の理解(設計) 4.プログラムの観点からテストケース 抽出 5.テストシナリオを考える
17.
規約を作ろう ・場当たり的なテストはしな
い。 • 書き方の規約 ・環境に依存したテストは注 意 > テストメソッドの規約 ・テストを書けないものもあ る • メソッド名はtest~から始まる > テストクラス名の規約 • テスト対象のクラス名+Test > テストケースはシンプルに • 複雑なテストケースになる場合は設計を見直す
18.
ツールを使おう • ツール >
Junitはあたりまえ • Junit4を使いましょう。アノテーション便利 > Seasar周りのテストツール > Eclipseプラグイン • Seasar使ってるならS2Junit4 Pluginを入れよう – http://s2junit4plugin.sandbox.seasar.org/ – ただしQuickJunitと相性悪し > Maven2 • レポート作ってくれる
19.
ツールを使おう • Junit
> Greenになると気持ちいい > 以下略
20.
ツールを使おう • S2JUnit4
> できること • 自動フィールドバインディング • DBアクセス – DataAccessor • MockIntercept – インターフェースなしでメソッドの返り値を自由自 在 • テストデータを自動で用意 http://s2container.seasar.org/2.4/ja/S2JUnit4.html • 検証用データとDBの比較
21.
ツールを使おう • S2JUnit4 Plugin
for Eclipse > もともとはQuickJunitの派生 > Ctrl+9でテストコードと実装コードを行 き来 > Ctrl+0でテスト実行、Ctrl+Shift+0でデバッグ > Ctrl+Shift+9 でテスト用Diconファイル編 http://s2junit4plugin.sandbox.seasar.org/ 集
22.
ツールを使おう • Maven2
> mvn testでテスト実行 > mvn siteでテストリポート作成 • テスト結果とかカバレッジとか
23.
ツールを使おう • Hudson
> 「継続的インテグレーション」 (Continuous Integration ) • ファウラーたんによって広められた • 別々に開発された部品を持ち寄ってお互いの 動作を検証する「統合テスト」を早い段階か ら恒常的に行うこと • CIは単に統合テストだけではなく,広くビル
24.
S2Junit4を掘り下げてみる • 自動フィールドバインディング >
ルール • バインディング対象のフィールドは非static、非final、 非プリミティブ型かつnull • フィールドの変数定義がインターフェース型でそのイン タフェースをもつコンポーネントがコンテナに存在する 場合、そのコンポーネントがフィールドにセットされる • バインディングは、テストメソッド実行の直前に行われ RunWithで る(ただしTestContextインタフェースは例外的に Seasar2.classを before()メソッド実行前にバインディングされる)。テ 忘れずに ストメソッドの実行が終了するとバインディングされた
25.
S2Junit4を掘り下げてみる • DBアクセス >
フィールドにDataAccessorを追加してお くとDBを操作できるAccessorが自動でDI される • DBからデータを取り出せる • Excelからデータを取り出せる
26.
S2Junit4を掘り下げてみる • MockIntercept
> メソッドを呼び出した結果を自由に変更で きる > 個別のDiconファイルで定義する > モックを使ってテストできる • LogicのテストをしたいのにBhvが動作する必 要ないよね > アノテーションを使ってもできる
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.
S2Junit4を掘り下げてみる • テストデータを自動で用意 >
ExcelにDBに入れたいデータを書いとくと 勝手にDB入れてくれる > 検証用データも同じ > 規約はs2junit2.dicon > クラス名.xls > クラス名_Expected.xls
29.
まとめ
30.
ユニットテストをしっかりや
ると • 仕様変更に強くなる > テストがあるから変更にも強い! • ソースコードの保守がしやすくなる > メンテナンスコスト低減 • 品質が上がる > 最初の時点でバグつぶし > 要求に対する適合度 • 設計がシンプルになる > テストがシンプルなら設計もシンプル
31.
その結果・・・
32.
障害の少ない堅牢なシステム メンテナンスが楽チン
33.
障害の少ない堅牢なシステム メンテナンスが楽チン
34.
障害の少ない堅牢なシステム メンテナンスが楽チン
作業が減るので定時帰 宅!
Notes de l'éditeur
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Télécharger maintenant