基于模型的测试教程
应用程序测试是任何应用程序的关键活动。在过去十年中,我们开发了各种测试应用程序的方法,以确保我们提供满足所有客户需求的高质量应用程序。
基于模型的测试 (MBT) 是测试自动化领域的一个热门问题,它涉及从正在测试的应用程序的模型创建测试用例
现在可以使用各种基于模型测试的方法。我们将向您展示两种使用遗传算法的基于模型的测试方法。使用遗传算法进行基于模型的测试是一个热点问题,有几篇论文和现有技术的比较。
什么是基于模型的测试,它是如何工作的?
基于模型的测试是一种软件测试方法,其中将被测产品的运行时行为与模型预测进行比较。模型是系统行为方式的表示。输入序列、动作、条件、输出和从输入到输出的数据流都可以用来定义行为。它应该是可理解和可重用的;shareable 必须提供对被测系统的详细描述。
有多种模型可用于描述系统行为的各种元素。
以下是该模型的一些示例 -
数据流
控制流
依赖图
决策表
状态转换机
基于模型的测试解释了系统如何响应活动(由模型确定)。提供操作并观察系统是否按预期回复。
这是一种验证系统的简单形式化方法。该测试可用于硬件和软件。
基本的 MBT 程序包括五个关键步骤 -
造型
测试计划
测试设计
测试生成
测试执行
造型
建模是描述系统需求的过程。测试生成器将基于此描述。
被测系统的预测输出也必须包含在模型中。设计模型和测试模型在这个阶段非常重要。
选择模型时应考虑一些关键标准: 在大多数情况下,模型被转换为状态转换系统或有限状态机系统。有限状态机系统是系统潜在配置的表示。
系统会搜索可执行路径以找到测试用例。一个合理的执行路径将用于生成测试用例。如果模型是确定性的或可以转换为确定性模型,则可以使用这种方法。
测试计划
测试计划包括定义测试选择标准和度量。这提供了测试用例规范的正式制定,以及指导可行测试套件的映射等。
测试设计
测试设计是指使用前面的测试选择标准对测试用例进行形式化。
测试生成
这需要创建尽可能多的测试。
离线
搜索算法
测试的格式是预先确定的。
在线的
步行或寻光算法
在执行上一步并接收到输出值之后,确定下一步。
算法必须快速。
测试执行
运行测试并查找当前输出和预期输出之间的差异。
进化算法
选择、繁殖和变异都是进化算法中使用的思想。
我们将在这里介绍三种不同的进化算法 -
遗传算法
进化编程
进化策略
基于遗传信息(GA)的算法
进化计算包括遗传算法。人工智能包括进化计算。
遗传算法基于达尔文的进化论。遗传算法解决的问题的答案也可以说是进化了。
我们在遗传算法中使用来自自然选择的四个关键概念:基因、染色体(个体)、种群和自然选择。
自然选择包括以下步骤 -
将选择人口中最适合的人。
个人将有继承父母品质的孩子。
后代将包括在下一代中。
更健康的父母的后代将胜过他们的父母,并且有更高的生存机会。
这是一个迭代过程,将产生一代最适者。
描述遗传算法的最简单方法是想象我们有一个问题要解决,并且我们可以检查该问题的一组解决方案。我们将不得不使用进化论和自然选择来发现这种情况的最佳答案。
遗传算法中使用了以下术语 -
初始人口 -问题始于针对当前情况的潜在解决方案(个人)的集合。人口是由一定数量的人组成的。每个人都是我们试图解决的问题的潜在解决方案。一组参数塑造了一个个体(变量)。这些特征被称为基因。染色体(溶液/个体)是通过将基因连接成一串而形成的。二进制值(一串 1 和 0)通常用于编码染色体中的基因。
健身功能 -确定个人与其他人竞争的能力。基于适应度函数,我们将计算每个人(染色体/溶液)的适应度得分。适应度分数决定了个体被选中进行繁殖的可能性。
选择 -将选择最适合的人,他们的基因将传给下一代。它是如何运作的?根据他们的适应度得分,算法将选择两对个体(父母)。将选择具有高度健康水平的个体进行繁殖。有很多选择算法。
交叉(重组) -这是遗传算法最重要的阶段。交叉有多种形式。一般来说,从基因中随机选择一个交叉点,用于每对要交配的父母,以产生新的孩子并将他们插入种群中。结果,这两个父母将有两个孩子。
Mutation -这是一种遗传算子,以低随机频率应用于产生的新后代的一部分。这意味着位串中的位数经常被交换。
终止 -如果人口没有产生与上一代有很大不同的孩子,则算法将结束。我们现在可以说遗传算法已经为我们的问题生成了一组解决方案。
基于模型的测试和遗传算法
了解如何将遗传算法应用于基于模型的测试是本文最重要的部分。让我们看一下遗传算法的两种基于模型的测试用途。
我们现在正在使用遗传算法中的所有术语,并演示它们如何在 GA 的各种基于模型的测试应用程序中使用。
使用 GA 从 UML 状态图创建测试数据 基于模型的测试可以从测试应用程序的 UML(统一建模语言)模型表示生成测试用例和可执行测试脚本。使用统一建模语言 (UML) 状态图,可以利用遗传算法来产生测试数据。
使用 UML 状态图时请记住以下术语 -
状态图(state chart diagrams)用于表示任何复杂的特性或描述完整系统、子系统甚至系统内单个项目的动态行为。
在编码之前,基于模型的测试用于从 UML 状态图中提取测试用例。因此,我们可以为任何程序规范创建测试套件。规范经常以 UML 图或正式语言规范的形式呈现。
触发器,类似于事件,开始从一种状态到另一种状态的转换。
警戒条件是在发生转换之前必须满足的布尔条件。
发生转换时发生的动作(活动)称为影响。
如前所述,为了使用遗传算法,我们必须首先建立原始人群(染色体)。这个初始人口将是我们挑战的解决方案的集合。
基于模型的测试挑战 -
在任何公司部署 MBT 显然都需要大量的金钱和工作。
学习曲线会更长,模型会更难理解。
模型测试的好处 -
MBT 具有以下优点 -
简单的测试用例/套件维护
节省成本提高了测试覆盖率
可以在 n 台计算机上执行各种测试
早期缺陷识别
缺陷数量增加
节省时间
提高测试人员的工作满意度
结论
在测试期间,测试人员无论如何都会创建心智模型。这些心智模型可以转化为纸质模型。这有助于测试人员的可读性和可重用性。
基于模型的测试是一种相对较新的软件测试方法。下图描述了软件测试的演变 -
以上是 基于模型的测试教程 的全部内容, 来源链接: utcz.com/z/363123.html