头歌-软件测试技术-面向对象测试_王铁军
Posted 泩輝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了头歌-软件测试技术-面向对象测试_王铁军相关的知识,希望对你有一定的参考价值。
目录
第1关:面向对象的单元测试
任务描述
本关任务:根据所学知识,完成右侧的选择题。
相关知识
为了完成本关任务,你需要掌握面向对象的单元测试。
单元的意思已经发生改变
当考虑面向对象的软件时,单元的概念就发生了改变。因为传统面向过程的软件中最小单位是模块,所以此时单元指的是模块。而面向对象的软件中的最小单位是类和对象,所以这个时候单元指的是类和对象。
而且在测试面向对象软件时,不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试。
例如,假设有一个类层次,X
函数在其父类中有定义,并且被一组子类继承了下来,而且每个子类都会使用x
函数。但是X
函数会调用子类中定义的操作并处理子类的私有变量。这个时候你若用单元测试的方式来测的话,会发现无从下手。
看起来这么复杂的一个类层次,其实在面向对象的软件中比比皆是。由于在不同的子类中使用X
函数的环境有微妙的差别,因此有必要在每个子类的语境中测试X
函数。这就说明,当测试面向对象软件时,传统的单元测试方法是不适用的,不能再孤立地测试单个函数。
测试用例设计方法
目前,面向对象软件的测试用例的设计方法还处于研究和发展阶段。与传统单元测试不同,面向对象的单元测试关注于设计适当的操作序列以检查类的状态。
测试单个类的方法主要有随机测试和划分测试两种。
随机测试
下面通过银行系统的例子,来简要说明这种测试方法。该系统的account
(账户)类有这些函数:open
(打开)、deposit
(存款)、withdraw
(取款)、balance
(余额)、summarize
(清单)、creditLimit
(透支限额)和close
(关闭)。
很明显,只要是account
类的对象就都能使用这些函数。但是,使用这些函数时也会有一些限制。例如,必须在打开账户之后才能关闭账户。
即使有这样或者那样的限制,但合理使用函数的序列还是会有很多种例如:open->deposit->close
、open->deposit->withdraw->close
、open->summarize->creditLimit->withdraw->close
等。
这些序列其实就是用户可能会在使用系统时触发的函数使用序列,而且每个用户的使用序列可能会不一样,所以像这种以序列的方式来测试的方法叫作随机测试。
划分测试
划分测试与黑盒测试中的等价类划分类似,先按照一定的规则,把输入和输出分类,然后设计测试用例,用来测试划分出来的每个类别。采用划分测试方法可以减少测试类时所需要的测试用例的数量。
例如account
类中,与状态有关的函数是deposit
和withdraw
,而其他的函数与状态无关。那么设计测试用例时,可以分别测试改变状态的函数和不改变状态的函数。例如:open->deposit->deposit->withdraw->close
用来测试改变状态的函数,而open->balance->close
用来测试不改变状态的函数。
作答要求
请完成右侧的选择题,并点击评测按钮,验证你所填写的答案是否正确。
第2关:面向对象的集成测试
任务描述
本关任务:根据所学知识,完成右侧的选择题。
相关知识
为了完成本关任务,你需要掌握面向对象的集成测试。
面向对象的集成测试
因为在面向对象的软件中不存在层次的控制结构,传统的自顶向下或自顶向上的集成策略就没有意义了。此外,由于构成类的各个成分彼此间存在着直接或间接的交互,一次集成一个操作到类中通常是不现实的。
面向对象软件的集成测试主要采用基于使用的测试策略来进行。
基于使用的测试
这种方法首先测试几乎不使用服务器类的那些类(也叫独立类),把独立类都测试完之后,再测试使用独立类到下一个层次的类(也叫依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完成,那么整个系统也就测试完成了。
例如,一款刷脸签到的app
中有Camera
类、Recognition
类、DataBase
类、Signin
类。其中Signin
类依赖于DataBase
类和Recognition
类。可以看出,Camera
类、Recognition
类和DataBase
类是独立类,应该优先测试这些类的功能。而Signin
类是依赖类,因此应该在最后才把Signin
类与其他类集成到一起并进行测试。
作答要求
请完成右侧的选择题,并点击评测按钮,验证你所填写的答案是否正确。
以上是关于头歌-软件测试技术-面向对象测试_王铁军的主要内容,如果未能解决你的问题,请参考以下文章
头歌-信息安全技术-用Python实现自己的区块链支持以太坊的云笔记服务器端开发编写并测试用于保存云笔记的智能合约支持以太坊的云笔记小程序开发基础