PICT 툴 - Pair-Wise 케이스 생성 프로그램
PICT란
pair-wise 기법에 의해 여러가지 조건 조합을 생성해주는 툴
Pair-Wise 기법이란
http://www.pairwise.org/
위 사이트에 잘 정리되어 있다. 자세한 설명은 생략한다….
PICT 설치하기
위 pairwise.org 사이트 메인화면에서 Available Tools 링크로 들어가면 Pair-wise 조합 생성 프로그램 리스트를 볼 수 있다.
이 중에 PICT를 다운받아 설치하면된다.
기본 경로로 설치했다면 아래와 같이 C:\Program Files (x86)\PICT 폴더에 pict.exe 파일을 찾을 수 있다.
설치과정에서 환경변수가 정상적으로 등록이 되었다면 cmd창에서 아무 경로에서나 pict 를 입력하면 위 화면과 같이 뜬다.
※ 제대로 환경변수가 등록이 되지 않았다면 pict가 설치된 곳에서 사용하던가, pict 실행파일을 복사해서 사용하고자 하는 위치로 옮긴 후 사용해야 한다.
사용법
d:\temp 폴더에 a.txt 파일을 생성한다.
a.txt 파일에 아래와 같이 입력한 후 저장 (조건들을 지정하는 부분)
동작모드: 순차,순차반복,1곡,1곡반복,셔플
설정: Hold,착신,슬라이드,캡션
이퀄라이저: Off,Live,Wide,Mild,Pro
cmd창에서 d:\temp 폴더로 이동한 상태에서 아래와 같이 입력한다.(물론 파일의 경로를 모두 적어주면 해당 폴더로 이동하지 않고도 실행시킬 수 있다.-환경변수 등록이 정상적으로 되었다면…)
- pict 실행 형식
pict 조건입력파일.txt > 출력파일.txt
이렇게 실행시키면 해당 폴더에 a_result.txt 파일이 생성되고 이 파일이 바로 조합 출력 파일이다.
해당 파일의 내용을 살펴보면 아래와 같다.
전체 선택 후 엑셀로 붙여넣기 하여 사용하면 편리하다.
조건 파일 생성 시 아래의 문법을 사용하여 제약 조건을 추가로 만들어 줄 수 있다.
상황에 맞게 사용하면 좀 더 효율적이고 효과적인 테스트 케이스를 생성하는데 도움이 된다.
※ 추가 제약이 없이도 충분히 좋은 기법이긴 하다.
문법 사용 예제
■ IF, THEN
Type: Primary, Logical, Single, Span, Stripe, Mirror, RAID-5
Size: 10, 100, 500, 1000, 5000, 10000, 40000
Format method: quick, slow
File system: FAT, FAT32, NTFS
Cluster size: 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536
Compression: on, off
IF [File system] = "FAT" THEN [Size] <= 4096; #File system이 FAT 일경우 Size는 4096 이하이어야 함
IF [File system] = "FAT32" THEN [Size] <= 32000; #File system이 FAT32 일경우 Size는 32000 이하이어야 함
■ LIKE
[File system] like "FAT*" #LIKE is a wildcard-matching operator (* - any character, ? – one character)
■ IN
IF [Cluster size] in {512, 1024, 2048} THEN [Compression] = "Off"; #Cluster size 가 512, 1024, 2048일 경우 Compression은 Off
IF [File system] in {"FAT", "FAT32"} THEN [Compression] = "Off"; #File system 이 FAT, FAT32 일 경우 Compression은 Off
■ IF, THEN, ELSE 에서 logical operators
NOT, AND, OR
IF [File system] <> "NTFS" OR #File system 이 NTFS 가 아니거나
( [File system] = "NTFS" AND [Cluster size] > 4096 ) #File system 이 NTFS 이면서, Cluster size 가 4096 보다 클 경우
THEN [Compression] = "Off"; #Compression 은 Off
IF NOT ( [File system] = "NTFS" OR #오른쪽 괄호 내용이 아니면("File system 이 NTFS" 또는 "File system 이 NTFS 이면서 Cluster size 가 4096 이하가 아닌")
( [File system] = "NTFS" AND NOT [Cluster size] <= 4096 ))
THEN [Compression] = "Off"; #Compression Off
■ 매개 변수 비교
#
# Machine 1
#
OS_1: Win2000, WinXP
SKU_1: Professional, Server, Datacenter, WinPowered
LANG_1: EN, DE
#
# Machine 2
#
OS_2: Win2000, WinXP
SKU_2: Professional, Server, Datecenter
LANG_2: EN, DE
IF [LANG_1] = [LANG_2] #매개 변수 LANG_1 과 매개 변수 LANG_2 가 같다면
THEN [OS_1] <> [OS_2] AND [SKU_1] <> [SKU_2]; #OS_1, OS_2가 서로 다르면서 SKU_1, SKU_2도 서로 달라야 한다.
■ 무조건 제약
[OS_1] <> [OS_2] or [SKU_1] <> [SKU_2] or [LANG_1] <> [LANG_2]; #OS_1,2 가 다르거나 SKU_1,2 가 다르거나 LANG_1,2 가 달라야 한다.(최소한 하나 이상 달라야 한다.)
[OS_1] <> [OS_2] and [SKU_1] <> [SKU_2] and [LANG_1] <> [LANG_2]; #OS_1,2 가 다르고 SKU_1,2 가 다르고 LANG_1,2 가 달라야 한다.(모두 달라야 한다.)
■ 매개 변수 유형
숫자 매개 변수는 숫자만 비교할 수 있고, 문자열은 문자만 비교할 수 있다.
Size: 1, 2, 3, 4, 5
Value: a, b, c, d
IF [Size] > 3 THEN [Value] > "b"; #Size 가 3보다 크면 Value 는 b보다 크다(c,d)
■ Aliasing
하나의 값에 여러개의 이름을 지정할 수 있다.
Aliasing은 조합 복잡도에는 관여하지 않으며(테스트케이스가 증가하지 않음)
해당 값(여러개의 이름을 가진)이 들어가는 자리에 여러개의 이름을 로테이션시키며 대입시킨다.
조건 식에 Aliasing 값 이름을 대입시킬 경우 가장 앞에 있는 이름만을 사용할 수 있다.(/a: 옵션으로 모두 사용 가능)
#
# Machine 1
#
OS_1: Win2000, WinXP
SKU_1: Professional, Server|AdvServer, Datacenter, WinPowered #Server|AdvServer 두개의 이름으로 Aliasing
LANG_1: EN, DE
#
# Machine 2
#
OS_2: Win2000, WinXP
SKU_2: Professional, Server|AdvServer, Datecenter
LANG_2: EN, DE
#
# WinXP is always Professional in our case
#
if [OS_1] = "WinXP" then [SKU_1] = "Professional";
if [OS_2] = "WinXP" then [SKU_2] = "Professional";
#
# No German WinPowered
#
if [SKU_1] = "WinPowered" then [LANG_1] = "EN";
#
# Let’s not test the same OS on both sides
#
[OS_1] <> [OS_2];
■ 가중치
가중치에 비례해서 TC에 자주 등장하는 것은 아님
TC에서 가장 적은 수를 가진 1차적으로 선택
TC에 균등하게 분포되어 있으면 가중치 비교
#
# Let’s focus on primary partitions formatted with NTFS
#
Type: Primary (10), Logical, Single, Span, Stripe, Mirror, RAID-5
Format method: quick, slow
File system: FAT, FAT32, NTFS (10) #NTFS가 FAT,FAT32 보다 10배 자주 나온다는 것은 아님
■ Seeding
꼭 포함시킬 TC를 지정 (빈 매개변수 입력 가능)
- 중요한 TC를 지정할 때 사용
- 이전 TC를 기반으로 추가할 때 기존에서 크게 변경 시키고 싶지 않을 때 사용
Seeding file tamplate example
Hours AMPM Day Month
12 AM Thursday January
7 Saturday February
AM March
Seeding file 사용 시 옵션 사용 : /e:file
…. 음 Seeding은 자세한 사용법을 잘 모르겠음….
■ Model to Test Hardware Configurations
#
# Different machine configurations
#
PLATFORM: x86, ia64, amd64
CPUS: Single, Dual, Quad
RAM: 128MB, 1GB, 4GB, 64GB
HDD: SCSI, IDE
OS: NT4, Win2K, WinXP, Win2K3
IE: 4.0, 5.0, 5.5, 6.0
#
# Separate sub-models for hardware and software parameters make the hardware
# configurations less variant lowering the cost of assembling the machines
#
{ PLATFORM, CPUS, RAM, HDD } @ 2
{ OS, IE } @ 2
#
# Constraints may cross sub-model boundaries; here OS depends on PLATFORM
#
IF [PLATFORM] in {"ia64", "amd64"} THEN [OS] in {"WinXP", "Win2K3"};
#
# Constraints on parameters in the same sub-model are also fine
#
IF [PLATFORM] = "x86" THEN [RAM] <> "64GB";
Constraints Syntax Examples
Constraints :: =
Constraint
| Constraint Constraints
Constraint :: =
IF Compound THEN Compound ELSE Compound;
| Compound;
Compound :: =
Clause
| Clause LogicalOperator Compound
Clause :: =
Term
| ( Compound )
| NOT Compound
Term :: =
ParameterName Relation Value
| ParameterName LIKE PatternString
| ParameterName IN { ValueSet }
| ParameterName Relation ParameterName
ValueSet :: =
Value
| Value, ValueSet
LogicalOperator : :=
AND
| OR
Relation :: =
=
| <>
| >
| >=
| <
| <=
ParameterName : := [String]
Value :: =
"String"
| Number
String :: = whatever is typically regarded as a string of characters
Number :: = whatever is typically regarded as a number
PatternString : := string with embedded special characters (wildcards):
* a series of characters of any length (can be zero)
? any one character