摘要:与传统单元测试不同,面向对象的单元测试关注于设计适当的操作序列以检查类的状态。面向对象软件的集成测试主要采用基于使用的测试策略来进行。
目录
本关任务:根据所学知识,完成右侧的选择题。
为了完成本关任务,你需要掌握面向对象的单元测试。
单元的意思已经发生改变
当考虑面向对象的软件时,单元的概念就发生了改变。因为传统面向过程的软件中最小单位是模块,所以此时单元指的是模块。而面向对象的软件中的最小单位是类和对象,所以这个时候单元指的是类和对象。
而且在测试面向对象软件时,不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试。
例如,假设有一个类层次,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
用来测试不改变状态的函数。
请完成右侧的选择题,并点击评测按钮,验证你所填写的答案是否正确。
本关任务:根据所学知识,完成右侧的选择题。
为了完成本关任务,你需要掌握面向对象的集成测试。
因为在面向对象的软件中不存在层次的控制结构,传统的自顶向下或自顶向上的集成策略就没有意义了。此外,由于构成类的各个成分彼此间存在着直接或间接的交互,一次集成一个操作到类中通常是不现实的。
面向对象软件的集成测试主要采用基于使用的测试策略来进行。
这种方法首先测试几乎不使用服务器类的那些类(也叫独立类),把独立类都测试完之后,再测试使用独立类到下一个层次的类(也叫依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完成,那么整个系统也就测试完成了。
例如,一款刷脸签到的app
中有Camera
类、Recognition
类、DataBase
类、Signin
类。其中Signin
类依赖于DataBase
类和Recognition
类。可以看出,Camera
类、Recognition
类和DataBase
类是独立类,应该优先测试这些类的功能。而Signin
类是依赖类,因此应该在最后才把Signin
类与其他类集成到一起并进行测试。
请完成右侧的选择题,并点击评测按钮,验证你所填写的答案是否正确。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121224.html
摘要:相关知识为了完成本关任务,你需要掌握软件测试的测试策略。第关测试过程任务描述本关任务根据所学知识,完成右侧的选择题。 第1关:测试策略 任务描述 本关任务:根据所学知识,完成右侧的选择题。 相关知识 为了完成本关任务,你需要掌握软件测试的测试策略。 第2关:测试过程 任务描述 本关任务...
摘要:第关基本路径测试任务描述本关任务填写缺失代码,完成白盒测试。相关知识为了完成本关任务,你需要掌握基本路径测试。 第1关:逻辑覆盖 任务描述 本关任务:设计测试用例,填写代码,完成白盒测试。 相关知识 为了完成本关任务,你需要掌握: 1.语句覆盖; 2.判定覆盖; 3.条件覆盖; 4.判定/条...
摘要:第关边界值法任务描述本关任务编写代码,使用边界值法进行黑盒测试。相关知识为了完成本关任务,你需要掌握边界值法。 第1关:等价类划分法 任务描述 本关任务:编写代码,使用等价类划分法进行黑盒测试。 相关知识 为了完成本关任务,你需要掌握等价类划分法。 第2关:边界值法 任务描述 本关任务:...
摘要:移动精英开发社群的第期,也是围绕架构这个话题进行讨论。本次我们希望结合实际开发中遇到的问题,来聊聊移动端的架构设计。这样的模式改进一些,可能会更适合移动端架构。潘卫杰之前我们公司移动端的大项目就是插座式开发的,批量出各个行业的。 此前,58 同城的技术委员会执行主席沈剑在 OneAPM 的技术公开课上分享过一个主题,「好的架构不是设计出来的,而是演技出来的」。因为对很多创业公司而言,随...
摘要:在刚开始的时候,我通常都会先启动一个简单的服务,然后再运行我的单元测试。可是这个单元测试测起来似乎非常笨重。王尼玛张全蛋测试之这是自定义的返回值,可以是任意类型。 在开发过程中往往需要配合单元测试,但是很多时候,单元测试需要依赖一些比较复杂的准备工作,比如需要依赖数据库环境,需要依赖网络环境,单元测试就变成了一件非常麻烦的事情。举例来说,比如我们需要请求一个网页,并将请求回来的数据进行...
阅读 3793·2021-09-29 09:34
阅读 3770·2021-09-27 13:34
阅读 565·2021-09-24 09:47
阅读 3036·2019-08-30 15:53
阅读 1808·2019-08-26 13:54
阅读 2083·2019-08-26 13:43
阅读 529·2019-08-23 14:47
阅读 1739·2019-08-23 14:28