白盒测试案例
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 | 输入数据 | 路径 | 预期结果 |
---|---|---|---|
测试用例1 | saleNum=100 basicComm=1000 typeOfWork=1 | OACE | 155000 |
测试用例2 | saleNum=50 basicComm=1000 typeOfWork=1 | OADE | 55000 |
测试用例3 | saleNum=10 basicComm=1000 typeOfWork=2 | OBE | 10000 |
判定覆盖
主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。null | 输入数据 | 路径 | 预期结果 |
---|---|---|---|
测试用例1 | saleNum=100 basicComm=1000 typeOfWork=1 | OACE | 155000 |
测试用例2 | saleNum=50 basicComm=1000 typeOfWork=1 | OADE | 55000 |
测试用例3 | saleNum=10 basicComm=1000 typeOfWork=2 | OBE | 10000 |
条件覆盖
主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。null | 输入数据 | 条件真假值 | 路径 | 预期结果 |
---|---|---|---|---|
测试用例1 | saleNum=100 basicComm=1000 typeOfWork=1 | saleNum>40 T basicComm>400 T saleNum> 50 T typeOfWork=1 T | OACE | 155000 |
测试用例2 | saleNum=10 basicComm=100 typeOfWork=2 | saleNum>40 F basicComm>400 F saleNum> 50 F typeOfWork=1 F | OBE | 1000 |
判定/条件覆盖
主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。null | 输入数据 | 条件真假值 | 路径 | 预期结果 |
---|---|---|---|---|
测试用例1 | saleNum=100 basicComm=1000 typeOfWork=1 | saleNum>40 T basicComm>400 T saleNum> 50 T typeOfWork=1 T | OACE | 155000 |
测试用例2 | saleNum=10 basicComm=100 typeOfWork=2 | saleNum>40 F basicComm>400 F saleNum> 50 F typeOfWork=1 F | OBE | 1000 |
测试用例3 | saleNum=100 basicComm=1000 typeOfWork=2 | saleNum>40 T basicComm>400 T saleNum> 50 T typeOfWork=1 F | OADE | 130000 |
组合/条件覆盖
主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。null | 输入数据 | 条件真假值 | 路径 | 预期结果 |
---|---|---|---|---|
测试用例1 | saleNum=100 basicComm=1000 typeOfWork=1 | saleNum>40 T basicComm>400 T saleNum> 50 T typeOfWork=1 T | OACE | 155000 |
测试用例2 | saleNum=100 basicComm=1000 typeOfWork=2 | saleNum>40 T basicComm>400 T saleNum> 50 T typeOfWork=1 F | OADE | 130000 |
测试用例3 | saleNum=50 basicComm=1000 typeOfWork=1 | saleNum>40 T basicComm>400 T saleNum> 50 F typeOfWork=1 T | OADE | 55000 |
测试用例4 | saleNum=50 basicComm=1000 typeOfWork=2 | saleNum>40 T basicComm>400 T saleNum> 50 F typeOfWork=1 F | OADE | 55000 |
测试用例5 | saleNum=100 basicComm=100 typeOfWork=1 | saleNum>40 T basicComm>400 F saleNum> 50 T typeOfWork=1 T | OBE | 10000 |
测试用例6 | saleNum=100 basicComm=100 typeOfWork=2 | saleNum>40 T basicComm>400 F saleNum> 50 T typeOfWork=1 F | OBE | 10000 |
测试用例7 | saleNum=50 basicComm=100 typeOfWork=1 | saleNum>40 T basicComm>400 F saleNum> 50 F typeOfWork=1 T | OBE | 5000 |
测试用例8 | saleNum=50 basicComm=100 typeOfWork=2 | saleNum>40 T basicComm>400 F saleNum> 50 F typeOfWork=1 F | OBE | 5000 |
测试用例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 | 路径不存在 | 无 |
测试用例11 | saleNum=10 basicComm=1000 typeOfWork=1 | saleNum>40 F basicComm>400 T saleNum> 50 F typeOfWork=1 T | OBE | 10000 |
测试用例12 | saleNum=10 basicComm=1000 typeOfWork=2 | saleNum>40 F basicComm>400 T saleNum> 50 F typeOfWork=1 F | OBE | 10000 |
测试用例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 | 路径不存在 | 无 |
测试用例15 | saleNum=10 basicComm=100 typeOfWork=1 | saleNum>40 F basicComm>400 F saleNum> 50 F typeOfWork=1 T | OBE | 1000 |
测试用例16 | saleNum=10 basicComm=100 typeOfWork=2 | saleNum>40 F basicComm>400 F saleNum> 50 F typeOfWork=1 F | OBE | 1000 |
基本路径覆盖
主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。虽然没画出控制流图,但是根据上面的程序流程图,也能得出环形复杂度。
环形复杂度V(G)=关键点+1=3
null | 输入数据 | 路径 | 预期结果 |
---|---|---|---|
测试用例1 | saleNum=100 basicComm=1000 typeOfWork=1 | OACE | 155000 |
测试用例2 | saleNum=50 basicComm=1000 typeOfWork=1 | OADE | 55000 |
测试用例3 | saleNum=10 basicComm=1000 typeOfWork=2 | OBE | 10000 |
相关文章推荐
- Android之使用Http协议实现文件上传功能
- mysql集群之MMM简单搭建
- 通晓网络测试常用命令
- 黑盒测试 白盒测试 原理分析
- Nodejs学习笔记之测试驱动
- 可以测试javascript运行效果的代码
- 使用php测试硬盘写入速度示例
- python 测试实现方法
- 如何测试端口通不通(四种方法)
- 举例详解PHP脚本的测试方法
- 使用Jasmine和Karma对AngularJS页面程序进行测试
- Php-Redis安装测试笔记
- mysql压力测试脚本实例
- JavaScript 组件之旅(四):测试 JavaScript 组件
- js简单网速测试方法完整实例
- Android触屏测试实例代码
- 解析libcurl在android下的移植、编译与测试
- 几个比较实用的JavaScript 测试及效验工具
- Java中对AtomicInteger和int值在多线程下递增操作的测试
- Python实现测试磁盘性能的方法