SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
2013/10/23

中村
1.テスト駆動開発とは
2.

テスト駆動開発の目的
3. テスト駆動開発の流れ
4.テストフレームワークによ
るテスト
 テスト駆動開発(TDD)とは

 テスト用プログラムを書く
 テストを行う
 リファクタリングによるコードの改善

 これを繰り返して開発を進める開発手法
 プログラムを外部から見た動作を変えずに

ソースコードの内部構造を整理すること
 コードを追加・変更を繰り返していくうちに

重複箇所や煩雑になった場合などの対応する
こと
 他の言語と比べてデバッグしにくい事が挙げ

られる
 エラーが発生しても画面から得られる情報が
少ない
 テストコードを書き、少しづつ開発を進めて
いくこの手法が向いていると思われる
 1.開発が早くなる
 2.クロスブラウザテストが簡単に行える
 繰り返し自動でテストが行われることで、正

常だったプログラムを修正してバグが発生し
てしまった場合にもすぐに検知できる。
 難易度が高い開発の場合、テストコードを短

い間隔で記述して実行していくことにより、
整理されていく。その結果、早い開発が可能
となる。
 テスト駆動開発では常にテストが付きまとう。

そのテストが思った通りに動作することに気
を付けながら開発を進めていく
 その結果・・・

 着実に進められるため、結果的にバグによる

戻り作業の少ない開発が行える
 ツールによって引数にブラウザを設

定し、そのブラウザを起動してテス
トを行える
テストコードを書く、というこ

とは初期投資が必要となる。初
期投資が回収出来ないような開
発では適用すべきではない
 テスト駆動開発は以下の作業サイクルを細か

く繰り返してプログラミングを進めていく






テストを書く
不合格確認
合格確認
重複削除のためのリファクタリング
実装する機能を選び、そのため

の単体テストを書く。短く、単
一の振る舞いを対象にするべき
テストコードがバグを含んでい

る可能性もある
そういった可能性も考慮して、

敢えて不合格テストを実施する。
不合格テストを実施することで
コードの現在の状態を把握する。
テストを成功させる
重複削除などコードをリファク

タリングしてきれいにする。
JavaScriptのテストフレームワー

クはたくさん存在する
参考として以下に例を紹介する
 テストを絶えず実行し作業フローにテストを

組み込むことが煩わしい
JsUnit

更新が遅く、新しいプロジェクトに適用
するには不向き。Prototype.jsライブラリ
のために作られていたこともあり、依存
しがち。

YUI

Yahooが作成したブラウザ内テストフレー
ムワーク

QUnit

jQueryチームが開発。伝統的なxUnitの設
計に厳格に従っていない。
 コマンドライン上でテストを実行できるが、

本番コードが実行されない環境でのテストと
なる
Crosscheck

更新されておらず、現在の
ブラウザでは対応できない

Rhinoとenv.js

JQueryを作った方が開発し
たライブラリ
 以下のツールによる開発を紹介する
JsTestDriver

実際のブラウザ、モバイルでもテスト可能

EclipseやIntelliJ IDEAへのプラグインもある
Junitと互換性のあるXMLレポートの出力も可能。
Jenkinsとの連携も簡単に対応できる

しかし古いブラウザに対応していない部分もある。
(XMLHttpRequestオブジェクトを必要とするVar.7
以前のIEには対応できない)
4.1サーバーの起動
4.2ブラウザにアクセス
4.3テスト実行
sudo

java -jar
$JSTESTDRIVER_HOME/JsTestDri
ver-1.3.5.jar --port 4224
ブラウザで以下のアドレスにア

クセス
http://localhost:4224
 cd

$JSTESTDRIVER_HOME/files/testdriven-javascript-developmentcode/00-main/case01/

 sudo

java -jar
$JSTESTDRIVER_HOME/JsTestDriver1.3.5.jar --tests all
 テストリスト:

 ①4で割り切れる年はうるう年と判定する
 ②ただし、100で割り切れる年はうるう年で

ないと判定する
 ③ただし、400で割り切れる年はうるう年と
判定する
 ①2004年は4で割り切れるため閏年
 ②2100年は100で割り切れるため閏年でない
 ③2000年は100で割り切れるが400で割り切れ

るため閏年
 まずは失敗するパターンで実行する
 入力データ:7

// main.js
function isLeapYear(year){
jstestdriver.console.log(year
);
if ((year % 4) == 0) {
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear':
function(){
var setYears = 7;
assertEquals(true,isLeapYear
(setYears));
}
}
)
入力データ7のケースを追加
 Total

1 tests (Passed: 0; Fails: 1; Errors: 0)
(1.00 ms)
 Firefox 17.0 Linux: Run 1 tests (Passed: 1;
Fails: 0; Errors 0) (1.00 ms)

isLeapYearTest.test isLeapYear passed
(1.00 ms)

[LOG] 7
 次に成功パターンで実行する
 入力データ:8

// main.js
function isLeapYear(year){
jstestdriver.console.log(year
);
if ((year % 4) == 0) {
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear':
function(){
var setYears = 8;
assertEquals(true,isLeapYear
(setYears));
}
}
)
入力データ8のケースを追加
 Total

1 tests (Passed: 1; Fails: 0; Errors: 0)
(1.00 ms)
 Firefox 17.0 Linux: Run 1 tests (Passed: 1;
Fails: 0; Errors 0) (1.00 ms)

isLeapYearTest.test isLeapYear passed
(1.00 ms)

[LOG] 8


まずは失敗するパターンで実行する

// main.js
function isLeapYear(year){
jstestdriver.console.log(ye
ar);
if ((year % 4) == 0) {
if (year % 100 == 0) {
return false;
}
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear4': function(){
var setYears = 4;
assertEquals(true,isLeapYear(setYears));
},
'test isLeapYear100': function(){
var setYears = 40;
assertEquals(true,isLeapYear(setYears));
},
}
)
入力データ40のケースを追加
両方成功してしまうケース
 Total

2 tests (Passed: 2; Fails: 0; Errors: 0)
(0.00 ms)
 Firefox 17.0 Linux: Run 2 tests (Passed: 2;
Fails: 0; Errors 0) (0.00 ms)

isLeapYearTest.test isLeapYear4 passed
(0.00 ms)

[LOG] 4

isLeapYearTest.test isLeapYear100 passed
(0.00 ms)

[LOG] 40
// main.js
あ
function isLeapYear(year){
jstestdriver.console.log(ye
ar);
if ((year % 4) == 0) {
if (year % 100 == 0) {
return false;
}
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear4': function(){
var setYears = 4;
assertEquals(true,isLeapYear(setYears));
},
'test isLeapYear100': function(){
var setYears = 100;
assertEquals(true,isLeapYear(setYears));
},
}
)
入力データ100のケースを追加
こちらは閏年ではないので
Failsで返ってくるはず















Total 2 tests (Passed: 1; Fails: 1; Errors: 0) (1.00 ms)
Firefox 17.0 Linux: Run 2 tests (Passed: 1; Fails: 1; Errors 0)
(1.00 ms)
isLeapYearTest.test isLeapYear4 passed (0.00 ms)
[LOG] 4
isLeapYearTest.test isLeapYear100 failed (1.00 ms):
AssertError: expected true but was false
.test
isLeapYear100@http://localhost:4224/test/test/isLeapYear.js:9
[LOG] 100
Firefox 17.0 Linux: Run 2 tests (Passed: 2; Fails: 0; Errors 0)
(0.00 ms)
isLeapYearTest.test isLeapYear4 passed (0.00 ms)
[LOG] 4
isLeapYearTest.test isLeapYear100 passed (0.00 ms)
[LOG] 40
//

main.js
function isLeapYear(year){
 jstestdriver.console.log(year);
 if ((year % 4 == 0) || (year % 100 != 0)) {

return true;
 }
 return false;
}
// main.js
function isLeapYear(year){
jstestdriver.console.log(yea
r);
if ((year % 4 == 0) ||
(year % 100 != 0)) {
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear4': function(){
var setYears = 4;
assertEquals(true,isLeapYear(setYea
rs));
},
'test isLeapYear100': function(){
var setYears = 100;
assertEquals(true,isLeapYear(setYea
rs));
},
}
)








Total 2 tests (Passed: 2; Fails: 0; Errors: 0) (1.00 ms)
Firefox 17.0 Linux: Run 2 tests (Passed: 2; Fails: 0;
Errors 0) (1.00 ms)
isLeapYearTest.test isLeapYear4 passed (0.00 ms)
[LOG] 4
isLeapYearTest.test isLeapYear100 passed (1.00 ms)
[LOG] 100



入力データ4は成功(閏年)
入力データ100は失敗(閏年ではない)



となるはず・・・



おかしい


// main.js
function
isLeapYear(year){

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear4': function(){
var setYears = 4;

jstestdriver.console.log
(year);
if ((year % 4 == 0) &&
(year % 100 != 0)) {
return true;
}
return false;
}

assertEquals(true,isLeapYear(setYears)
);
},
'test isLeapYear100': function(){
var setYears = 100;
assertEquals(true,isLeapYear(setYears)
);
},
}
)












Total 2 tests (Passed: 1; Fails: 1; Errors: 0) (0.00 ms)
Firefox 17.0 Linux: Run 2 tests (Passed: 1; Fails: 1;
Errors 0) (0.00 ms)
isLeapYearTest.test isLeapYear4 passed (0.00 ms)
[LOG] 4
isLeapYearTest.test isLeapYear100 failed (0.00 ms):
AssertError: expected true but was false
.test
isLeapYear100@http://localhost:4224/test/test/isLea
pYear.js:8
[LOG] 100

成功!
// main.js
function isLeapYear(year){

jstestdriver.console.log(ye
ar);
if(year % 400){
return true;
} else if ((year % 4 == 0)
&& (year % 100 != 0)) {
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear4': function(){
var setYears = 4;
assertEquals(true,isLeapYear(setYears));
},
'test isLeapYear100': function(){
var setYears = 100;
assertEquals(true,isLeapYear(setYears));
},
'test isLeapYear400': function(){
var setYears = 200;
assertEquals(true,isLeapYear(setYears));
},
}
)

入力データ200のケースを追加
こちらは閏年
Total 3 tests (Passed: 1; Fails: 2; Errors: 0) (1.00
ms)
 Firefox 17.0 Linux: Run 3 tests (Passed: 3; Fails:
0; Errors 0) (1.00 ms)

isLeapYearTest.test isLeapYear4 passed (0.00
ms)

[LOG] 4

isLeapYearTest.test isLeapYear100 passed
(1.00 ms)

[LOG] 100

isLeapYearTest.test isLeapYear400 passed
(0.00 ms)

[LOG] 200



再度テストを行い、成功を確認する

// main.js
function isLeapYear(year){
jstestdriver.console.log(ye
ar);
if (year % 400 == 0 ||
(year % 4 == 0 && year %
100 != 0)) {
return true;
}
return false;
}

// isLeapYear.js
TestCase("isLeapYearTest", {
'test isLeapYear4': function(){
var setYears = 4;
assertEquals(true,isLeapYear(setYears));
},
'test isLeapYear100': function(){
var setYears = 100;
assertEquals(true,isLeapYear(setYears));
},
'test isLeapYear400': function(){
var setYears = 400;
assertEquals(true,isLeapYear(setYears));
},
}
)













Total 3 tests (Passed: 2; Fails: 1; Errors: 0) (2.00 ms)
Firefox 17.0 Linux: Run 3 tests (Passed: 2; Fails: 1;
Errors 0) (2.00 ms)
isLeapYearTest.test isLeapYear4 passed (1.00 ms)
[LOG] 4
isLeapYearTest.test isLeapYear100 passed (1.00 ms)
[LOG] 100
isLeapYearTest.test isLeapYear400 failed (0.00 ms):
AssertError: expected true but was false
.test
isLeapYear400@http://localhost:4224/test/test/isLea
pYear.js:13

[LOG] 400
テストを書
く
リファクタリン
グ

不合格確認

合格確認

Más contenido relacionado

La actualidad más candente

Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説JPCERT Coordination Center
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java心 谷本
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)AyakaNishiyama
 
ゆるふわJava8入門
ゆるふわJava8入門ゆるふわJava8入門
ゆるふわJava8入門dcubeio
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回Shigeharu Yamaoka
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習JPCERT Coordination Center
 
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説JPCERT Coordination Center
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~JustSystems Corporation
 
構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版junichi anno
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition心 谷本
 

La actualidad más candente (11)

Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説Javaセキュアコーディングセミナー東京第3回演習の解説
Javaセキュアコーディングセミナー東京第3回演習の解説
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 
Clojrue 13 testing
Clojrue 13 testingClojrue 13 testing
Clojrue 13 testing
 
ゆるふわJava8入門
ゆるふわJava8入門ゆるふわJava8入門
ゆるふわJava8入門
 
運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回運用構築技術者の為のPSプログラミング第2回
運用構築技術者の為のPSプログラミング第2回
 
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
 
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
 
構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版構築手順 Ssis イベントログ取込み 第2版
構築手順 Ssis イベントログ取込み 第2版
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition
 

Destacado

Provision of non audit services in sudan. (asbbs 14th conference in paris)
Provision of non audit services in sudan. (asbbs 14th conference in paris)Provision of non audit services in sudan. (asbbs 14th conference in paris)
Provision of non audit services in sudan. (asbbs 14th conference in paris)Amna Obeid
 
Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?Freddie_Harrison8439
 
PERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇA
PERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇAPERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇA
PERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇALewis Messi
 
PART TIME WORK FROM HOME FOR STUDENTS
PART TIME WORK FROM HOME FOR STUDENTSPART TIME WORK FROM HOME FOR STUDENTS
PART TIME WORK FROM HOME FOR STUDENTSFreddie_Harrison8439
 
Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?Freddie_Harrison8439
 
Σαρακοστή
ΣαρακοστήΣαρακοστή
ΣαρακοστήMIHALINIO
 
UPDATED_Shameer Ahmar Resume PPT
UPDATED_Shameer Ahmar Resume PPTUPDATED_Shameer Ahmar Resume PPT
UPDATED_Shameer Ahmar Resume PPTShameer Ahmar
 
πολυτεχνείο
πολυτεχνείοπολυτεχνείο
πολυτεχνείοMIHALINIO
 
PROYECTO EDUCATIVO CIEN AULAS EN LA NUBE
PROYECTO EDUCATIVO CIEN AULAS EN LA NUBEPROYECTO EDUCATIVO CIEN AULAS EN LA NUBE
PROYECTO EDUCATIVO CIEN AULAS EN LA NUBEAULA PERÚ
 

Destacado (18)

FELDMAN FELDMAN & ASSOCIATES, PC
FELDMAN FELDMAN & ASSOCIATES, PCFELDMAN FELDMAN & ASSOCIATES, PC
FELDMAN FELDMAN & ASSOCIATES, PC
 
Lab section 2
Lab section 2Lab section 2
Lab section 2
 
Provision of non audit services in sudan. (asbbs 14th conference in paris)
Provision of non audit services in sudan. (asbbs 14th conference in paris)Provision of non audit services in sudan. (asbbs 14th conference in paris)
Provision of non audit services in sudan. (asbbs 14th conference in paris)
 
Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?
 
PERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇA
PERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇAPERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇA
PERORES FICHAJES DE LA HISTORIA DEL MADRID Y DEL BARÇA
 
Bloom Legal
Bloom LegalBloom Legal
Bloom Legal
 
Www carinquotes com
Www carinquotes comWww carinquotes com
Www carinquotes com
 
Lab. aids,hepatitis
Lab. aids,hepatitisLab. aids,hepatitis
Lab. aids,hepatitis
 
PART TIME WORK FROM HOME FOR STUDENTS
PART TIME WORK FROM HOME FOR STUDENTSPART TIME WORK FROM HOME FOR STUDENTS
PART TIME WORK FROM HOME FOR STUDENTS
 
Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?Do I Really Need To Hire a Lawyer for My Auto Accident Case?
Do I Really Need To Hire a Lawyer for My Auto Accident Case?
 
GALE & LAUGHLIN
GALE & LAUGHLINGALE & LAUGHLIN
GALE & LAUGHLIN
 
Derecho Penal Especial
Derecho Penal EspecialDerecho Penal Especial
Derecho Penal Especial
 
Negmusic
NegmusicNegmusic
Negmusic
 
Σαρακοστή
ΣαρακοστήΣαρακοστή
Σαρακοστή
 
SAP BI Training in Chennai
SAP BI Training in ChennaiSAP BI Training in Chennai
SAP BI Training in Chennai
 
UPDATED_Shameer Ahmar Resume PPT
UPDATED_Shameer Ahmar Resume PPTUPDATED_Shameer Ahmar Resume PPT
UPDATED_Shameer Ahmar Resume PPT
 
πολυτεχνείο
πολυτεχνείοπολυτεχνείο
πολυτεχνείο
 
PROYECTO EDUCATIVO CIEN AULAS EN LA NUBE
PROYECTO EDUCATIVO CIEN AULAS EN LA NUBEPROYECTO EDUCATIVO CIEN AULAS EN LA NUBE
PROYECTO EDUCATIVO CIEN AULAS EN LA NUBE
 

Similar a Java scriptによるテスト駆動開発

第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめhakoika-itwg
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストSeiji KOMATSU
 
リファクタリング読書会20120220
リファクタリング読書会20120220リファクタリング読書会20120220
リファクタリング読書会20120220Suguru Shirai
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストYohei Sato
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)fumoto kazuhiro
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?Shinichi Hirauchi
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodAtsuhiro Kubo
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112龍一 田中
 
PHPUnit でテスト駆動開発を始めよう
PHPUnit でテスト駆動開発を始めようPHPUnit でテスト駆動開発を始めよう
PHPUnit でテスト駆動開発を始めようYuya Takeyama
 
Code complete ch22_developper_test
Code complete ch22_developper_testCode complete ch22_developper_test
Code complete ch22_developper_testSho Shimauchi
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!Funato Takashi
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストToru Tamaki
 
xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19Takuto Wada
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦urasandesu
 
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話Kentarou Takeda
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるToshiyuki Hirata
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 

Similar a Java scriptによるテスト駆動開発 (20)

第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
リファクタリング読書会20120220
リファクタリング読書会20120220リファクタリング読書会20120220
リファクタリング読書会20120220
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
Spring と TDD
Spring と TDDSpring と TDD
Spring と TDD
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112
 
PHPUnit でテスト駆動開発を始めよう
PHPUnit でテスト駆動開発を始めようPHPUnit でテスト駆動開発を始めよう
PHPUnit でテスト駆動開発を始めよう
 
Code complete ch22_developper_test
Code complete ch22_developper_testCode complete ch22_developper_test
Code complete ch22_developper_test
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 
xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 

Último

東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 

Último (7)

東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 

Java scriptによるテスト駆動開発