業務状態遷移テストを語る夕べ
秋山さんのターン。
今日のテーマは業務状態遷移テスト。
ユーザー受入テスト(FXではATといっている)
今日は秋山さんの考えを一方的に語る。
このようなことを考えている人もいるなあと思っていただければ。
■動機
網羅型の業務テスト
受け入れテストは好きにしてくれが多い。
でも、網羅したい。
HAYST法を説明していると、HAYST法には自分たちがやりたいことが、ひとつも出てこない。といわれる。
パターンは二つある。
・きわどい業務フローをしたい。
満期通知をしている最中に特約条件を変える、などのテストをしたい。
→ 秋山さんは、どんどんそういうテストを挙げてください。そういうテストをやるといいですよ。
→ お客さんは、2機能間の組合せテストでバグがほとんどでるんでしょ。といわれる。
・ありえないテストがでてくる。
18歳で認知症とかの組合せがHAYST法ででてくる。
→ 秋山さん、どうしてその組合せの入力を許しているんですか?禁則を実装すればいいじゃない
→ お客さん、実装の手間がある。全部作るのか、と説教される。
→ 秋山さん、絶対に18歳で認知症の人はいなんですか?
→ いるけれども、少ない。リスクの概念を知らないのでは。少ないからバグがでてもいいんだという。
→ 秋山さん、それでもひっぱると、お客さんは秋山さんが言うならばやりますよってなる。
お客さんは入力の数が多い画面のテストでしか使えないのではないか。
きわどい条件でバグがでそうなところをテストしたい
→ 業務状態遷移テストが当てはまるのではないかと思う。
HAYST法は網羅的な手法、お客様が求めている検出型の手法を知るといいんじゃないか。
「きわどい条件で、バグがでそうなところ」をテストしたい。
二つがある。大切なのは、現実的な工数で高い品質を達成する
現実的な世界でものを出していく。
■状態とは
状態が遷移しないソフトウェアはある。合計値を求めるソフトウェアがあるとしたら、これは状態遷移をしない。
日本でもアメリカでも、負荷が高いときでも、結果は変わらない。
状態が遷移するソフトウェア
ATM:ハッピーパス(通常のテストケース)10万円の残高があれば10万円引き出せる。
3万は引き出せないけれども、定期預金に1千万円あれば引き出せる(自動ローンとして)
状態によって違う。
状況によって、結果が違う。
このケースでは、残高と定期預金の組合せが状況。
状態とは状態変数の組合せだけれども、開発者によっては、「データやイベントのガード条件が同じ」を状態と定義する。
購入できないというガードから購入できるというガードに変わる。
このようなガード条件でみると開発者は楽。だから、こういう定義もある。
テストの人には、状態変数の組合せで考えるとよいかも。
■業務状態遷移
■機能を気にする。
秋山さんは原因と結果の因果関係が分かるものを機能という
■順序
受入テストでは順場が中心。(秋山さんの仕事では)
・入力するものが届く順序が人によって異なる。このあたりは開発者のテストでは分からない
・訂正というのがある。後から発生するものがある。承認者を変えるとか。
HAYST法では、導入してよい業務を確定したい。
→ 仕様の中では全部導入しようとなっているけれども、HAYST法では使わないものをUATで決める。
人間系で回避できればOKとしている。
→ ユーザー受入テストのところで計画している。
■事態
本番環境(開発環境と本番環境の違い、データ量、データバリエーション)
異常事態(ノイズ、CPU負荷をかける(時間)、資源負荷=リソース)
本番環境は一年後を見る。
★組込みの場合
秋山さんは技法主導ではなく、問題主導。
技法を適用しようではなく、問題を見つけて、問題を消そうというアプローチを考える。
ただいま事例紹介中
内部情報はラルフチャートで書く。
内部情報を扱ったら、今回の問題は解消できるのではないか。
1つのカタマリで発生する不具合がある。
あるまとまりの中で関係しそうなまとまりのなかで閉じた不具合がある。
プリンタードライバーの中に閉じたバグ。
印刷の中で閉じたバグ。
部品の中だけで発生するバグ。
これはいろいろな研究がある。
論文のラルフチャートのfが共有している。
ラルフチャートの組合せ(状態と状態の共有)
質問:機能Aと機能Bの状態を共有といいうけれども、
機能Aが状態として保有されていたとしても、機能Bとしたら入力とみなせないか?
→ 状態として明確にもっているものは、状態をみる。
機能Aと機能Bの状態の共有は、前後関係がない。
機能Bの入力としてみなす場合は、順序がある。
機能の全組合せを考えるのか?
全機能に対してツールに入力して、ツールが探してくれる。
4つの不具合パターンはどれが多いですか?
ノイズをちゃんと入れる人が少ないので、それ以外の3つは偏りなく発生している。