SlideShare uma empresa Scribd logo
1 de 45
テストコード入門
2017/2/15 sh-ogawa
目次
 はじめに
 テストコードとは
 テストコードのメリット、デメリット
 テストコードとの付き合い方
 テストコードの書き方
 テスト自動化
 デモ
 レガシーシステムとテストコード
はじめに
テストコードを書いたことがない人向けに、
テストコードを書くと何が良いのかデモを交えて
紹介します。
※デモの言語はJavaを使用します。
テストコードを書くだけだと、将来的にゴミ化す
る可能性が高いため、書いたテストコードをゴミ
にしないように自動テストについても扱います。
はじめに
みなさま、テストコードと聞くとどんなイメージ
を持ちますか?
はじめに
私は最初、以下のように思いました。
 そもそも、どうやって書くの?
 テストコードのテストもするの?
それって2度手間では・・・
 つまり、テストコードを書くと何が嬉しいの?
はじめに
参加いただいた方々の疑問・ネガティブな感情
をクリアにして、
テストコードを書くはじめの一歩を踏み出すきっ
かけになる場とするべく、頑張って喋ります。
はじめに
ちなみに
はじめに
TDDとかBDD信者で
はないので、
その辺、勘違いしない
ようにお願いします!
テストコードとは
テストコードとは
 書いたコードが、開発者目線で思ったとおりに
動いているか検査する
 つまり、機能仕様を検査するわけではない
 書いたコードの仕様を表す
テストコードとは
書いたプログラムについて、
そのロジックが想定通りの動きをしているか
確認するためのプログラムです。
以下のようなメソッドがあった場合、
public int add(int x, int y) { return x + y ;}
addメソッドに「xに1」、「yに2」を渡したら、
戻り値が「3」になっていれば合格!
ということを、コードベースで確認します。
テストコードとは
また、テストコードは、書いたコードの仕様の側
面も満たします。
テストコードには、開発者が想定しているパター
ンのテストが反映されています。
つまり、テストコードとは、開発者が想定してい
るメソッドの使われ方を表しています。
このメソッド
そんな使われ方、想定してないんですけど・・・
というのを防ぐのにも役立ちます
テストコードのメリット、デメリット
テストコードのメリット、デメリット
メリット
 中のロジックが変わらなければ、結果は同じに
なる(ようにプログラムを書く)
 逆に結果が変われば、何か内部的に変わったこ
とを気付ける
 人が実行して目で確認するよりも、
圧倒的に早く終わって、何よりも正確である
リファクタリング
しやすくなる
テストコードのメリット、デメリット
メリット(応用編)
 特定の条件で起こる不具合について、テスト
コード上で再現させれば、何度でも瞬時に現象
を確認できる
 不具合を対応したら、テストが成功になるため、
実装者レベルでの確認はスグに終わる
 他人が作った機能であっても、テストコードが
あれば、テストコードを実行することで、どん
な機能かが概ね判る
テストコードのメリット、デメリット
メリット(余談)
OSSのライブラリやフレームワークの選定条件と
して、テストコードの有無は、重要な要素になり
ます。
なぜかというと、テストコードを実行することで、
どんな機能が提供されているかを簡単に確認でき
るためです。
テストコードのメリット、デメリット
デメリット
 テストコードを書くのは、開発と同じくらい時
間がかかる(経験的に半分~同じくらい)
 メンテナンスをし続けないと、ゴミになるため、
お世話が必要
テストコードを書かない勢力には
めんどくさ・・・
という心理的な訴えが強力にはたらきやすい
テストコードのメリット、デメリット
テストコードは、
以下のようなプロジェクトには向きません
 クイック案件
 作り切の案件
逆に、以下のようなプロジェクトでは
積極的に採用したいです
 細かい仕様がよく変わる
 開発終了後に、保守することが決まっている
 人の出入りが、結構ある
テストコードとの付き合い方
テストコードとの付き合い方
テストコード書くぞ!!
と決めたプロジェクトで失敗する事例(個人編)
 量産されるコピペのテストコード
 プロダクトコードのテスタビリティが低い
(端的に云うと、コーディングセンス×)
 1つのテストコードに複数パターンを混ぜ込む
 テストコードに実行順序を持たせる
テストコードは、プロダクトコードと同じように、
しっかりと設計して書かないと死にます
テストコードとの付き合い方
テストコード書くぞ!!
と決めたプロジェクトで失敗する事例(組織編)
 C0カバレッジ100%を目指す
 テストコード書けば工数が浮くという勘違い
 テストコードを書けば品質が担保できるという
勘違い
 テストコードのメンテナンスをしない
 なんでもかんでもテストコードを書かせる
 性能試験などを書いてしまう
こういうことをされると、
開発者が死にます
テストコードとの付き合い方
テストコードとの上手な付き合い方(個人編)
 共通的に使うものは、テストコード共通みたい
な形で、周りに提供する
 テストコードをレビューする、してもらう
 テスト可能なプロダクトコードを書く
⇒メソッドの戻り値voidは、本来おかしい
テストしやすいプロダクトコードを上手く書く
ということは、関数型プログラミングを学んでみると
個人的には良いと思います。
テストコードとの付き合い方
テストコードとの上手な付き合い方(組織編)
 カバレッジは85%程度を目指させ、カバレッジ
の変化に着目するようにする
 テストコードはコストがかかることを認識する
 新規開発では、テストコードだけに頼らず、打
鍵確認も行う(正常系だけでも良い)
 テスト自動化して、テストが失敗したら通知す
る仕組みを構築する
 テストコードを書くのに、十分な時間を取れな
い場合は、対象を重要機能のみに絞る
 性能試験は、別フォルダに実装して行う
ガチガチにやる必要はない
テストコードの書き方
テストコードの書き方
 テスト用のライブラリを必ず使う
 テスティングフレームワークを使って、
カバレッジを取得する
 モックを上手く利用する
 テストコードの実行は一瞬で終わる構成にする
テストコードの書き方
//プロダクトコード
public class Calculation {
/** 加法を行う */
public static int add(int x, int y) { return x + y; }
/** 減法を行う */
public static int sub(int x, int y) { return x - y; }
/** 乗法を行う */
public static int multi(int x, int y) { return x * y; }
/** 除法を行う */
protected static int div(int x, int y) {
if(y == 0) throw new IllegalArgumentException("Please pass a non-zero value to y.");
return x / y;
}
}
テストコードの書き方
//テストコード
public class CalculationTest {
//例外を検知する
@Rule
public ExpectedException expect = ExpectedException.none();
@Test
public void 加法の確認(){
assertEquals(3, Calculation.add(1, 2));
}
@Test
public void 減法の確認(){
assertEquals(4, Calculation.sub(6, 2));
}
@Test
public void 乗法の確認(){
assertEquals(12, Calculation.multi(6, 2));
}
@Test
public void 徐法の確認(){
assertEquals(2, Calculation.div(8, 4));
}
@Test
public void 徐法でゼロ除算させようとした場合に例外が発生することの確認(){
//デバッグすれば判るが、Ruleは毎回インスタンスを作り直すため、変更したら、変更しっぱなしにしておいて問題ない
expect.expect(IllegalArgumentException.class);
expect.expectMessage("Please pass a non-zero value to y.");
assertEquals(2, Calculation.div(8, 0));
}
}
かなり端折ってますが、
・メソッド名が項目になる(日本語OK)
・try-catchしなくても、
例外とそのメッセージの検査が可能
・protectedまでは小細工しないで検査可能
テスト自動化
テスト自動化
先にも出ましたが、テストコードを書く場合は、
以下の理由からテストの自動化は必須です。
 テストコードの作りっ放しは、将来的にテスト
コードがエラーとなる
⇒テストコードのゴミ化を招く
折角書いたテストコードを
ゴミ化しないために、テスト自動化をします。
これは必須です。
テスト自動化
必要なもの
 CIを支援するツール
オンプレの場合:
Jenkins一択
※弊社標準もJenkins
クラウドサービスの場合:
選択肢は色々あるけど、プライベートリポジトリは大体有料
例外として、werckerは無料で作り放題(多分今だけだけど)
でも、Java使えない
CI何ぞやは、以下を読んでください。判らないことは聞いてください
[DevOpsを支える技術勉強会(CI編)]
http://www.slideshare.net/sh-ogawa/dev-opsci
テスト自動化
Jenkins
画面からテコテコ設定を入れても良いんだけど、、
世間だともうそういう段階ではないので、、
テスト自動化
Jenkins(Blue Ocean)
テスト自動化
Jenkins(Blue Ocean Pipeline)
こんな感じで、何がどこまで正常に動いたかを見れちゃいます
テスト自動化
ソースはこんな感じで、Groovyで書きます
node {
stage('update') {
git([url: 'https://github.com/sh-ogawa/auto-test-
demo.git', branch: 'sonar'])
}
stage('test') {
bat 'mvn clean jacoco:prepare-agent test
jacoco:report -e | echo "ignore failure"'
}
stage('analyze') {
bat 'mvn sonar:sonar -e'
}
}
ソースの更新
テストコードの
実行&カバレッジ取得
テスト結果の解析
テスト自動化
余談ですが、Pipelineスクリプトを書く理由は、
 画面からCIで回すシナリオを変えた場合に、何
を変えられたのか判らない
 GUIベースは便利だが、職人技になりがち
 シナリオをソースで残しておけば、何を変更さ
れたか判るし、ソースを見れば何しているか判
る
 Gitのホスティングサービス(GitBucketとか
GitHub)を使っていればP-Rでレビューして、
OK -> マージという戦略が取れるため、属人化
しづらい
デモ
デモ
個人で行う場合は、IDEでテストした
いコードを実行できる。
成功すると緑になる。
※失敗は赤くなる
デモ
自動化構成
push
hook
pull
build
and
test
analyze
save
Analyze
result
結果の閲覧
デモ
SonarQube(テスト、解析結果)
レガシーシステムとテストコード
レガシーシステムとテストコード
最後に、テストコードがないシステムはどうやっ
て書けば良い?について
レガシーシステムでテストコードを書くには、
 今動くものを絶対の正とする
 テストを頑張って書き過ぎない
ということを念頭において、テストコードを書く
仕様化テストを実施しましょう!
レガシーシステムとテストコード
仕様化テストの書き方
 テストコードから対象のメソッドを呼ぶ
インプットは実体に合わせるのが良い
(実際の画面などを動かして、
入っているObjectを保存するとかいう
荒業を使ってもOK)
 戻り値や、IN/OUT兼用パラメータに何が入っ
ているかを見ながら、assertを書けば良い
 カバレッジは上がらないはずなので、
半日~1日で上げられるところまでを対応して、
見切りをつける(これやらないと泥沼化します)
レガシーシステムとテストコード
このようにして仕様化テストを作っておくことで、
将来、以下のようなイベントが発生した場合、
楽になります。
 システム老朽化によるリプレース
 フレームワークを載せ替えたい
 言語のバージョンを上げたい
 リファクタリングして、ソースを綺麗にしたい
etc..
質疑応答
ご静聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせるブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせるKLab Inc. / Tech
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)Yasuharu Nishi
 
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベントAzure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベントShingo Kawahara
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Tatsuya Tojima
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術Takuto Wada
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service OverviewTakeshi Fukuhara
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 
エムスリーのQAチームが目指すもの
エムスリーのQAチームが目指すものエムスリーのQAチームが目指すもの
エムスリーのQAチームが目指すものYuki Shiromoto
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計増田 亨
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)Akihiro Kuwano
 
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法gree_tech
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するHiroshi Tokumaru
 

Mais procurados (20)

ブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせるブレソルでテラバイト級データのALTERを短時間で終わらせる
ブレソルでテラバイト級データのALTERを短時間で終わらせる
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベントAzure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
Azure Blob Storageへの様々なアクセス方法を比べてみた JAZUG12周年イベント
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service Overview
 
WayOfNoTrouble.pptx
WayOfNoTrouble.pptxWayOfNoTrouble.pptx
WayOfNoTrouble.pptx
 
AWS Black Belt Techシリーズ Amazon EBS
AWS Black Belt Techシリーズ  Amazon EBSAWS Black Belt Techシリーズ  Amazon EBS
AWS Black Belt Techシリーズ Amazon EBS
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
エムスリーのQAチームが目指すもの
エムスリーのQAチームが目指すものエムスリーのQAチームが目指すもの
エムスリーのQAチームが目指すもの
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
 
GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法GREE 流!AWS をお得に使う方法
GREE 流!AWS をお得に使う方法
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 

Destaque

DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)小川 昌吾
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis小川 昌吾
 
[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム by...
[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム  by...[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム  by...
[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム by...Insight Technology, Inc.
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴るbleis tift
 
Literally Litter Free- DSS Socio Camp'15
Literally Litter Free- DSS Socio Camp'15Literally Litter Free- DSS Socio Camp'15
Literally Litter Free- DSS Socio Camp'15Zeba Adiba
 
Policy Paper: Confronting the ISIS Threat in the United States
Policy Paper: Confronting the ISIS Threat in the United StatesPolicy Paper: Confronting the ISIS Threat in the United States
Policy Paper: Confronting the ISIS Threat in the United StatesBrett Champlin
 
Oskar Schindler - The Savior
Oskar Schindler - The SaviorOskar Schindler - The Savior
Oskar Schindler - The Savioryountmitchell
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...Insight Technology, Inc.
 
The Lens of Intrinsic Skill Atoms: A Method for Gameful Design
The Lens of Intrinsic Skill Atoms: A Method for Gameful DesignThe Lens of Intrinsic Skill Atoms: A Method for Gameful Design
The Lens of Intrinsic Skill Atoms: A Method for Gameful DesignSebastian Deterding
 
a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】
a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】
a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】Risako Imai
 

Destaque (19)

MySQL入門
MySQL入門MySQL入門
MySQL入門
 
DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)DevOpsを支える技術勉強会(CI編)
DevOpsを支える技術勉強会(CI編)
 
Git入門
Git入門Git入門
Git入門
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
 
スキトラGit
スキトラGitスキトラGit
スキトラGit
 
[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム by...
[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム  by...[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム  by...
[db tech showcase Tokyo 2014] B25: [In-Memory DB: SAP HANA] 障害・災害対策のメカニズム by...
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
GresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフGresCubeで快適PostgreSQLライフ
GresCubeで快適PostgreSQLライフ
 
Città Ravena
Città RavenaCittà Ravena
Città Ravena
 
Literally Litter Free- DSS Socio Camp'15
Literally Litter Free- DSS Socio Camp'15Literally Litter Free- DSS Socio Camp'15
Literally Litter Free- DSS Socio Camp'15
 
PHILCAN - SUN CSA Philippine Launch
PHILCAN - SUN CSA Philippine LaunchPHILCAN - SUN CSA Philippine Launch
PHILCAN - SUN CSA Philippine Launch
 
Policy Paper: Confronting the ISIS Threat in the United States
Policy Paper: Confronting the ISIS Threat in the United StatesPolicy Paper: Confronting the ISIS Threat in the United States
Policy Paper: Confronting the ISIS Threat in the United States
 
Oskar Schindler - The Savior
Oskar Schindler - The SaviorOskar Schindler - The Savior
Oskar Schindler - The Savior
 
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
[C33] 24時間365日「本当に」止まらないデータベースシステムの導入 ~AlwaysOn+Qシステムで完全無停止運用~ by Nobuyuki Sa...
 
Consume Power Sensibly - Pushpalata British International School
Consume Power Sensibly - Pushpalata British International SchoolConsume Power Sensibly - Pushpalata British International School
Consume Power Sensibly - Pushpalata British International School
 
WindowsでMySQL入門
WindowsでMySQL入門WindowsでMySQL入門
WindowsでMySQL入門
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
The Lens of Intrinsic Skill Atoms: A Method for Gameful Design
The Lens of Intrinsic Skill Atoms: A Method for Gameful DesignThe Lens of Intrinsic Skill Atoms: A Method for Gameful Design
The Lens of Intrinsic Skill Atoms: A Method for Gameful Design
 
a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】
a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】
a-blog cmsを使うデザイナーのための5つの心得【a-blog cms Training Camp 2016 Autumn】
 

Semelhante a テストコード入門

アプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する 方法あれこれアプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する 方法あれこれAtsushi Mizoue
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについてTakaaki Kasai
 
Code cademyの学習方法
Code cademyの学習方法Code cademyの学習方法
Code cademyの学習方法Tsuyoshi Motobe
 
新人がTDDを学ぶ方法
新人がTDDを学ぶ方法新人がTDDを学ぶ方法
新人がTDDを学ぶ方法Ito Kunihiko
 
【"8a1"20160729資料】
【"8a1"20160729資料】【"8a1"20160729資料】
【"8a1"20160729資料】8a1
 
プログラミング勉強会
プログラミング勉強会プログラミング勉強会
プログラミング勉強会ssuser50bb47
 
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devテストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devKazuhiro Sera
 
ユニットテストをちゃんとした話
ユニットテストをちゃんとした話ユニットテストをちゃんとした話
ユニットテストをちゃんとした話Tsuyoshi Nakamura
 
ソースコードを読んでみよう
ソースコードを読んでみようソースコードを読んでみよう
ソースコードを読んでみようShun Tsunoda
 
テストを書こう!!
テストを書こう!!テストを書こう!!
テストを書こう!!拓 小林
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrumKenji Morita
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@OsakaRyo Ohki
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法Tatsuya Saito
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようToshiyuki Hirata
 
プログラミングを早くする方法
プログラミングを早くする方法プログラミングを早くする方法
プログラミングを早くする方法kazukiTakahashi18
 
プログラムを作って飯を食うということ
プログラムを作って飯を食うということプログラムを作って飯を食うということ
プログラムを作って飯を食うということFunato Takashi
 

Semelhante a テストコード入門 (17)

アプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する 方法あれこれアプリ開発を効率化する 方法あれこれ
アプリ開発を効率化する 方法あれこれ
 
開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて開発者による現実的な自動化テスト及びRubyのテストツールについて
開発者による現実的な自動化テスト及びRubyのテストツールについて
 
Code cademyの学習方法
Code cademyの学習方法Code cademyの学習方法
Code cademyの学習方法
 
新人がTDDを学ぶ方法
新人がTDDを学ぶ方法新人がTDDを学ぶ方法
新人がTDDを学ぶ方法
 
【"8a1"20160729資料】
【"8a1"20160729資料】【"8a1"20160729資料】
【"8a1"20160729資料】
 
プログラミング勉強会
プログラミング勉強会プログラミング勉強会
プログラミング勉強会
 
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devテストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
 
ユニットテストをちゃんとした話
ユニットテストをちゃんとした話ユニットテストをちゃんとした話
ユニットテストをちゃんとした話
 
ソースコードを読んでみよう
ソースコードを読んでみようソースコードを読んでみよう
ソースコードを読んでみよう
 
剪定テスト
剪定テスト剪定テスト
剪定テスト
 
テストを書こう!!
テストを書こう!!テストを書こう!!
テストを書こう!!
 
はじめてのScrum
はじめてのScrumはじめてのScrum
はじめてのScrum
 
20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka20160326 第10回 Rad Studio 勉強会@Osaka
20160326 第10回 Rad Studio 勉強会@Osaka
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめようiOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
 
プログラミングを早くする方法
プログラミングを早くする方法プログラミングを早くする方法
プログラミングを早くする方法
 
プログラムを作って飯を食うということ
プログラムを作って飯を食うということプログラムを作って飯を食うということ
プログラムを作って飯を食うということ
 

Mais de 小川 昌吾

Flutter first impression
Flutter first impressionFlutter first impression
Flutter first impression小川 昌吾
 
Flutter management statement
Flutter management statementFlutter management statement
Flutter management statement小川 昌吾
 
Laravel vue-project-upload
Laravel vue-project-uploadLaravel vue-project-upload
Laravel vue-project-upload小川 昌吾
 
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り小川 昌吾
 
Njug docker-20180623
Njug docker-20180623Njug docker-20180623
Njug docker-20180623小川 昌吾
 
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門小川 昌吾
 
Java屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経ったJava屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経った小川 昌吾
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js小川 昌吾
 
受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた小川 昌吾
 
ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)小川 昌吾
 
非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理小川 昌吾
 
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩小川 昌吾
 

Mais de 小川 昌吾 (17)

Effective flutter
Effective flutterEffective flutter
Effective flutter
 
Flutter first impression
Flutter first impressionFlutter first impression
Flutter first impression
 
Flutter management statement
Flutter management statementFlutter management statement
Flutter management statement
 
Laravel vue-project-upload
Laravel vue-project-uploadLaravel vue-project-upload
Laravel vue-project-upload
 
Lara vue
Lara vueLara vue
Lara vue
 
Atomic design+vue
Atomic design+vueAtomic design+vue
Atomic design+vue
 
今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り今年はある意味当たり年だった! という一年振り返り
今年はある意味当たり年だった! という一年振り返り
 
Njug docker-20180623
Njug docker-20180623Njug docker-20180623
Njug docker-20180623
 
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門
 
Njug 20180414
Njug 20180414Njug 20180414
Njug 20180414
 
Java屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経ったJava屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経った
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js
 
受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた受託、SES、WEBと経験したので比較してみた
受託、SES、WEBと経験したので比較してみた
 
ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)ITの開発現場における最近の当たり前これからの当たり前(主観)
ITの開発現場における最近の当たり前これからの当たり前(主観)
 
非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理非エンジニアに捧ぐツアーオブ構成管理
非エンジニアに捧ぐツアーオブ構成管理
 
Dynamo db はじめの一歩
Dynamo db はじめの一歩Dynamo db はじめの一歩
Dynamo db はじめの一歩
 
IoT検定
IoT検定IoT検定
IoT検定
 

テストコード入門