您的位置:首页 > 其它

白盒测试案例

2016-04-27 14:03 281 查看

白盒测试案例

白盒测试案例
案例
根据题目画出需求的流程图

根据所画流程图写出相应的程序

分别编写各种逻辑覆盖法的测试用例并执行测试用例写出测试结果
语句覆盖

判定覆盖

条件覆盖

判定条件覆盖

组合条件覆盖

基本路径覆盖

案例

编写循环程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。编写流程图,并使用各种逻辑覆盖法编写测试用例。

根据题目,画出需求的流程图;



根据所画流程图写出相应的程序;

/************************************************************
FileName: CalculateSalComm.cpp
Author: Switch   Version : 1.0    Date: 2016-03-30
Description:  计算销售提成 // 模块描述
Function List:   // 主要函数及其功能
1. main 输出销售提成
2. calculateSaleComm 计算销售提成
***********************************************************/
#include <iostream>
using namespace std;
/*************************************************
Function:  calculateSaleComm // 函数名称
Description: 计算销售提成  // 函数功能、性能等的描述
Calls:              // 被本函数调用的函数清单
Called By:   main   // 调用本函数的函数清单
Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
Table Updated:  // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input:    saleNum 销售数
basicComm 基础提成数
typeOfWork 工种
Output:                 // 对输出参数的说明。
Return:  销售提成       // 函数返回值的说明
Others:         // 其它说明
*************************************************/
float  calculateSaleComm(int saleNum, float basicComm, short typeOfWork)
{
if (saleNum > 40 && basicComm > 400)
{
if (saleNum > 50 && 1 == typeOfWork)
{
return 40 * basicComm + 10 * basicComm * 1.5
+ (saleNum - 50) * basicComm * 2;
}
else
{
return 40 * basicComm + (saleNum - 40) * basicComm * 1.5;
}
}
else
{
return saleNum * basicComm;
}
}
/*************************************************
Function:     mian     // 函数名称
Description: 输出销售提成  // 函数功能、性能等的描述
Calls:    calculateSaleComm      // 被本函数调用的函数清单
Called By:      // 调用本函数的函数清单
Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
Table Updated:  // 被修改的表(此项仅对于牵扯到数据库操作的程序)
Input:          // 输入参数说明,包括每个参数的作
// 用、取值说明及参数间关系。
Output:         // 对输出参数的说明。
Return:         // 函数返回值的说明
Others:         // 其它说明
*************************************************/
int main()
{
int saleNum;
float basicComm;
short typeOfWork;
cout << "请输入销售数量:";
cin >> saleNum;
cout << "请输入基础提成数:";
cin >> basicComm;
cout << "请输入工种(1:正式工,2临时工):";
cin >> typeOfWork;
/** 计算销售提成 **/
float saleComm = calculateSaleComm(saleNum, basicComm, typeOfWork);
/** 输出销售提成 **/
cout << "销售提成数为:" << saleComm << endl;
return 0;
}


分别编写各种逻辑覆盖法的测试用例,并执行测试用例,写出测试结果。

语句覆盖

主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。

null输入数据路径预期结果
测试用例1saleNum=100
basicComm=1000
typeOfWork=1
OACE155000
测试用例2saleNum=50
basicComm=1000
typeOfWork=1
OADE55000
测试用例3saleNum=10
basicComm=1000
typeOfWork=2
OBE10000

判定覆盖

主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。

null输入数据路径预期结果
测试用例1saleNum=100
basicComm=1000
typeOfWork=1
OACE155000
测试用例2saleNum=50
basicComm=1000
typeOfWork=1
OADE55000
测试用例3saleNum=10
basicComm=1000
typeOfWork=2
OBE10000

条件覆盖

主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

null输入数据条件真假值路径预期结果
测试用例1saleNum=100
basicComm=1000
typeOfWork=1
saleNum>40 T
basicComm>400 T
saleNum> 50 T
typeOfWork=1 T
OACE155000
测试用例2saleNum=10
basicComm=100
typeOfWork=2
saleNum>40 F
basicComm>400 F
saleNum> 50 F
typeOfWork=1 F
OBE1000

判定/条件覆盖

主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。

null输入数据条件真假值路径预期结果
测试用例1saleNum=100
basicComm=1000
typeOfWork=1
saleNum>40 T
basicComm>400 T
saleNum> 50 T
typeOfWork=1 T
OACE155000
测试用例2saleNum=10
basicComm=100
typeOfWork=2
saleNum>40 F
basicComm>400 F
saleNum> 50 F
typeOfWork=1 F
OBE1000
测试用例3saleNum=100
basicComm=1000
typeOfWork=2
saleNum>40 T
basicComm>400 T
saleNum> 50 T
typeOfWork=1 F
OADE130000

组合/条件覆盖

主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。

null输入数据条件真假值路径预期结果
测试用例1saleNum=100
basicComm=1000
typeOfWork=1
saleNum>40 T
basicComm>400 T
saleNum> 50 T
typeOfWork=1 T
OACE155000
测试用例2saleNum=100
basicComm=1000
typeOfWork=2
saleNum>40 T
basicComm>400 T
saleNum> 50 T
typeOfWork=1 F
OADE130000
测试用例3saleNum=50
basicComm=1000
typeOfWork=1
saleNum>40 T
basicComm>400 T
saleNum> 50 F
typeOfWork=1 T
OADE55000
测试用例4saleNum=50
basicComm=1000
typeOfWork=2
saleNum>40 T
basicComm>400 T
saleNum> 50 F
typeOfWork=1 F
OADE55000
测试用例5saleNum=100
basicComm=100
typeOfWork=1
saleNum>40 T
basicComm>400 F
saleNum> 50 T
typeOfWork=1 T
OBE10000
测试用例6saleNum=100
basicComm=100
typeOfWork=2
saleNum>40 T
basicComm>400 F
saleNum> 50 T
typeOfWork=1 F
OBE10000
测试用例7saleNum=50
basicComm=100
typeOfWork=1
saleNum>40 T
basicComm>400 F
saleNum> 50 F
typeOfWork=1 T
OBE5000
测试用例8saleNum=50
basicComm=100
typeOfWork=2
saleNum>40 T
basicComm>400 F
saleNum> 50 F
typeOfWork=1 F
OBE5000
测试用例9输入数据不存在saleNum>40 F
basicComm>400 T
saleNum> 50 T
typeOfWork=1 T
路径不存在
测试用例10输入数据不存在saleNum>40 F
basicComm>400 T
saleNum> 50 T
typeOfWork=1 F
路径不存在
测试用例11saleNum=10
basicComm=1000
typeOfWork=1
saleNum>40 F
basicComm>400 T
saleNum> 50 F
typeOfWork=1 T
OBE10000
测试用例12saleNum=10
basicComm=1000
typeOfWork=2
saleNum>40 F
basicComm>400 T
saleNum> 50 F
typeOfWork=1 F
OBE10000
测试用例13输入数据不存在saleNum>40 F
basicComm>400 F
saleNum> 50 T
typeOfWork=1 T
路径不存在
测试用例14输入数据不存在saleNum>40 F
basicComm>400 F
saleNum> 50 T
typeOfWork=1 F
路径不存在
测试用例15saleNum=10
basicComm=100
typeOfWork=1
saleNum>40 F
basicComm>400 F
saleNum> 50 F
typeOfWork=1 T
OBE1000
测试用例16saleNum=10
basicComm=100
typeOfWork=2
saleNum>40 F
basicComm>400 F
saleNum> 50 F
typeOfWork=1 F
OBE1000

基本路径覆盖

主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。

虽然没画出控制流图,但是根据上面的程序流程图,也能得出环形复杂度。

环形复杂度V(G)=关键点+1=3

null输入数据路径预期结果
测试用例1saleNum=100
basicComm=1000
typeOfWork=1
OACE155000
测试用例2saleNum=50
basicComm=1000
typeOfWork=1
OADE55000
测试用例3saleNum=10
basicComm=1000
typeOfWork=2
OBE10000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  白盒测试 测试