58
ソフトウェア開発ライブ とちぎテストの会議出張版 プログラミングとテスティングと予定調和() @miwa719 @m_seki

ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ソフトウェア開発ライブ とちぎテストの会議出張版

プログラミングとテスティングと予定調和(仮)

!@miwa719

@m_seki

Page 2: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 3: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

とびだせ とちぎテストの会議 ソフトウェア開発ライブへ ようこそ

Page 4: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ぱちぱちぱちぱち

Page 5: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

とちぎテストの会議 コンテンツ委員係 みゎです

Page 6: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

とちぎテストの会議?

Page 7: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

とちぎテストの会議

通称とてか

#toteka!

!東那須野公民館 (那須塩原市)

!とてか03は今秋!

Page 8: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

こちらが 東那須野公民館です

Page 9: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

とてか02の テーマは「日常」 !

テストエンジニアの みなさんの 日常を 讃えあいました

Page 10: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

基調講演は 秋山さんの日常

Page 11: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

基調講演は 秋山さんの日常

Page 12: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

基調講演は 秋山さんの日常

Page 13: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ワールドカフェ

Page 14: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

関くんの いつもの開発を 再現した ソフトウェア開発ライブ

Page 15: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

カタカタカタ !

Page 16: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

カタカタカタ !

っターーン

Page 17: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 18: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

咳について

JaSST’04から参加

反復開発ネタ

!XP祭り2014

キーノート予定

Page 19: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

咳について

すこし世界的プログラマ

Pragmatic Programmers→

!プログラミングを担当します

Page 20: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

とてか開発ライブ

私のいつもの開発をちょっと再現します

Page 21: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

いつもの開発?

部品を積みあげるかわりに、タネのような小さなアプリケーションを育てます

!TDDとも似ています

!プログラミング、テスティング、仕様決めはだいたい同時にやります

Page 22: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

同時にやる?

仕様、設計、試験はお互いに影響します

!テーマに従ってそれぞれを具体化します

試験できる仕様を選んだり

実装によって試験を変えたり

実装が簡単な仕様にしたり…

Page 23: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

つくるもの !

このプログラムは、カードから3つの整数を読む。 この3つの値は、それぞれ三角形の3辺の長さをあらわすものとする。 プログラムは、三角形が不等辺三角形・二等辺三角形・正三角形のうちの どれであるかをきめるメッセージを印字する。 !このプログラムをテストするのに十分と思われる一連のテスト・ケース (すなわち、十分なデータのセット)を紙に書き記してみよ。

!(近代科学社「ソフトウェア・テストの技法」GLENFORD J. MYERSより)

Page 24: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

つくるもの

カードでなくWebUIを想定します

!フォームの三つの文字列から三角形を判定するメソッドをつくりましょう

on_OK(t1, t2, t3)

Page 25: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

このライブのやりかた

わたしがプログラムを書きます

!みなさんはテストケースをあげてください

三つの文字列と期待する結果

それに合わせてテストコード追加します

!これを数ターン繰り返します

Page 26: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 27: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

マイヤーズの三角形を もとに 小さな プログラムを つくります

Page 28: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

プログラムは Rubyで 書きます

Page 29: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

こんな 簡単な プログラムも 一気に書くのは たいへん

Page 30: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

いつも通り 小さな仕様から はじめて 少しづつ そだてましょう

Page 31: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

最初の★テーマ 文字列が 整数であることを 調べよう

Page 32: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

文字列が 整数なら「たぶん三角形」 そうでなければ「エラー」を 返してね

Page 33: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

整数かどうかの判定… 出そうなバグは なにかなー

Page 34: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 35: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

Integer(obj)

objを整数に変換する

objが文字列の場合、変換できなければ例外

接頭辞で基数を指定できる

空白は無視

変換できないものがあると例外

!だいたいうまく変換しちゃう!

Integer("123") => 123 Integer("aa") => ArgumentError Integer("0xFF") => 255 Integer(" ") => ArgumentError

Page 36: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 37: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ちょっと変更★ 正の整数だけにしよう

Page 38: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

正の整数の判定… !

みんな テストケースを 考えて!

Page 39: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 40: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ステップアップ★ 三角形かどうか調べよう!

Page 41: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

三辺の長さが三角形の条件にあえば「三角形」 そうでなければ「エラー」に して

Page 42: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

三角形なの?

三角形を成り立たせる3辺

a < b + c b < a + c c < a + b

Page 43: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

三角形かどうか… めんどくさいなー !

みんな テストケースを 考えて!

Page 44: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 45: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

最後の ターンに 進みます

Page 46: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ファイナル★ターン 三角形の種類も調べてみよう!

Page 47: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

「不等辺三角形・正三角形・二等辺三角形」を判定! 三角形じゃなかったら「エラー」

Page 48: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

三角形の判定とは

三角形の辺の長さが同じものはいくつ?

全部同じとき⇒正三角形

二つ同じ⇒二等辺三角形

全部違う⇒不等辺三角形

Page 49: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

三角形の種類よ! !

テストケースを 考えて!

Page 50: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 51: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

uniq.size

Arrayのuniqメソッド

重複する要素を除いた配列を返す

[1, 2, 3, 3, 4, 2, 1, 4, 3].uniq

[1, 2, 3, 4]

!uniqの結果の要素の数を調べると…

[1, 2, 3, 3, 4, 2, 1, 4, 3].uniq.size

4

[1, 2, 3, 3, 4, 2, 1, 3, 4].uniq => [1, 2, 3, 4]

[1, 2, 3, 3, 4, 2, 1, 3, 4].uniq.size => 4

Page 52: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

uniq.sizeで判定

[3, 3, 3].uniq.size ⇒ 1 : 正三角形

[2, 3, 3].uniq.size ⇒ 2 : 二等辺三角形

[2, 3, 4].uniq.size ⇒ 3 : 不等辺三角形

[a, b, c].uniq.size

Page 53: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 54: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

sort

もしかして並べ替えたらもっと簡単?

a, b, c = [a, b, c].sort c < a + b

Page 55: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版
Page 56: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

ぱちぱちぱちぱち

Page 57: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

今秋の とてか03で おまちしています

Page 58: ソフトウェア開発ライブ とちぎテストの会議出張版jasst.jp/symposium/jasst14tokyo/pdf/A4-1.pdf · ソフトウェア開発ライブ とちぎテストの会議出張版

つぎは パネルディスカッションです