BDKK SI Engineer

テスト設計技法を活用する


参考した内容 https://thinkit.co.jp/article/15366

テスト設計技法を活用する

はじめに

テストケースの設計では、「テスト設計技法」 が有用です。これは、「テスト対象に対してどのようにテストケースを作っていくか」 を技法として具体化したものです。

今回は、このテスト設計技法について、使いどころの見つけ方をテーマに解説します。

테스트케이스의 설계에서는 [테스트설계기법]이 유용합니다. [테스트대상에 대해 어던것처럼 테스트 케이스 작성해 갈까]을 기법으로써 구체화한 것이다.

이번 회는 이 테스트설계기법에대해서, 사용할 만한 것을 찾는 방법을 테마로 해설합니다.

-どころ : -해야 할[-할 만한] 곳;(생산의) 중심지;

テスト設計技法とは

テスト設計技法とは、「テストケースを作成したり選択したりするための技法」(ソフトウェアテスト標準用語集(日本語版))です。さまざまなテスト設計技法があるため一概に断定できませんが、おおよそ月の作業のすべて、または一部で構成されます。

1.モデル化。テストケースを作成できるようにテスト対象をモデル化します。モデルはデシジョンテーブル、状態遷移図、クラシフィケーションツリー、パラメータと値のリストといったものです。

2.網羅基準の設定。モデルをどれぐらい網羅するかの網羅基準を定めます。例えば、状態遷移図に対するnスイッチカバレッジ、制御フローに対するステートメントカバレッジといったものです。

3.テストケースの導出。モデルと網羅基準からテストケースを導出します。

テスト設計技法には多種多様なものがあります。主要な種類として、仕様からテストケースを作成する仕様ベースの技法、構造からテストケースを作成する構造ベースの技法、知識や経験を活用する経験ベースの技法などがあります。

-テスト設計技法を使用するメリットは次のとおりです。

・曖昧・複雑なものに対して、整理しながらテストケースを作成できる
・目的に沿ったテストケース(特定の組み合わせをテストで網羅するなど)を作成できる	
・テストベース(仕様書などテスト設計のインプット)の抜け漏れ・不整合を見つける。テストベースの理解を助ける
・議論や教育といったコミュニケーションを支える

테스트설계기법은, [테스트케이스을 작성하거나 선택하거나 하기 위한 기법]입니다. 여러가지 테스트 설계기법이 있기떄문에 일률적으로 단정할수는 없습니다만, 대강 다음의 작업 전체 또는 일부로 구성됩니다.

  1. 모델화. 테스트케이스를 작성할수 있도록 테스트 대상을 모델화합니다. 모델은 Decision테이블, 상태전이도, Classification Tree, 파라메터와 값의 리스트라는 것이다.
  2. 망라기준의 설정. 모델을 어느정도 망랑할까의 망라기준을 정합니다. 예를들면, 상태전이도에 대한 N-switch coverage, 제어플로에대한 statement coverage라는 것이다.
  3. 테스트케이스의 도출. 모델과 망라기준에서 테스트케이스을 도출합니다.

테스트설계기법에는 다종다양한 것이 있습니다. 주요한 종류에 있어서, 사양에서 테스트케이스를 작성하는 사양베이스의 기법, 구조에서 테스트케이스를 작성하는 구조 베이스의 기법, 지식이랑 경험을 활용하는 경험 베이스의 기법등이 있습니다.

-테스트설계기법을 사용하는 메리트는 다음과 같다.

・애매/복잡한것에 대해서, 정리하면서 테스트을 작성할 수 있다.
・목적에 따랐던 테스트케이스(특정의 조합으로 망라하는 등)을 작성 할 수 있다.
・테스트베이스(사양서등 테스트설계의 import)의 누락,부정합을 발견하다. 테스트베이스의 이해를 돕다.
・의론이랑 교육이라는 커뮤니케이션을 지탱하다.


一概に : 일률적으로;몰아;일괄적으로
おおよそ : 대강;대략;대체로
デシジョンテーブル : decision(결심, 결정, 해결, 판결, 판정)	
状態遷移図 : 상태전이도
網羅 : 망라;もうら
制御 : 제어;せいぎょ
曖昧 : 애매;あいまい
沿う : 따르다;어떤물건의 주위에 있다.

テスト設計技法とは

テスト設計技法として一般的なものを表に示します。なお、今回は紙面の制約上、それぞれの技法の詳細は解説しませんが、各技法の定番と言える入門文献を付記します。

테스트설계기법으로써, 일반적인 것을 표에 표시합니다. 한층 더, 종이면의 제약상, 각각의 기법의 상세는 해설되지 않지만, 각 기법의 기본이라고 할 입문 문헌을 부기합니다.



付記 : 부기;덧붙여 쓰다.
直交 : 직고;ちょっこう

-仕様ベースの技法一覧

技法名 概要
同値分割法 入出力関係性に基づいて、入力の条件グループにまとめる
  동치분할법 입출력관계성에 기초로해서, 입력의 조건 그릅을 정리한다.
境界値分析 数値の境界を識別し、境界に対するテストケースを作成する
경계치분석 수치의 경계을 식별하고, 경계에 대한 테스트케이스를 작성한다.
デシジョンテーブルテスト 条件の組み合わせの相互作用をデシジョンテーブルで整理し、それを網羅するテストケースを作る
decision table test 조건의 조합의 상호작용을 디시젼테이블에서 정리하고 그것을 망라하는 테스트케이스를 만든다.
原因結果グラフ法 仕様の論理構造を原因結果グラフで整理し、それを網羅するテストケースを作る
원인결과그래프법 사양의 논리구조을 원인결과 그래프로 정리하고, 그것을 망라하는 테스트케이스를 만든다.
状態遷移テスト 状態遷移を状態遷移図・表で整理し、それを網羅するテストケースを作る
상태전이테스트 상태전이를 상태전이도, 표로 정리하고 그것을 망라하는 테스트케이스를 만든다.
直交表 直交表を使って、2つのパラメータ間の組み合わせを全網羅するテストケースを作成する
직고표 직교표를 사용해서, 2가지의 파라메터사이의 조합을 전망라하는 테스트케이스를 작성한다.
オールペア法 ツールを使って、2つのパラメータ間の組み合わせを全網羅するテストケースを作成する
all pair 툴을 사용해서,2가지의 파라메터 사이의 조합을 전 망라한 테스트 케이스를 작성
nワイズテスト ツールを使って、任意のn個のパラメータ間の組み合わせを全網羅するテストケースを作成する
n-wise testing 툴을 사용해서, 임의의 n개ㅡ이 파마리터 사이에 조합해 전망라 하는
ドメイン 関係性のある複数の入力変数を同時にテストする場合で、それぞれの入力変数の条件判定を網羅するテストケースを作成する
도메인 관계성에에 있는 복수의 입력 변수을 동시에 테스트하는 경우에서, 여러 입력 변수의 조건을 판정을 망라하는 테스트 케이스 작성한다.
クラシフィケーションツリー法 入力条件をクラシフィケーションツリーで整理し、それを網羅するテストケースを作成する
Classification Tree 입력조건을 Classification Tree에서 정리하고, 그것을 망라할 입력 케이스를 작성
ユースケーステスト 仕様をユースケースで整理し、それを網羅するテストケースを作成する
유즈케이스테스트 사양 테스 코스트을 정리하고, 그것을 망라하는 테스트 케이스를 작성한다.

-構造ベースの技法一覧

技法名 概要
制御フローテスト 処理の流れを制御フローで整理し、それを網羅するテストケースを作成する。条件テスト、判定条件テストなどはこの技法に含まれる
  제어흐름테스트 처리의 흐름을 제어플로로 정리하고, 그것을 망라하는 테스트케이스를 작성한다. 판정조건테스트등은 이 기법에 포함된다.
データフローテスト データの状態をデーターフローで整理し、それを網羅するテストケースを作成する
데이터흐름테스트 테이터의 상태을 데이터흐름으로 정리하고, 그것을 망라하는 테스트케이스를 작성

-構造ベースの技法一覧

技法名 概要
エラー推測 エラーを推測し、その存在を確認するテストを行う
에러추측 에러를 추측하고, 그 존재을 확인하는 테스트를 행한다.
チェックリストベースドテスト テストの目的に沿ってチェックリストを作成し、そのチェック項目ごとにテストを行う
체크리스트베이스드테스토 테스트의 목적에 따라 체크리스트를 작성하고 그 체크항목마다 테스트를 행한다.
探索的テスト テストを実施して得られたフィードバックを活かしながら、テストの作成・実施を一緒に進める
검색적테스트 테스트을 실시하고 얻어진 피드백을 활용하면서 테스트의 작성 / 실시을 함께 진행한다.

ごとに, たびに, おきに : 마다

## テスト設計技法を選択する

テスト設計技法を活用するには、適材適所での技法の選択が重要となります。

まず、テスト設計技法は、組み合わせ、状態遷移、制御フローなど、特定のモデルに特化してテストケースを作成します。そのため対象と相性の良いモデルの種類に合わせて、技法を選択する必要があります。

次に、テスト設計技法はそれぞれ強み・弱みがあります。効率良く・適切にテストを設計するためには、強みを発揮できるテスト設計技法を選択します。

適切なテスト設計技法の選択は、次の3つのすり合わせを行って判断します。

1.テスト対象の情報。組み合わせか、状態遷移かなど
2.どこまでテストすべきか」の十分性。品質リスクをどこまで抑えたいか、テスト対象をどこまで網羅したいか
3.「どこまでテストを作成・実施できるか」の実現性。チームのスキルレベル、自動化のフィージビリティ、使える時間、テスト対象の情報の誤り・抜けをどこまで補正できるかなど

これらを、テストの要求や制約の分析を通して明らかにしていきます。

また、これらを相互に調整して、望ましいテストを目指していきます。例えば「テストの十分性要求の達成が困難なため、チームのリソース増強やテスト技術向上を行う」「テスト対象の情報が不足してテストの十分性を考えられないので、ドキュメントの補強を働きかける」といったものです。

技法を選択する例として、クラシフィケーションツリー法の採用判断を示します。クラシフィケーションツリー法の強みは次のとおりです。

1.「テスト対象の情報」に関する強み
	-組み合わせの条件を分析できる
	-複雑なテスト入力条件をツリーで分かりやすく分析できる
2.「どこまでテストすべきかの十分性」に関する強み
	-テスト条件を漏れなくダブりなく抽出しやすい
	-具体化・抽象化が得意。全体を俯瞰しながらテスト条件を分析できる
	-組み合わせテストのさまざまな網羅基準に対応できる

一方、テストに対し、次のような要求や制約があるとします。

1.環境構成の機能性をテストしたい
2.対象の環境構成は条件が複雑で、組み合わせが多数ある
3.ドキュメントは整理されておらずわかりにくい。補完・整理する必要がある

この場合では、組み合わせを扱うほか、クラシフィケーションツリー法の強みを活かせる状況であるため、テスト設計技法として採用可能と判断できます。

테스트설계기법을 활용하기에는 적재적소에서의 기법의 선택이 중요하게 됩니다.

우선, 테스트설계기법은, 조합, 상태전이, 제어흐름 등, 특정 모델에 특화해서 테스트 케이스를 작성합니다.
그 때문에 대상과 상성이 좋은 모델의 종류에 맞춰, 기법을 선택할 필요가 있습니다.

다음에 테스트설계기법은 각각 강점, 약점이 있습니다. 효율 좋고/적절하게 테스트를 설계하기 위해서는 강점을 발휘할수 있는 테스트 설계기법을 선택합니다.

적절한 테스트설계기법의 선택은, 다음 3개중 조정해서 이행해 판단합니다.
	
	1. 테스트대상의 정보, 조합시키나, 상태전이인가 등
	2. [어디까지 테스트하는 해야하는가]의 충분성. 품질리스크을 어디까지 억제하고 싶은가, 테스트 대상을 어디까지 망라하고 싶은가?
	3. [어디까지 테스트를 작성/실시할수 있을까]의 실현성. 팀의 스킬레벨, 자동화의 feasibility, 사용할 수 있는 시간, 테스트대상의 정보의 오류/누락을 어디까지 보정 할 수 있는가 등

이것을 테스트의 요구랑 제약의 분석을 통해서 명확하게 해갑니다.

또, 이것을 상호에 조정해서, 바람직한 테스트를 지향해 갑니다.
예를 들면, [테스트의 충분성 요구달성이 곤란하기 때문에 팀의 자원증강과 테스트기술지향을 시행한다.],[테스트대상의 정보가 부족하고 테스트의 충분성을 파악할수 없기 때문에, 문서의 보강을 작용하다] 라고 말하는 것이다.

기법을 선택하는 예로써는, 동급분류트리법의 채용판단을 표시합니다. 등급분류트리법의 강점은 다음과 같습니다.

	1.[테스트대상의 정보]에 관한 강점
		-조합의 조건을 분석할수 있다.
		-복잡한 테스트입력조건을 트리형식으로 알기쉽게 분석 할 수 있다.
	2.[어디까지 테스트해야할까의 충분성]에 관한 강점
		-테스트조건을 빠짐없이 중복없이 추출하기 쉽다.
		-구체화/추상화가 장점. 전체을 내려보면서 테스트조건을 분석할 수 있다.
		-조합테스트의 여러 망라기준에 대응 할 수 있다.

한편 테스트에 대해, 다음과같이 요구랑 제약이 있다고 합니다.

	1.환경구성의 기능성을 테스트하고싶다.
	2.대상의 환경구성은 조건이 복잡해서, 조합이 다수이다.
	3.문서는 정리되지 않고 알기 위렵다. 보완, 정리하는 필요가 있다.

이 경우에는 조합을 취급외, 등급 분류 트리법의 강점을 살리는 상황이기위해, 테스트 설계기법으로써 채용가능하다고 판단 할 수 있다.
	
	
それぞれ : 각각
すり合わせ : 각각의 의견을 도출해서 조정하는 것;	
フィージビリティ: feasibility;실행할 수 있음;실행가능성
望ましい : 바람직하다
困難 : 곤란
働きかける : 작용하다
クラシフィケーションツリー : 등급 분류 트리;同級分類ツリー
漏れる : 빠지다;세다;누락되다
ダブり : 중복;겹침
抽出 : 추출;ちゅうしゅつ
俯瞰 : 내려보다;부감하다;언덕에서 내려보다;ふかん;구부릴 부, 굽어볼 감
ほか : 외;扱うほか(취급 외)

내용상 번역을 해보았지만 역시나, 어휘부족으로 매끈하게 번역할 수 없고 오역이 있다고 느껴집니다.

오늘은 여기까지.


Comments

Content