見出し画像

第289回: 「ALTAのテキストをつくろう」44 (技法の組み合わせ)

◀前の記事へ 次の記事へ▶︎


≡ はじめに

前回は、「3. テスト技法」の「3.2 ブラックボックステスト技法」の「3.2.7 ユースケーステスト」の後編として、「ユースケーステストのカバレッジ、検出できる欠陥の種類」について書きました。

くどいかもしれませんが、ユースケーステストが「振る舞い」を確認するテストであることを抑えましょう。「振る舞い」は、英語の“Behavior”にあたります。
ソフトウェア開発では、“Behavior”は、「外から見えるシステムの挙動」のことをいいます。英語の“Attitude”も「態度・振る舞い」と訳される単語ですが、こちらは心理的な要素が強い大人向けの印象を持つ言葉です。

ということで、誰かの優雅な振る舞いや大人な態度を英語でほめるときには、“I like your attitude”といいましょう。
そんな機会は滅多に訪れないと思いますが。

前回の復習は以下で模擬試験問題の確認を通して行います。
今回はJSTQBのALTAシラバスの「3.2.8 技法の組み合わせ」について書きます。



≡ 前回の復習

以下は前回出題したJSTQB ALTAの模擬試験問題を𝕏にポストした結果です。


𝕏によるアンケート結果

投票の結果、選択肢2の「ある状況下で実際に起こるべきことに関する情報がないことや矛盾」が36.7%と最も多く、正解も2です。30票と少なく、正解率も低めなのでALTAの試験を受ける人は復習すると良いと思います。

それでは、2はどのテスト技法で検出できると期待する欠陥の種類かというと、デシジョンテーブルテストです。

前も似た問題を出しましたが、今回のテーマにも関係してきますので重要です。

それでは、今回のnoteのテーマに移ります。



≡ 技法の組み合わせ


JSTQBのALTAシラバスより該当箇所の全文を引用(太字筆者)します。

テストケースを作成するために技法を組み合わせることがある。例えば、デシジョンテーブルにて識別したある条件に対して、同値分割法にて1つの条件を満たす複数の方法を発見することができる。テストケースは、すべての条件の組み合わせをカバーするだけでなく、パーティションで分けられる条件については、同値パーティションをカバーするために追加のテストケースを生成すべきである。テストアナリストは、適用する特定の技法を選択する際に、その技法の適用可能性、制限や困難さ、カバレッジや検出すべき欠陥の観点からのテストのゴールといったことを考慮すべきである。これらの点については、本章で扱う個々の技法にて説明している。ある状況下では、単一の「最善」の技法は存在しないかもしれない。技法を正しく適用するための十分な時間とスキルがあると仮定すれば、技法を組み合わせることで、最も完全なカバレッジが得られる。

少しずつ読んでいきましょう。

テストケースを作成するために技法を組み合わせることがある。例えば、デシジョンテーブルにて識別したある条件に対して、同値分割法にて1つの条件を満たす複数の方法を発見することができる。

ここに書かれているデシジョンテーブルテストの条件についての同値分割というは、ちょっと分かりにくいかもしれません。

デシジョンテーブルの例(お酒はハタチになってから)

上記は、前に例に出した、デシジョンテーブルです。今回の「技法の組み合わせ」でシラバスは、「デシジョンテーブルにて識別したある条件に対して、同値分割法にて1つの条件を満たす複数の方法を発見することができる」と書いています。

「デシジョンテーブルにて識別したある条件」とは上のデシジョンテーブルで言えば、「年齢は20歳以上のY」、「年齢は20歳以上のN」、「年齢は20歳未満のY」、「年齢は20歳未満のN」です。

後半の「同値分割法にて1つの条件を満たす複数の方法を発見することができる」というのは、たとえば「年齢は20歳以上のY」という条件に対して同値分割法を適用することで「『年齢は20歳以上のY』という条件を満たす複数の方法を発見することができる」ということです。

具体的には、「20歳の誕生日の前日の24時丁度」と「20歳の誕生日以降」に同値分割して2つの同値パーティションをテストしても良いでしょう。

「20歳の誕生日の前日の24時丁度」は20歳です。

日本の法律では、「誕生日の前日の24:00:00」に年を取るとされているからです。(このように定義することで2月29日生まれの人の年齢が毎年1歳ずつ上がるようになります。
もしも法律で誕生日の00:00:00に歳をとると定めたら4年に1回しか歳を取らなくなります。)
なお、(普通の人にとって)「誕生日の前日の24:00:00」と「誕生日当日の00:00:00」は同じ瞬間です。

次に進みます。

テストケースは、すべての条件の組み合わせをカバーするだけでなく、パーティションで分けられる条件については、同値パーティションをカバーするために追加のテストケースを生成すべきである。

こちらは「技法の組み合わせ」の話から、デシジョンテーブルテストの条件の同値分割をする話を補足していますね。ちょっとこの部分を書いた人のやり方の好みが反映されているようです。全てのルールに対して実施するほうが良いケースとそうでないケースがありますので、「すべきである」は言い過ぎかなと思いました。

原文を確認しましょう。

Test cases would then cover not only every combination of conditions, but also, for those conditions which are partitioned, additional test cases should be generated to cover the equivalence partitions.

太字にしたshouldを「すべきである」と翻訳したのだと思うのですが、「必要がある」くらいの意味だと思います。

次に進みます。

テストアナリストは、適用する特定の技法を選択する際に、その技法の適用可能性、制限や困難さ、カバレッジや検出すべき欠陥の観点からのテストのゴールといったことを考慮すべきである。これらの点については、本章で扱う個々の技法にて説明している。

これまで、この連載でも、シラバスにそって、「定義」、「適用」、「制限/注意事項」、「カバレッジ」、「検出できる欠陥の種類」で小見出しをつけて説明してきましたが、それらを使って技法を選択しなさいということです。「技法の選択」の話なので、「技法の組み合わせ」以前の話です。

次(最後)に進みます。

ある状況下では、単一の「最善」の技法は存在しないかもしれない。技法を正しく適用するための十分な時間とスキルがあると仮定すれば、技法を組み合わせることで、最も完全なカバレッジが得られる

それぞれの技法が得意とするところ、カバーする範囲の知識とスキルを持ち、十分な時間をかければ、テスト技法を組み合わせることでどんなテスト対象であっても最も完全なカバレッジが得られると言っています。「最も完全なカバレッジ」が何かいまいちわかりませんので、原文を見てみます。

There may not be a single “best” technique for a situation. Combining the suitable techniques will often be the most effective way to achieve the test objectives set, assuming there is sufficient time and skill to correctly apply the techniques.

カバレッジ(coverage)という単語がないのでよくわからないのですが、太字部分を意訳したのでしょうか。直訳だと、こんな感じかと思います。

状況に応じた「最適な」技法が 1 つ存在するわけではありません。技法を正しく適用するのに十分な時間とスキルがある場合、適切な技法を組み合わせることが、テスト目標を達成する最も効果的な方法となることが多いものです。

うーん。英語が得意ではないからよくわからないのですが、だいぶニュアンスが違うような気がします。



≡ JSTQB ALTA試験対策

いつものことですが、まずは、「学習の目的」を確認します。

TA-3.2.8 (K4)発見される可能性のある欠陥の種類を判別し、適切なブラックボックステスト技法を選択するためにシステムまたはその要求仕様を分析する。

ALTAシラバス29ページ

「K4」なので「理解」して「適用」できるだけではなく「分析」まで求められる重要な項目ということです。
各技法の「定義」、「適用」、「制限/注意事項」、「カバレッジ」、「検出できる欠陥の種類」を整理しておくと良いかもしれません。

《問題》
 テスト技法を組み合わせる理由は何ですか。

1. 各テスト技法に不備があるため
2. 各テスト技法を補い合うため
3. バグゼロを実現するテストをつくるため
4. 同時にテスト技法を使うことでテスト工数を減らすため

答えは次回に書きます。



≡  おわりに

今回は、「技法の組み合わせ」がテーマでした。

テスト対象に最高な「技法の調合方法」があるのかもしれませんが、公式(モデル式)はないので、正解を追求することは難しいと思います。ということで、私がおすすめしたいのは、多少の無駄は覚悟のうえで「これまで出てきた全ての技法を使ってみる」です。

「これまで出てきた全ての技法」とは「同値分割法」、「境界値分析」、「デシジョンテーブルテスト」、「状態遷移テスト」、「クラシフィケーションツリー技法」、「ペアワイズテスト」、「ユースケーステスト」の7個です。

ベースとなる技法の、「同値分割法」、「境界値分析」、「クラシフィケーションツリー技法」を除けば、テストケースのまとまりを作る大規模な技法は、「デシジョンテーブルテスト」、「状態遷移テスト」、「ペアワイズテスト」、「ユースケーステスト」の4つです。

四の五の言わず、この4つの技法を用いてテストケースをつくってテストする経験を積むことが、一番の近道だと思います。

次回は、「3.3 経験ベースのテスト技法」について書きます。「技法」と呼んでよいのかちょっと疑問ですが。


この記事が気に入ったらサポートをしてみませんか?