0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

自动化测试技术为主线,带你了解单元测试、代码级集成测试

发表时间:2023-09-16 19:04:28

文章来源:炫佑科技

浏览次数:185

菏泽炫佑科技

自动化测试技术为主线,带你了解单元测试、代码级集成测试

说到自动化测试,大家可能*熟悉的是GUI自动化测试。 例如,在早期的C/S架构中,通常使用自动化测试脚本来打开被测应用,然后在界面上以自动化的方式进行一系列操作; 再比如,今天的网站测试也是采用自动化测试脚本来打开浏览器。 浏览器,然后输入你想要访问的URL,然后使用自动化脚本来识别和定位页面元素并执行相应的操作。

因此,说到自动化测试,你的**反应可能就是GUI自动化测试。 然而,自动化测试技术存在于软件开发生命周期的各个阶段,对于提高测试效率发挥着至关重要的作用。

今天的文章,我将以不同软件开发阶段涉及到的自动化测试技术为主线,带大家了解单元测试、代码级集成测试、Web测试和GUI测试阶段的自动化技术。 希望能够帮助大家更深入的学习。 理解“自动化测试”的内涵和外延。

文章目录

单元测试自动化技术

首先,你可能会认为单元测试本身是自动化的,因为它采用等价类划分和边界值分析的方法,根据详细的软件设计来设计测试用例,然后在测试代码生成后以自动化的方式统一执行。实施的。

这个观点非常正确,但它只是其中的一部分,并没有完全描述单元测试“自动化”的内涵。 从广义上讲,单元测试阶段的“自动化”内涵不仅指测试用例执行的自动化,还包括以下五个方面:

你可能会觉得这些内容有点陌生,但是没关系。 下面我就详细的告诉大家每一项的具体含义。

一、用例框架代码生成自动化

一些框架代码应该由自动化工具生成,而不是由开发人员手动完成。 这样,单元测试开发人员可以更加关注测试逻辑覆盖率和测试数据选择,从而大大提高单元测试用例的质量和开发效率。

框架代码应该由自动化工具生成

二、自动生成部分测试输入数据

这部分意味着自动化工具可以根据不同的变量类型自动生成测试输入数据。 自动化工具本身不可能理解代码逻辑。 你可能很难理解它是如何根据需要测试的代码逻辑生成合适的输入数据并确定预期的测试结果的。 那我给大家举个例子,方便大家理解。

例如,如果一个被测函数的原型是void fun(int* p,short b),那么测试数据自动生成技术会自动为输入参数生成“null”和“non-null”两个指针p整数*页。 ,然后分别执行函数void fun(int*p,short b),观察函数的执行情况。

如果函数内部没有对空指针进行特殊处理,那么调用函数fun肯定会抛出异常,从而发现函数的设计缺陷。 同样,对于输入参数short b,会自动生成超出short范围的b,以测试函数fun的行为。

三、自动存根代码生成

简单地说,存根代码是用来替换真实代码的临时代码。 例如,函数A的内部实现调用了未实现的函数B。为了测试函数A的逻辑,需要模拟函数B。 模拟的函数B实现就是所谓的存根代码。

自动存根代码生成是指自动化工具可以扫描和分析被测代码,自动为被测函数内调用的其他函数生成可编程的存根代码,并提供基于测试用例的存根代码管理机制。 此时,单元测试开发人员只需关注存根代码内部的具体逻辑实现以及存根代码的返回值即可。

必要时,自动化工具还需要实现“权益抽取”,以满足后续代码级集成测试的需求。

那么什么是“拔桩”呢? 其实很简单。 在单元测试阶段,如果函数A内部调用的函数B是存根代码,那么在代码级集成测试阶段自动化软件开发,我们希望函数A不再调用假函数B,而是调用真实的函数B。这样的操作用真实函数 B 替换原始存根代码函数 B 的过程称为“存根”。

四、被测代码的自动化静态分析

静态分析主要是指对代码进行静态扫描,目的是识别违反编码规则或编码风格的代码行。 通常这部分工作是由自动化工具根据项目的具体编码规则和编码风格,通过内置规则和用户自定义规则自动完成。 目前比较常用的代码静态分析工具有Sonar等。

严格来说,静态分析不属于单元测试的范畴,但这部分工作通常是在单元测试阶段通过自动化工具完成的,所以我也将其纳入单元测试自动化的范畴。

五、测试覆盖率自动统计与分析

单元测试用例执行后,自动化工具可以自动统计各种测试覆盖率,包括代码行覆盖率、分支覆盖率、MC/DC覆盖率等。这些自动统计指标可以帮助您衡量单元测试用例的充分性和完整性集合,可以为您适当添加测试用例、提高测试覆盖率提供依据。

代码级集成测试的自动化技术

通俗地说,代码级集成测试是指将开发的软件模块一起测试。

从测试用例设计和测试代码结构的角度来看,代码级集成测试和单元测试非常相似。 他们都使用不同的输入参数组合调用被测试的函数并验证结果。 然而,代码级集成测试的重点更多的是软件模块之间的接口调用和数据传输。

代码级集成测试和单元测试*大的区别在于,代码级集成测试中,被测函数内部调用的其他函数必须是真实的,不允许使用存根代码代替,而在单元测试中,允许使用存根代码来模拟内部调用。 其他功能。

以上的异同决定了代码级集成测试的“自动化”内涵与单元测试非常相似,尤其是在实践层面,比如测试用例的设计方法、测试用例的代码结构、以及数据驱动思想的应用等。

然而,代码级集成测试对测试框架的要求非常高。 这个框架除了能够成功加载自己的软件模块之外,还必须能够加载其他相互依赖的模块,以便被测试的软件模块能够运行()。

由于代码级集成测试主要应用于早期的非互联网传统软件公司,当时的软件多为“单体”应用。 一个软件包含大量的功能,每个软件功能都是通过不同的内部模块来实现的。 ,那么当这些内部模块集成的时候,就需要做代码级的集成测试。

当前的开发理念追求系统复杂性解耦,尽量避免“大型单体”应用,采用Web或RPC调用协作完成各种软件功能。 所以现在的软件公司,尤其是互联网公司,基本不做代码级的集成测试,这里就不多说了。

Web 测试的自动化技术

Web测试主要指两类API测试,SOAP API和REST API。 *典型的是使用或类似的工具。 但此类测试工具对于接口操作基本都是手动发起和验证,很难与CI/CD集成,于是API自动化测试框架应运而生。

如果使用API​​自动化测试框架来开发测试用例,那么这些测试用例的形式就是代码。 为了让您更直观地了解基于代码的 API 测试用例是什么样子,我将给您提供一个“创建用户”API 的示例。 你只需要看代码的大致步骤,细化到每一行代码的含义即可。 ,稍后会讨论。

基于API自动化测试框架的测试用例示例(测试API)

对于基于代码的 API 测试用例,通常有三个主要步骤:

目前*流行的API自动测试框架是REST,它可以轻松发起API调用并验证返回结果。 关于REST的用法和优点,我会在后续的文章中详细介绍。

同样,Web测试“自动化”的内涵不仅包括API测试用例执行的自动化,还包括以下四个方面:

接下来我就依次给大家解释一下这四个方面的含义。

一、自动生成测试脚手架代码

与单元测试阶段自动生成用例框架代码类似,开发API测试时更关心的是如何设计测试用例的输入参数和组合,以及不同参数组合下的验证,而你不希望将精力浪费在非测试任务上,例如如何在代码级别组织测试用例以及如何实现测试数据驱动程序。

这时,测试脚手架代码自动生成技术就派上用场了。 它生成的测试脚手架代码通常包括对被测 API 的调用、测试数据和脚本的分离以及用于验证的空实现。

二、自动生成一些测试输入数据

这与自动生成单元测试的测试输入数据非常相似。 唯一的区别是,单元测试针对的参数是函数输入参数和函数内部输入,而API测试对应的是API参数和API调用。 数据生成的原理也遵循边值原理。

三、验证自动化

对于API调用返回结果的验证,通常关注的焦点是返回状态码(code)、结构体和具体字段值。 如果你写过这种类型的测试用例自动化测试技术为主线,带你了解单元测试、代码级集成测试,那么你就会知道字段值验证是相当麻烦的。 只有您明确写入的字段才会被验证,但通常您不能为所有字段写入。 这时候就需要经过验证的自动化技术。

验证自动化的核心思想是自动比较两个相同API调用的返回结果,自动识别差异字段值。 比较过程可以通过规则配置去除时间戳和会话ID(ID)等动态值。 这部分内容稍后讨论。

四、基于or的自动化脚本生成

当你使用或者其他工具进行Web测试时,你已经在这些工具中积累了大量的测试用例。 那么,引入基于代码实现的API测试框架后,就意味着这些测试用例需要用代码重写,而这种额外的工作量是难以接受的。

我的建议是开发一个自动代码转换生成工具。 该工具的输入是或测试用例元数据(即测试用例的JSON元文件),输出是符合API测试框架规范的基于代码的测试用例。 这样,原有的测试用例积累就可以直接转化为可以在CI/CD上直接访问的自动化测试用例。

对于新的测试用例,可以继续使用或者做初步的测试验证。 初步验证没有问题后,将直接转换为符合API测试框架规范的测试用例。 对于复杂的测试用例,也可以直接基于代码实现,灵活性会更好。

总结

我梳理了软件开发生命周期各阶段的自动化测试技术,包括单元测试、代码级集成测试、Web测试和GUI测试的自动化技术,并总结了各类自动化测试的核心方法和应用场景。技术。

希望通过这篇文章,大家能够先对自动化测试的整体情况有一个更清晰的认识。 那么在后续的文章中,我将会对这些技术进行讨论,并与大家分享一些相应的实际案例。

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多