摘要:本文分享自华为云社区测试金字塔,你在哪一层,作者敏捷的小智。测试金字塔中间层接口测试随着微服务架构的广泛普及,也成为大势所趋。相对比单元测试,服务接口测试的覆盖范围要大一些。
摘要:软件质量是衡量一个软件是否成功的重要标准,在软件的生命周期中,自动化测试金字塔给大家提供了一种测试策略,根据项目具体的情况,优化测试活动,最终让软件质量得到提升。
本文分享自华为云社区《测试金字塔,你在哪一层?》,作者:敏捷的小智 。
软件质量是衡量一个软件是否成功的重要标准,在软件的生命周期中,如果没有良好的质量管控,很容易造成产品质量不满足客户预期,最终导致项目交付困难。软件质量可以通过规范化的研发流程、系统的软件测试等方式进行保障,本文我们就聊点测试相关的内容。
软件测试是伴随着软件开发一同诞生的,随着软件规模大型化,结构复杂化,软件测试也从最初的简单“调试”,发展到当今的自动化测试。原始的“调试”,在这里就不细聊了,那自动化测试是什么呢?自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,自动化测试通常会借助某些工具或者框架。虽然不能完全取代手工测试,但相比手工测试来讲,自动化测试可以减少人力成本,降低重复工作,从而更快速、高效的进行测试活动。
测试金字塔是一种自动化测试过程的金字塔形策略结构,用来指导软件开发过程中,各层自动化测试的投入比例,其最早由Mike Cohn在2009年的著作《Scrum敏捷软件开发》中提出。Mike Cohn在书中指出:测试金字塔从上到下分为三层,分别是UI测试、服务/接口测试、单元测试,越接近金字塔底部的测试活动,投入的工作量应该越多,即单元测试投入工作量最多,接口测试次之,UI测试投入最少。
单元测试属于代码级别的测试,编写成本低,执行速度快,能够快速定位问题,极限编程中的TDD测试驱动开发很多时候都是围绕单元测试开展。单元测试可以说是最低级别的测试活动,关于单元测试的内容也很多,在这不做过多介绍。
随着微服务架构的广泛普及,API也成为大势所趋。因而,对API进行持续测试成为DevOps的关注点之一,如果没有API接口测试,微服务架构的实施对于企业将会成为一场灾难。
接口测试是测试系统组件间接口的一种测试,主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。接口测试既可关注单个接口的参数取值和参数取值组合的合理性,也可以验证产品功能的完整性和正确性。相对比单元测试,服务/接口测试的覆盖范围要大一些。
接口测试的重点如下:
Swagger是一种可生成、描述并调用RESTFUL风格API的框架。Swagger官网的样例Demo——petstore(宠物商店)对外提供一系列可以对宠物信息进行增删改查的接口,本文使用这些接口进行接口测试。
首先,通过华为云DevCloud的云测功能中的“测试用例”,创建接口测试的测试用例。
将petstore项目的网址设为默认环境变量,这里给他命名为“pethost”,测试用例可通过“$$petstore”的形式,直接调用该变量。
环境变量也可以不设置,但每次测试都需要输入petstore的域名,很麻烦,设置成环境变量可以减少工作量,云测中输入“$$”可以直接关联预设的环境变量。
petstore项目中,“添加宠物信息”是通过post请求完成的,该请求的请求体如下所示
创建“URL请求”,将请求类型设置为“POST”,请求地址为“$${pethost}/v2/pet”,在请求体中输入上图Json字符串,请求部分设置完成。
接下来,我们设计我们预期的检查结果,期望返回值是200,即成功,如果返回其他响应码则测试失败。
同时,还要对响应体中的某些参数做提取,便于后续业务的测试使用。在这里我们提取相应体中category.id的值,并将他赋给局部变量“id”。
请求设置完成后,我们执行用例,可以看到响应码是200,结果是成功的。如果想看到测试不成功的场景,可以试试不按照参数列表规定,使用其他参数。
通过“近一次的结果”中“响应”,可以看到这次请求的返回值,返回值中提供的各类参数都可以通过上文提到的“响应提取”功能进行提取,供其他测试使用。
宠物信息创建完成后,我们通过Get请求查询宠物是否真的添加完成。
创建“URL请求”,将请求类型设置为“GET”,请求地址中,通过“$id”直接调用之前接口返回的id(同“$$”,“$”可以直接关联预设的局部变量)。
响应码设置为200,预计测试通过。
执行用例后可以看到响应码是200,和预期相符,测试成功。
通过“id”查询到的宠物信息也和之前创建的宠物信息一致,表示这两个功能是OK的。
测试完成后,需要删除测试数据。
创建“URL请求”,将请求类型设置为“DELETE”,同样通过“$id”删除对应的宠物信息。
响应码设置为200,预计测试通过。
执行用例后可以看到响应码是200,和预期相符,测试成功。
通过响应体也可以看出,宠物信息删除完成。
以上就是一个简单的接口测试的例子,体现了接口测试既可以测试单个接口的功能,也可以测试产品多个模块联动的功能。
在测试金字塔中,UI测试的覆盖范围广,接近业务侧,但是编写成本高、执行速度和稳定性都会下降,问题定位也很难。所以在测试设计中,要减少界面层的测试。如果是下层测试可以覆盖的场景和逻辑,为了提高测试的速度和节省资源,尽量放到下层去进行。
软件想要有一个好的质量,严谨的测试活动必不可少,自动化测试金字塔给大家提供了一种测试策略,我们要根据项目具体的情况,优化测试活动,最终让软件质量得到提升。
最近华为云与高校联合发起的开学季活动,邀请了华为专家、斩获21offer的优秀学长,采用线上直播+赛道闯关+丰厚奖品的形式进行,旨在让同学们了解华为前沿研发理念和先进技术,体验用华为云不同产品进行场景应用的开发,加深高校学生对企业技术应用的了解,让校园学习与企业技术应用接轨,为高校学生的择业就业进行助力赋能。
奖品多多,了解一下:华为云DevCloud&AI&IoT新学期挑战赛
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119613.html
摘要:九安卓中如何取出日志信息把安卓系统日志信息实时导入到本地运行使用某个,实时获取该的日志信息里面的返回信息接口自动化面试题一按你的理解,软件接口是什么答就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。 ...
摘要:事件冒泡阶段,从目标元素出发,向外层元素冒泡,最后到达顶层或,依次执行绑定再其上的事件。在中,利用第三个参数控制其是从哪个阶段开始,是从捕获阶段开始,而则是跳过捕获阶段,从冒泡阶段开始。 花一天时间研究完了DOM2级事件中addEventListener的执行机制,作为开山第一帖,和大家讲讲多个addEventListener同时添加时的执行先后规律:showImg(https://s...
摘要:有一句名言计算机科学中的任何问题都可以通过加上一层间接层来解决,一层不够就再加一层。计算机科学的确是靠着一层又一层的抽象与封装解决了巨量的问题。 David John Wheeler有一句名言计算机科学中的任何问题都可以通过加上一层间接层来解决,一层不够就再加一层。后半句是我加的 (* ̄︶ ̄) ,虽然有点玩笑的意思,但是也的确能说明一些问题。计算机科学的确是靠着一层又一层的抽象与封装解...
摘要:那么哪个先弹呢由于此时事件处于第二阶段,即处于目标阶段,弹出顺序取决的也不再是捕获或冒泡,而是谁在代码中先注册,因此,在这段代码中,弹出的是捕获冒泡。 这是本人的第一篇文章,欢迎大家多多批评指正! DOM2级事件中addEventListener的执行机制,多个addEventListener同时添加时的执行先后规律: W3C的DOM事件触发分为三个阶段:1.事件捕获阶段:即由最顶层元...
阅读 1611·2021-09-22 15:21
阅读 2828·2021-09-09 09:32
阅读 2647·2021-09-02 09:52
阅读 3231·2019-08-30 14:02
阅读 2192·2019-08-26 13:25
阅读 1425·2019-08-26 13:24
阅读 1565·2019-08-26 10:31
阅读 1537·2019-08-26 10:16