Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

マインドマップでテスト観点を出そうというけど… 会社の講義などで、マインドマップを使ってテストすることを挙げてみよう、ということをお 伝えすることが多いです。 その話の後はだいたい「どんな風にテストすることを出していけばいいかわからない!」 「仕様を書いてあることしか出ません」という人が結構いらっしゃいます。 今回は、サンプルアプリを一つ用意して、それに対して僕が実際にマインドマップを描 いていました。 その時に何を考えてどうマインドマップを描いていったか説明します!

Slide 3

Slide 3 text

お題。テスト観点のマインドマップを書いてみよう 割り勘アプリを開発します。 「合計金額」と「割り勘したい人数」から一人当たりの金 額と不足金額(割り切れなかった分のお金)を出します。 「金額を固定したい人数」は、例えば遅れてきた人は 1000円ね、としたい場合に使用します。 割り勘アプリ 合計金額 円 割り勘したい 人数 人 金額を固定 したい人数 人 固定する金 額 円 計算 一人の金額  ______________円 不足金額   ______________円

Slide 4

Slide 4 text

項目名 桁数 内容 合計金額 半角6桁 合計金額。最低金額は 0円 割り勘したい人数 半角2桁 割る人数。最低1人 金額を固定したい人数 半角2桁 割り勘に含めず固定した金額を払う人数。未入力の場合 0として扱う 固定する金額 半角6桁 固定した金額を払う人が払う金額。金額を固定したい人数が未入力の 時は非アクティブ。 計算ボタン ー 押すと一人当たりの金額と不足額を計算する 一人の金額 半角6桁 割り勘した一人当たりの金額。カンマ区切り。 不足金額 半角6桁 割り勘したときのあまりの金額

Slide 5

Slide 5 text

まずは皆さん自身で 考えてみてください

Slide 6

Slide 6 text

では僕がどのように マインドマップでテストするこ とを出していったか 説明していきます

Slide 7

Slide 7 text

とりあえず仕様にある機能を書きだす (今回は項目)

Slide 8

Slide 8 text

入力ボックス系はまとめるか ……

Slide 9

Slide 9 text

普通の割り勘と固定がある場合のパ ターンがあるからわけておこう

Slide 10

Slide 10 text

仕様をとりあえず書き出してみた

Slide 11

Slide 11 text

半角2桁ということは99人までっ てことだよね つまり1~99ね つまり0~999,999ね

Slide 12

Slide 12 text

こういう範囲を見ると同値分割が 思い浮かぶよね

Slide 13

Slide 13 text

有効同値があるなら無効同値も あるよね! あれ!?そういえばエラーどうす るの? 企画に聞かなきゃ

Slide 14

Slide 14 text

整数について考えてたな …。 なら整数じゃないというのもあるわ けだ

Slide 15

Slide 15 text

整数じゃないのも色々種類があるよ ね type=numberだとしたら自然対数e も入るのよね カンマまで入力する人いそう … ガイドワードの「無」 無にもスペース入力と nullがあるよね

Slide 16

Slide 16 text

合計金額も人数入力と一緒だけど合計金 額は0もいけるという違いあり。 0にはプラスの0とマイナスの0があるかも …… 「同じ入力だから同じ観点!」とやると痛い 目に合うときも!

Slide 17

Slide 17 text

普通の割り勘の全体像

Slide 18

Slide 18 text

入力を6桁できるという実装なら問題はないけ ど、コードで処理などになっているとやっかいか も。 もし内部的にエラーになっていたら 2回目の計 算が動かないことも……! 意地悪を考えてみるか

Slide 19

Slide 19 text

思い浮かんだ疑問は一つのブランチにまとめる こともしばしば 10円チョコを100人で買ったらどうするんだろ う?

Slide 20

Slide 20 text

この疑問部分はテストしておいた 方がいいな

Slide 21

Slide 21 text

あ……普通に割り切れた場合と割り切れない場 合で見たほういいよね

Slide 22

Slide 22 text

普通の割り勘の全体像

Slide 23

Slide 23 text

入力パターンのテストは普通の割 り勘と一緒、と考えたことを書いて おく

Slide 24

Slide 24 text

未入力で非アクティブなら 入力でアクティブだよね あれ?じゃあ、固定したい人数が 向こうの値だったらアクティブ?非 アクティブ?

Slide 25

Slide 25 text

疑問まとめブランチにも書いておく。企画 にどうしたいか聞くか ……

Slide 26

Slide 26 text

じゃあさらに、アクティブにして入力して から非アクティブにしたらどういう挙動 になるの??

Slide 27

Slide 27 text

意地悪テストとしてやっておくか。 表示も気になるし計算結果に反映されな いかも気になるな

Slide 28

Slide 28 text

他に意地悪テストは ……。 そういえば合計金額 1000円だったとして固定が 4人で 500円で合計超えちゃったパターンはどうなるんだろ う?

Slide 29

Slide 29 text

普通の割り勘と固定の連携も見なきゃい けないじゃん。 パターンは「普通のみ」「固定のみ」「普通 と固定」の3パターンあるか 固定のみは割り勘じゃないし計算できない気がする けど、どう動くんだ? 合計金額があると計算処理が走って 0円とか??

Slide 30

Slide 30 text

今までのことを簡単に記載しとく

Slide 31

Slide 31 text

固定金額*固定人数が合計を超える場合があるな ら超えない場合もあるわけで。 超えない場合でも「普通の割り勘」で割り勘結果が 1 円切っちゃう場合もあるんじゃない?

Slide 32

Slide 32 text

固定部分とパターンの全体像

Slide 33

Slide 33 text

パターンのブランチ参照に 全部空の状態で押したら全項目でエ ラーが出ちゃったり? 入力ボックスでエンターすると計算され る系?企画に聞くか …

Slide 34

Slide 34 text

メモメモ……

Slide 35

Slide 35 text

ボタンを押してから計算結果が出るま で時間かかったらイヤだな

Slide 36

Slide 36 text

ターンアラウンドタイムは性能テストという ことで別ブランチを作っておくか

Slide 37

Slide 37 text

途中で内部エラーが出るとリロードしない と計算できなくなったりするよね

Slide 38

Slide 38 text

出力が最小のときと最大は確認しておき たい カンマ表示が出るとき、出ないときの確認 は必要そう 不足金額は割り切れないとき。 6桁の素数が出ることなんてなさそう

Slide 39

Slide 39 text

最大表示の時に画面からはみ出したり 改行されたりしないよね !?

Slide 40

Slide 40 text

スマホ…と考えると互換性のブランチを 作っておくか 対応OS/ブラウザはどうするんだろ? これテスト工数に直結するんだよな …

Slide 41

Slide 41 text

ブラウザ…と考えると別ブランチを作って おくか ブラウザの「戻る」と「リロード」はやっかい だよね

Slide 42

Slide 42 text

そういえば割り切れなかった場合の処理 は、切り捨て/切り上げ/四捨五入のどれ?

Slide 43

Slide 43 text

これで切り上げられたら、切り上げ処理に なっている これで切り捨てられたら、切り捨て処理に なっている .4で切り捨てられている& .5で切り上げら れているなら四捨五入処理

Slide 44

Slide 44 text

計算結果/互換性/ブラウザ全体像

Slide 45

Slide 45 text

全体お披露目