关于基于模型测试的那些事

发表于:2012-11-13 10:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:blue_energy    来源:51Testing软件测试网采编

  现在大家对探索性测试讨论得很热门,在自动化测试大行其道的今天,探索性测试似乎是唯一一块测试人员更能体现自己专业性的领域。甚至我还看到有人在讨论如何通过探索性测试来达到较高的代码覆盖率。

  个人以为,如果你真的对覆盖到代码的每个分支更感兴趣,或者说希望测到哪怕是一些比较细节的用户行为,通过探索性测试的方法来做也许并不是一个很推荐的做法。

  我这里想介绍一种基于模型的测试,通过它,我们可以对软件的功能达到更强的覆盖,达到更有效的测试,同时还能发现一些隐藏更深的问题。

  同时,它也被某些业内人士誉为继关键字驱动之后的下一代自动化测试技术。

  该方面的专家 Harry Robinson,来自微软的测试架构师,有一个很有意思的说法:“MBT is not your parents'  test automation”, 也说明了这个意思。

  首先来看它的定义:

  Model based testing, 基于模型的测试

  基于模型的测试属于软件测试领域的一种测试方法。按照此方法,测试用例可以完全或部分的利用模型自动产生。以上所说的模型通常是指对被测系统(SUT, system under test)某些(通常是功能性的)方面的描述。

  什么是模型:

  模型是系统的抽象描述,同时模型比真实的系统简单。

  状态机是一种常见的表示用户操作的模型,比如以下的操作就可以模型化。

  所有的测试都是基于模型的,但是不是每个模型都被保留:

  我们在做测试的时候,脑子里面都预先会有软件的行为应该是怎么样的概念,它会指导我们去做相关的测试。

  如何来建立测试领域的模型:

  通常来讲,建模是应用MBT的一个难点,原因可能在于,大部分的测试人员都是在已经实现的系统上工作,在他们的日常工作中,比较少的受到如何来构建一个产品的训练。

  而建模所需要的技能更多是一个软件工程师所需要的那一些技能,比如

  1、抽象和归纳

  有时候,为了认清事物的本质,我们必需抛弃掉事物的细节,透过事物的表象。我总结了一下,就是抽象抽象再抽象,归纳归纳再归纳

  2、分而治之

  一个大的系统通常是复杂的,我们工作的领域的软件也类似。为了能从它们中有效地抽象出模型,建议可以采取分而治之的策略。

  3、从概念本质到实现细节

  那我们有哪些建模的方法呢:

  从我有所实践的经验看,应该可以归纳成数据模型的建模和状态机的建模

  以下分别选取了两个例子,介绍如何对其进行数据模型或者状态机模型的建模,并最后生成可执行的自动化测试用例。

  有关数据模型的建立:

  Linux的发明者 Torvalds,Linus 曾经有过一句话:

  Bad programmers worry about the code.
  Good programmers worry about data structures and their relationships.

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号