SlideShare a Scribd company logo
Test Driven Development in LabVIEW
~ TDDとJKI Carayaの紹介 ~
Yusuke Tochigi @ JLabCon#2
2
こんかいのおはなし
LabVIEW界はもちろん、ソフトウェア開発界隈で話題の、
Test Driven Development (TDD)
について、ハンズオンを交えてお話しします。
みなさんに
- テスト駆動は素晴らしいことをお伝えしたい
- JKI Carayaを紹介したい
3
こんな経験ありませんか
コードがきちんと動くかは、
最後になってみないとわからない リファクタしたら、
動作がおかしくなった
テストコードはない 入力が違うと、
予期せぬ動作となった
4
こんな経験ありませんか
コードがきちんと動くかは、
最後になってみないとわからない リファクタしたら、
動作がおかしくなった
テストコードはない 入力が違うと、
予期せぬ動作となった
不具合原因、追いにくくない?
リファクタとはいったい。。。
誰がその正しさを証明するの?
仕様を理解せずに開発してない?
5
TDDで開発してみなイカ?
テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) と
は、プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテス
トを書き(これをテストファーストと言う)、そのテストが動作する必要最低限な実
装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルで
ある。多くのアジャイルソフトウェア開発手法、例えばエクストリーム・プログラミングにお
いて強く推奨されている。近年はビヘイビア駆動開発へと発展を遂げている。
By Wikipedia
6
テスト駆動開発の教本
7
TDDのお作法
1. 失敗するテストを書く (Red)
テストを書くまでその実コードを書いてはいけない
2. とにかくテストを成功させる (Green)
どんな手を使ってでも、テストが成功すればよい
3. リファクタして、テストが成功することを確認する (Refactoring)
手順2で行った悪手を反省とともに改善する
Red → Green → Refactoring
の3ステップが真理じゃよ
8
JKI Caraya
a
http://sine.ni.com/nips/cds/view/p/lang/en/nid/215909
9
JKI Caraya
a
10
JKI Carayaの基本
1. テストグループを定義する (Define Test.vi)
2. テストを定義する (Assert.vi)
3. エラー表示器を作成する (自動エラー処理対策)
11
Interactive Window
12
レポート生成
Test Suiteによるレポート生成が可能 (テキストまたはJUnit形式)
13
FizzBuzzをTDDで
1. 1から順番に数字を発言する
2. 3で割り切れるときは「Fizz」を発言
3. 5で割り切れるときは「Buzz」を発言
4. 両方で割り切れるときは「FizzBuzz」を発言
ライブコーディング
このテストVIもさらにリファクタするよ!
14
波形解析をTDDで
1. しきい値0Vを超える位置を検索する
2. “1”の位置から波形の末尾までを取得
3. “2”区間の平均値を返す
ライブコーディング
15
TDDのメリット
コードがきちんと動くかは、
最後になってみないとわからない リファクタしたら、
動作がおかしくなった
テストコードはない 入力が違うと、
予期せぬ動作となった
単体テストを積み重ねることで、
バグの源泉を容易にたどれる! リファクタで不具合を発生していないことを、
ターゲットとテストが相互に保証する!
テストVIは正しさの証明!
コーディング前に仕様をきちんと確認!
16
TDD = テスト自動化?
個人的には...
「TDDは開発思考の話なので、TDD = テスト自動化とはならない。
TDDの結果として偶然、自動化されたテストができあがる。」
(JKI Carayaにも実は自動化ツールがあるよ...)
個人の意見を述べています (;'∀')
17
TDD = 神?
Q. どんな場面でもTDDで開発できますか?
A. 残念ながらUIやハードウェアAPIなどでは、TDD開発は簡単ではありません
やればできるけど、無理してやるくらいならTDDをあきらめた方がマシ
個人の意見を述べています (;'∀')
18
TDD is dead.
https://dhh.dk/2014/tdd-is-dead-long-live-testing.html
TDDにも賛否あります
絶対正義ではない...
19
TDDで開発すべきか?
それでもTDDで開発すると、
● 自信をもって開発を進められる
● テストの証拠があるので発言に説得力がある
● テストパターンを意識するので、テストの抜け漏れが減る
逆にTDDが枷になったり、自分やプロジェクトに合わなければ無理して取り入れない
開発・リファクタの結果が
すぐに目に見える
「だってテストしたんだもん...」
から
「テストコードがここにありまぁぁすぅぅ!」
に
開発の前に仕様書を
読まないとテストコードが書けない
20
TDDで開発しない理由
● 実コードとテストコードで2倍の工数かかる
● UIテストとかTDDじゃできないっしょ
● TDDのお作法に完璧に倣えない
● 評価?テスト?なにそれ?
テストしてないコードでは、後で
どうせ工数増えるから今やろうぜ!
難しければ、自分に合わなければ、
無理して採用する必要はない
お作法はあるけど絶対じゃない。
分家を作ってもいいんじゃない?
21
まとめ
TDDは開発技法なので、VI Analyzerみたいに導入すると一気に何かが良くなる
ものではありません...
それでも適切な場所で導入すると、高品質なモジュールを開発できるので、小さなと
ころでまずはトライしてみてはいかがでしょう?
参考:
Test Driven Development: A Real World Example - Sam Taggart (Automated Denver) - GDevCon#2
22

More Related Content

PDF
Test Yourself - テストを書くと何がどう変わるか
PDF
Tddのすゝめ
PDF
組織にテストを書く文化を根付かせる戦略と戦術
KEY
アジャイル開発振り返り
PDF
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
PDF
Hey It's Not My TDD!
PDF
CodeZineAcademy TDD実践講座PR資料
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
Test Yourself - テストを書くと何がどう変わるか
Tddのすゝめ
組織にテストを書く文化を根付かせる戦略と戦術
アジャイル開発振り返り
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
Hey It's Not My TDD!
CodeZineAcademy TDD実践講座PR資料
自動テストの誤解とアンチパターン in 楽天 Tech Talk

What's hot (20)

PDF
TDD のこころ @ OSH2014
PDF
テストファースト、自動テストを導入するという事について(@社内勉強会)
PDF
Node塾 講義その6 テスト駆動java script 読書会 1回目
PPTX
Fitnesse を用いたテストの効率化について
PPTX
TDDはじめる前に
PDF
テストとリファクタリングに関する深い方法論 #wewlc_jp
PDF
JJUG CCC 2014 fall 「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
PDF
ペアプログラミング ホントのところ
PDF
java-ja TDD 2nd
PPT
Sue445 Style TDD #atest_hack
PDF
TDD のこころ
PDF
SeasarCon 2009 White TDD
PDF
nseg第5回勉強会
PDF
詳解!自動結合テスト #jasst
PDF
いいテスト会 (スプリントレビュー) をやろう!
PPTX
テストスキルを測ってみよう
PDF
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
PDF
Ninja Testing at XP Matsuri
PDF
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
PDF
テストを分類してみよう!
TDD のこころ @ OSH2014
テストファースト、自動テストを導入するという事について(@社内勉強会)
Node塾 講義その6 テスト駆動java script 読書会 1回目
Fitnesse を用いたテストの効率化について
TDDはじめる前に
テストとリファクタリングに関する深い方法論 #wewlc_jp
JJUG CCC 2014 fall 「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
ペアプログラミング ホントのところ
java-ja TDD 2nd
Sue445 Style TDD #atest_hack
TDD のこころ
SeasarCon 2009 White TDD
nseg第5回勉強会
詳解!自動結合テスト #jasst
いいテスト会 (スプリントレビュー) をやろう!
テストスキルを測ってみよう
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
Ninja Testing at XP Matsuri
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
テストを分類してみよう!
Ad

Similar to Test Driven Development in LabVIEW (20)

PDF
テスト駆動開発入門 - C4K Meetup#2
PDF
TDDBC横浜3rd
KEY
テスト駆動開発入門
PDF
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
ODP
TDD、ペアプログラミングのすすめ
PDF
アジャイルなテストの見積もりと計画作り
PDF
テストエンジニアの品格 #automatornight
PDF
phpspecで始めるBDD
PDF
#NagoyaTesting アジャイルなテストの見積りと計画づくり
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
PDF
スマートなシステム、スマートなディペンダビリティ保証-次世代システムを頼れるものへ
PDF
はじめてのテスト技法
PPTX
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
PDF
TDD を自分の道具にしよう
PDF
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
PDF
多すぎるユニットテストは却ってよくない?私が実践しているテストコードのリファクタリング
KEY
Gunmaweb #9 LT
PDF
GCSアジャイル開発を使ったゲームの作り方
KEY
テスト駆動開発の導入ーペアプログラミングの学習効果ー
PDF
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
テスト駆動開発入門 - C4K Meetup#2
TDDBC横浜3rd
テスト駆動開発入門
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDD、ペアプログラミングのすすめ
アジャイルなテストの見積もりと計画作り
テストエンジニアの品格 #automatornight
phpspecで始めるBDD
#NagoyaTesting アジャイルなテストの見積りと計画づくり
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
スマートなシステム、スマートなディペンダビリティ保証-次世代システムを頼れるものへ
はじめてのテスト技法
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
TDD を自分の道具にしよう
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
多すぎるユニットテストは却ってよくない?私が実践しているテストコードのリファクタリング
Gunmaweb #9 LT
GCSアジャイル開発を使ったゲームの作り方
テスト駆動開発の導入ーペアプログラミングの学習効果ー
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
Ad

More from Yusuke Tochigi (16)

PDF
LabVIEW NXG Current Status @ 2020
PDF
LabVIEW NXG Web Module Training Slide
PDF
LabVIEW NXG OOP Training
PDF
Session9 - LabVIEW NXG Training Course
PDF
Session8 - LabVIEW NXG Training Course
PDF
Session7 - LabVIEW NXG Training Course
PDF
Session11 - LabVIEW NXG Training Course
PDF
Session10 - LabVIEW NXG Training Course
PDF
Session6 - LabVIEW NXG Training Course
PDF
Session5 - LabVIEW NXG Training Course
PDF
Session4 - LabVIEW NXG Training Cours
PDF
Session3 - LabVIEW NXG Training Course
PDF
Session2 - LabVIEW NXG Training Course
PDF
Session1 - LabVIEW NXG Training Course
PDF
Intro - LabVIEW NXG Training Course
PDF
Automotive QMS IATF16949
LabVIEW NXG Current Status @ 2020
LabVIEW NXG Web Module Training Slide
LabVIEW NXG OOP Training
Session9 - LabVIEW NXG Training Course
Session8 - LabVIEW NXG Training Course
Session7 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training Course
Session10 - LabVIEW NXG Training Course
Session6 - LabVIEW NXG Training Course
Session5 - LabVIEW NXG Training Course
Session4 - LabVIEW NXG Training Cours
Session3 - LabVIEW NXG Training Course
Session2 - LabVIEW NXG Training Course
Session1 - LabVIEW NXG Training Course
Intro - LabVIEW NXG Training Course
Automotive QMS IATF16949

Test Driven Development in LabVIEW