共计 2630 个字符,预计需要花费 7 分钟才能阅读完成。
摘要: 软件品质是掂量一个软件是否胜利的重要规范,在软件的生命周期中,自动化测试金字塔给大家提供了一种测试策略,依据我的项目具体的状况,优化测试流动,最终让软件品质失去晋升。
本文分享自华为云社区《测试金字塔,你在哪一层?》,作者:麻利的小智。
前言
软件品质是掂量一个软件是否胜利的重要规范,在软件的生命周期中,如果没有良好的品质管控,很容易造成产品质量不满足客户预期,最终导致我的项目交付艰难。软件品质能够通过规范化的研发流程、零碎的软件测试等形式进行保障,本文咱们就聊点测试相干的内容。
测试金字塔
软件测试是随同着软件开发一起诞生的,随着软件规模大型化,构造复杂化,软件测试也从最后的简略“调试”,倒退到当今的自动化测试。原始的“调试”,在这里就不细聊了,那自动化测试是什么呢?自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,自动化测试通常会借助某些工具或者框架。尽管不能齐全取代手工测试,但相比手工测试来讲,自动化测试能够缩小人力老本,升高反复工作,从而更疾速、高效的进行测试流动。
测试金字塔是一种自动化测试过程的金字塔形策略构造,用来领导软件开发过程中,各层自动化测试的投入比例,其最早由 Mike Cohn 在 2009 年的著述《Scrum 麻利软件开发》中提出。Mike Cohn 在书中指出:测试金字塔从上到下分为三层,别离是 UI 测试、服务 / 接口测试、单元测试,越靠近金字塔底部的测试流动,投入的工作量应该越多,即单元测试投入工作量最多,接口测试次之,UI 测试投入起码。
测试金字塔最底层——单元测试
单元测试属于代码级别的测试,编写成本低,执行速度快,可能疾速定位问题,极限编程中的 TDD 测试驱动开发很多时候都是围绕单元测试发展。单元测试能够说是最低级别的测试流动,对于单元测试的内容也很多,在这不做过多介绍。
测试金字塔中间层——接口测试
随着微服务架构的宽泛遍及,API 也成为大势所趋。因此,对 API 进行继续测试成为 DevOps 的关注点之一,如果没有 API 接口测试,微服务架构的施行对于企业将会成为一场劫难。
接口测试是测试零碎组件间接口的一种测试,次要用于测试零碎与内部其余零碎之间的接口,以及零碎外部各个子模块之间的接口。接口测试既可关注单个接口的参数取值和参数取值组合的合理性,也能够验证产品性能的完整性和正确性。绝对比单元测试,服务 / 接口测试的覆盖范围要大一些。
接口测试的重点如下:
• 查看接口参数传递的正确性;
• 接口性能实现的正确性;
• 输入后果的正确性;
• 对各种异常情况的容错解决的完整性和合理性。
如何进行接口测试
Swagger 是一种可生成、形容并调用 RESTFUL 格调 API 的框架。Swagger 官网的样例 Demo——petstore(宠物商店)对外提供一系列能够对宠物信息进行增删改查的接口,本文应用这些接口进行接口测试。
1. 筹备工作
首先,通过华为云 DevCloud 的云测性能中的“测试用例”,创立接口测试的测试用例。
将 petstore 我的项目的网址设为默认环境变量,这里给他命名为“pethost”,测试用例可通过“$$petstore”的模式,间接调用该变量。
环境变量也能够不设置,但每次测试都须要输出 petstore 的域名,很麻烦,设置成环境变量能够缩小工作量,云测中输出“$$”能够间接关联预设的环境变量。
2. 创立“增加宠物信息”的接口测试用例
petstore 我的项目中,“增加宠物信息”是通过 post 申请实现的,该申请的申请体如下所示
创立“URL 申请”,将申请类型设置为“POST”,申请地址为“$${pethost}/v2/pet”,在申请体中输出上图 Json 字符串,申请局部设置实现。
接下来,咱们设计咱们预期的查看后果,冀望返回值是 200,即胜利,如果返回其余响应码则测试失败。
同时,还要对响应体中的某些参数做提取,便于后续业务的测试应用。在这里咱们提取相应体中 category.id 的值,并将他赋给局部变量“id”。
3. 执行用例并查看返回值
申请设置实现后,咱们执行用例,能够看到响应码是 200,后果是胜利的。如果想看到测试不胜利的场景,能够试试不依照参数列表规定,应用其余参数。
通过“近一次的后果”中“响应”,能够看到这次申请的返回值,返回值中提供的各类参数都能够通过上文提到的“响应提取”性能进行提取,供其余测试应用。
4. 创立“查问宠物信息”的接口测试用例
宠物信息创立实现后,咱们通过 Get 申请查问宠物是否真的增加实现。
创立“URL 申请”,将申请类型设置为“GET”,申请地址中,通过“$id”间接调用之前接口返回的 id(同“$$”,“$”能够间接关联预设的局部变量)。
响应码设置为 200,预计测试通过。
5. 执行用例查看是否能够查问到宠物信息
执行用例后能够看到响应码是 200,和预期相符,测试胜利。
通过“id”查问到的宠物信息也和之前创立的宠物信息统一,示意这两个性能是 OK 的。
6. 创立“删除宠物信息”的接口测试用例
测试实现后,须要删除测试数据。
创立“URL 申请”,将申请类型设置为“DELETE”,同样通过“$id”删除对应的宠物信息。
响应码设置为 200,预计测试通过。
7. 删除测试用例
执行用例后能够看到响应码是 200,和预期相符,测试胜利。
通过响应体也能够看出,宠物信息删除实现。
以上就是一个简略的接口测试的例子,体现了接口测试既能够测试单个接口的性能,也能够测试产品多个模块联动的性能。
测试金字塔最高层——UI 测试
在测试金字塔中,UI 测试的覆盖范围广,靠近业务侧,然而编写老本高、执行速度和稳定性都会降落,问题定位也很难。所以在测试设计中,要缩小界面层的测试。如果是上层测试能够笼罩的场景和逻辑,为了进步测试的速度和节俭资源,尽量放到上层去进行。
总结
软件想要有一个好的品质,谨严的测试流动必不可少,自动化测试金字塔给大家提供了一种测试策略,咱们要依据我的项目具体的状况,优化测试流动,最终让软件品质失去晋升。
最近华为云与高校联结发动的开学季流动,邀请了华为专家、斩获 21offer 的优良学长,采纳线上直播 + 赛道闯关 + 丰富奖品的模式进行,旨在让同学们理解华为前沿研发理念和先进技术,体验用华为云不同产品进行场景利用的开发,加深高校学生对企业技术利用的理解,让校园学习与企业技术利用接轨,为高校学生的择业待业进行助力赋能。
奖品多多,理解一下: 华为云 DevCloud&AI&IoT 新学期挑战赛
点击关注,第一工夫理解华为云陈腐技术~