软件测试面向对象测试技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个银行类Account: 属性:balance(账户余额)和creditLimit(透支额) 其操作有:
Biblioteka Baidu


open()打开账户、 setup()建立、 deposit()存款、 withdraw()取钱、 balance()查询余额、 summarize()操作清单、 close()关闭账户
程序存在的缺陷

没有对b不能为0的情况进行限制 当字符串msg的长度加上a整数的位数超过20 时,会使dsp数组溢出

sprintf (dsp, ”%s %d”,msg,a);
把语句if(x>=0)calculate_square_root( ); 误写成if(x>0)calculate_square_root( );
例如: int i,a[10]; for(i=0;i<=10;i++) { a[i]=0; }
二、集成测试方法
集成测试,也叫组装测试或联合测试。 在单元测试的基础上,将所有模块按照设计 要求(如根据结构图〕组装成为子系统或系 统,进行集成测试。
withdraw
creditLimit close
2、划分测试
这种测试可以减少用完全相同的方式检查类测试 用例的数目。这很像传统软件测试中的等价类划分测 试。划分测试又可分三种: 基于状态的划分,按类操作是否改变类的状态来划分 (归类); 基于属性的划分,按类操作所用到的属性来划分(归 类); 基于类型的划分,按完成的功能划分(归类)。
例如,可以把account类中的操作分类为 初始化操作(open,setup), 计算操作(deposit, withdraw), 查询操作(balance), 终止操作(close)。 然后为每个类别设计测试序列。
3、基于故障的测试
基于故障的测试是首先推测软件中可能有的 错误,然后设计出最可能发现这些错误的测试用 例。 例如,软件工程师经常在问题的边界处犯错误, 因此,在测试SQRT操作时,应该着重检查边界 情况: 一个接近零的负数和零本身。
举例

基于状态划分就是根据它们改变类状态的能力 对类操作进行划分。




考虑Account类,状态操作包括deposit()、 withdraw(),非状态操作包括balance()、 summarize()、creaditLimit()。 将给改变状态的操作和不改变状态的操作分别进行 测试。因此: 测试用例a: open→setup→deposit→deposit→withdraw→wi thdraw→close 测试用例b: open→setup→deposit→summrize→creaditLimi t→balance→withdraw→close
}

void divide (int *a, int *b)
{
(*a)=(*a)/(*b); return ;
}
集成测试操作步骤

编写测试用例

因为测试策略是自底向上,所以先测试divide( int *a, int *b)函数 int *a int *b 预期结果
ID
1
2 …
4
0 …
2
3 …
2
0 …
从上列序列可以随机产生一系列不同的操作序列,例如:
测试用例 # r1
open deposit setup balance deposit summarize
close
withdraw
从上列序列可以随机产生一系列不同的操作序列,例如:
测试用例 # r2
open withdraw setup deposit deposit balance
集成测试的目的
1.各个子功能组合起来,能否达到预期要求的父 功能; 2.一个模块的功能是否会对另一个模块的功能产 生不利的影响; 3.全局数据结构是否有问题; 4.单个模块的误差积累起来,是否会放大,从而 达到不可接受的程度。
需求描述


被测试段代码实现的功能是:如果a>b,则返 回a,否则返回a/b 被测试段代码由两个函数实现,分别是
举例

基于属性划分就是根据它们所使用的属性进行划 分。


对于account类来说,可以使用属性balance来定义划 分,从而把操作划分成3个类别: 使用balance的操作; 修改balance的操作; 不使用也不修改balance的操作。
然后,为每个类别设计测试序列。
举例
基于功能的划分根据类操作所完成的功能来划分 类操作。

int max (int a, int b, char *msg) void divide (int *a, int *b)

divide函数实现a/b功能,max函数实现其他 对应功能,并进行结果输出

int max (int a, int b, char *msg)
{
char dsp[20]; /*声明一个大小为20的char型数组*/ if (a<0 || b<0) /*如果a和b中有一个数不是正数*/ return -1; /*则直接返回*/ if (a>b) /*如果a大于b,*/ ; /*什么也不做*/ else divide (&a, &b); sprintf (dsp, ”%s %d”,msg,a); printf (dsp); return a;



举例

一个银行类Account: 属性:balance(账户余额)和creditLimit(透支额) 其操作有:



open()打开账户、 setup()建立、 deposit()存款、 withdraw()取钱、 balance()查询余额、 summarize()操作清单、 creaditLimit()透支限额 close()关闭账户
12.4 设计测试用例
一、测试类的方法
面向对象的单元就是类,类的测试又被称 之为单元测试。类测试的目的主要确保一个类 的代码能够完全满足类的说明所描述的要求。
1、随机测试
随机测试是没有书面测试用例、记录期望 结果、检查列表、脚本或指令的测试。 主要是根据测试者的经验对软件进行功能 和性能抽查。
举例
相关文档
最新文档