Programtriangle2‘Structuredprogrammingversionofsimplerspecification
Dima,b,cAsInteger
DimIsATriangleAsBoolean
‘Step1:
GetInput
Output(“Enter3integerswhicharesidesofatriangle”)
Input(a,b,c)
Output(“SideAis”,a)
Output(“SideBis”,b)
Output(“SideCis”,c)
‘Step2:
IsaTriangle?
If(a
ThenIsATriangle=True
ElseIsATriangle=False
Endif
‘Step3:
DetermineTriangleType
IfIsATriangle
ThenIf(a=b)AND(b=c)
ThenOutput(“Equilateral”)
ElseIf(a≠b)AND(a≠c)AND(b≠c)
ThenOutput(“Scalene”)
ElseOutput(“Isosceles”)
Endif
Endif
ElseOutput(“NotaTriangle”)
Endif
(2)设计Nextdate函数的程序//1912-2112
ProgramNextDate1‘Simpleversion
‘
DimtomorrowDay,tomorrowMonth,tomorrowYearAsInteger
Dimday,month,yearAsinteger
‘
Output(“Entertoday’sdateinformMMDDYYYY”)
Input(month,day,year)
Casemonthof
Case1:
monthIs1,3,5,7,8,Or10:
’31daymonths(exceptDec.)
Ifday<31
ThentomorrowDay=day+1
Else
TomorrowDay=1
TomorrowMonth=month+1
Endif
Case2:
monthIs4,6,9,or11’30daymonths
Ifday<30
ThentomorrowDay=day+1
Else
TomorrowDay=1
TomorrowMonth=month+1
Endif
Case3:
monthis12:
’December
Ifday<31
ThentomorrowDay=day+1
Else
TomorrowDay=1
TomorrowMonth=1
Ifyear=2012
ThenOutput(“2012isover”)
Elsetomorrow.year=year+!
Endif
Case4:
monthis2:
’February
Ifday<28
ThentomorrowDay=day+1
Else
Ifday=28
Then
If(yearisaleapyear)
ThentomorrowDay=29‘leapyear
Else‘notaleapyear
TomorrowDay=1
TomorrowMonth=3
Endif
Elseifday=29
ThentomorrowDay=1
TomorrowMonth=3
Elseoutput(“CannothaveFeb.”,day)
Endif
Endif
Endif
Endcase
Output(“Tomorrow’sdateis”,tomorrowMonth,tomorrowDay,tomorrowYear)
EndNextdate
(3)设计佣金问题的程序
假设有一个步枪的销售商,步枪有枪托(stocks)、枪管(barrels)、枪机(locks)三个部件,三部件可以单独销售,每个部件单价为:
枪机45元,枪管30元,枪托25元,每月月末向制造商报告销量,制造商根据销量给销售商佣金。
如果销售额不足1000元按10%提取佣金,1000-1800元部分按15%提取佣金,超过1800元部分按20%提取佣金。
销售商向制造商发送的报告可以是一个月也可以是几个月,最终以枪机的数量为-1结束。
Programcommission(Input,Output)
Dimlocks,stocks,barrelsasInteger
DimlockPrice,sotckPrice,barrelPriceasReal
DimtotalLocks,totalStocks,totalBarrelsasInteger
DimlockSales,stockSales,barrelSalesasRreal
Dimsales,commissionasReal
LockPrice=45.0
StockPrice=30.0
BarrelPrice=25.0
TotalLocks=0
TotalStocks=0
TotalBarrels=0
Input(locks)
WhileNOT(locks=-1)
Input(stocks,barrels)
TotalLocks=totallocks+locks
TotalStocks=totalStocks+stocks
TotalBarrels=totalBarrels+barrels
Input(locks)
Endwhile
Output(“lockssold:
”,totalLocks)
Output(“Stockssold:
”,totalStocks)
Output(“Barrelssold:
”,totalBarrels)
LockSales=lockPrice*totalLocks
StockSales=StockPrice*totalStocks
BarrelSales=barrelPrice*totalBarrels
Sales=lockSales+stockSales+barrelSales
Output(“Totalsales:
”,sales)
If(sales>1800.0)
Then
Commission=0.1*1000.0
Commission=commission+0.15*800.0
Commission=commission+0.20*(sales–1800.0)
Elseif(sales>1000.0)
Then
Commission=0.10*1000.0
Commission=commission+0.15*(sales–1000.0)
Elsecommission=0.10*sales
Endif
Endif
Output(“Commissionis$”,commission)
EndCommission
实验二功能性测试(2学时)
一、实验目的
(1)掌握边界值、等价类和决策表测试的基本方法
二、实验要求
(1)完成各个程序的编写
(2)运用功能性测试方法设计被测程序的测试用例,并运行测试用例检查程序的正确与否
三、实验内容
(1)设计三角形问题的边界值测试用例
按照边界值测试的测试方法,对于三角形问题的边界值分析测试用例如下:
边界值分析测试用例
用例abc预期输出
11001001等腰三角形
21001002等腰三角形
3100100100等边三角形
4100100199等腰三角形
5100100200非三角形
61001100等腰三角形
71002100等腰三角形
8100100100等边三角形
9100199100等腰三角形
10100200100非三角形
111100100等腰三角形
122100100等腰三角形
13100100100等边三角形
14199100100等腰三角形
15200100100非三角形
(2)对于nextdate函数设计决策表测试用例程序
我们选择如下的等价类:
M1={月份:
每月有30天}M2={月份:
每月有31天,12月除外}
M3={月份:
此月是12月}
M4={月份:
此月是2月}
D1={日期:
1≤日期≤27}D2={日期:
日期=28}
D3={日期:
日期=29}D4={日期:
日期=30}
D5={日期:
日期=30}
Y1={年:
年是闰年}Y2={年:
年不是闰年}
1
2
3
4
5
6
7
8
9
10
C1:
月份在
M1
M1
M1
M1
M1
M2
M2
M2
M2
M2
C2:
日期在
D1
D2
D3
D4
D5
D1
D2
D3
D4
D5
C3:
年在
—
—
—
—
—
—
—
—
—
—
A1:
不可能
×
A2:
日期增1
×
×
×
×
×
×
×
A3:
日期复位
×
×
A4:
月份增1
×
×
A5:
月份复位
A6:
年增1
11
12
13
14
15
16
17
18
19
20
21
22
C1:
月份在
M3
M3
M3
M3
M3
M4
M4
M4
M4
M4
M4
M4
C2:
日期在
D1
D2
D3
D4
D5
D1
D2
D2
D3
D3
D4
D5
C3:
年在
—
—
—
Y1
Y2
Y1
Y2
—
—
A1:
不可能
A2:
日期增1
×
×
×
×
×
×
×
×
×
A3:
日期复位
×
×
×
A4:
月份增1
×
×
A5:
月份复位
×
A6:
年增1
×
(3)对于佣金问题设计出等价类测试用例
我们选择如下等价类:
L1={枪机:
1≤枪机≤70}
L2={枪机=-1}
S1={枪托:
1≤枪托≤80}
B1={枪管:
1≤枪管≤90}
输入变量对应的无效类是:
L3={枪机:
枪机=0或枪机<-1}
L3={枪机:
枪机>70}
S2={枪托:
枪托<1}
S3={枪托:
枪托>80}
B2={枪管:
枪管<1}
B2={枪管:
枪管>90}
当枪机等于-1时,while循环就会终止,总枪机、总枪托和总枪管的值就会被用来计算销售额,进而计算佣金。
额外强健壮等价类测试用例三维立方的一个“角”是:
用例ID
枪机
枪托
枪管
预期输出
SR1
-1
40
45
枪机值不在有效值域1..70中
SR2
35
-1
45
枪托值不在有效值域1..80中
SR3
35
40
-1
枪管值不在有效值域1..90中
SR4
-1
-1
45
枪机值不在有效值域1..70中
枪托值不在有效值域1..80中
SR5
-1
40
-1
枪机值不在有效值域1..70中
枪管值不在有效值域1..90中
SR6
35
-1
-1
枪托值不在有效值域1..80中
枪管值不在有效值域1..90中
SR7
-1
-1
-1
枪机值不在有效值域1..70中
枪托值不在有效值域1..80中
枪管值不在有效值域1..90中
实验三结构性测试(2学时)
一、实验目的
(1)掌握路径覆盖测试的基本方法
二、实验要求
(1)完成各个程序的编写
(2)运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否
三、实验内容
(1)设计某程序的路径覆盖测试用例,如路径覆盖、条件覆盖、分支覆盖、循环覆盖等
伪代码程序如下:
1Input(X)
2IfA>1andB=0then
3X=X/A
4Endif
5IfA=2then
6X=X+1
7else
8X=X-1
9Endif
10Output(X)
程序图DD-路径图
DD-路径(只压缩链路经)
程序图节点
DD-路径
1
A
2
B
3
C
4
D
5
E
6
F
7,8
G
9
H
10
I
(
)语句覆盖:
A-B-D-E-F-H-I或A-B-C-D-E-F-H-I
测试用例:
(输入值和预期输出值省略)
用例ID
输入值
执行路径
预期输出
A
B
X
A
B
X
1
2
1
3
A-B-D-E-F-H-I
2
1
4
(
)分支覆盖(判断覆盖):
A-B-D-E-F-H-I(1.左,2.左)
A-B-C-D-E-G-H-I(1.右,2.右)
或
A-B-D-E-G-H-I(1.左,2.右)
A-B-C-D-E-F-H-I(1.右,2.左)
思考:
是否还有其它的路径组合能达到分支覆盖的要求?
测试用例:
(输入值和预期输出值省略)
用例ID
输入值
执行路径
预期输出
A
B
X
A
B
X
1
1
0
3
A-B-D-E-G-H-I
1
0
2
2
3
0
3
A-B-C-D-E-FH-I
3
0
0
(
)路径覆盖:
A-B-D-E-F-H-I(1.左,2.左)
A-B-D-E-G-H-I(1.左,2.右)
A-B-C-D-E-F-H-I(1.右,2.左)
A-B-C-D-E-G-H-I(1.右,2.右)
测试用例:
(输入值和预期输出值省略)
用例ID
输入值
执行路径
预期输出
A
B
X
A
B
X
1
0
1
3
A-B-D-E-G-H-I
0
1
2
2
1
0
3
A-B-D-E-G-H-I
1
0
2
3
2
1
3
A-B-C-D-E-F-H-I
2
1
4
4
2
0
4
A-B-C-D-E-G-H-I
2
0
3
(
)条件覆盖:
各个条件取真或假的可能至少执行一次
A>1
B=0
A>1andB=0
覆盖路径
F
F
F
B-D
F
T
F
B-D
T
F
F
B-D
T
T
T
B-C-D
A=2
覆盖路径
T
E-F-H
F
E-G-H
测试用例:
(输入值和预期输出值省略)
用例ID
输入值
执行路径
预期输出
A
B
X
A
B
X
1
1
1
4
A-B-D-E-G-H-I
1
1
3
2
1
0
4
A-B-D-E-G-H-I
1
0
3
3
2
1
4
A-B-D-E-F-H-I
2
1
5
4
2
0
4
A-B-C-D-E-F-H-I
2
0
3
实验四找出实例程序的缺陷(2学时)
一、实验目的
通过对于实例程序的测试,熟悉功能性测试和结构性测试的基本方法。
二、实验要求
(1)综合运用功能性、结构性测试方法对被测程序进行测试,找出black.exe、white.exe、naive.exe程序中存在的缺陷。
三、实验内容
(1)对于black.exe程序的测试(white.exe,naive.exe的测试过程类似)
步骤:
①运行black.exe程序,如下图所示:
②选择triangleprogram后(或nextdateprogram,commissionprogram),如下图所示:
③点击createfilenames,如下图所示:
提示输入测试用例文件,如TriDt.txt后点击ok,
如下图所示,输入执行结果的文件TriDtResult.txt:
再次点击ok,提示输入测试结果文件记录集的题头信息:
triangleDTtestresult,
点击ok,完成测试前的准备工作。
④点击RunTestCasesFile,运行测试;
⑤测试后的统计信息如下图所示:
⑥测试完成后,打开TriDtResult.txt文件:
实验五书写测试文档(2学时)
一、实验目的
掌握测试文档的书写要求
二、实验内容
写一份所测试程序的测试报告
三、实验要求
测试文档的格式如下:
1 引言
1.1编写目的
本测试计划的具体编写目的,指出预期的读者范围。
1.2背景
说明:
a 测试计划所从属的软件系统的名称;
b.该开发项目的历史,列出用户和执行此项目测试的计算中心,说明在开始执行本测试计划之前必须完成的各项工作。
1.3定义
列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
1.4参考资料
列出要用到的参考资料,如:
a.本项目的经核准的计划任务书或合同、上级机关的批文;
b.属于本项目的其他已发表的文件;
c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。
2 计划
2.1软件说明
提供一份图表,并逐项说明被测软件的功能、输入和输出等质量指标,作为叙述测试计划的提纲。
2.2测试内容
列出组装测试和确认测试中的每一项测试内容的名称标识符、这些测试的进度安排以及这些测试的内容和目的,例如模块功能测试、接口正确性测试、数据文卷存取的测试、运行时间的测试、设计约束和极限的测试等。
2.3测试1(标识符)
给出这项测试内容的参与单位及被测试的部位。
2.3.1进度安排
给出对这项测试的进度安排,包括进行测试的日期和工作内容(如熟悉环境。
培训、准备输入数据等)。
2.3.2条件
陈述本项测试工作对资源的要求,包括:
a.设备所用到的设备类型、数量和预定使用时间;
b.软件列出将被用来支持本项测试过程而本身又并不是被测软件的组成部分的软件,如测试驱动程序、测试监控程序、仿真程序、桩模块等等;
c.人员列出在测试工作期间预期可由用户和开发任务组提供的工作人员的人数。
技术水平及有关的预备知识,包括一些特殊要求,如倒班操作和数据键入人员。
2.3.3测试资料
列出本项测试所需的资料,如:
a.有关本项任务的文件;
b.被测试程序及其所在的媒体;
c.测试的输入和输出举例;
d.有关控制此项测试