当今激烈的商业竞争中,企业中的服务和产品需要更快速的版本迭代和高质量的软件交付,同时减少完成项目所需的成本和时间,不少企业引入了DevOps概念来提升软件研发交付效率。DevOps是开发和运营的结合,代表着一种文化和实践,强调了软件开发人员(Dev)和信息技术(IT)运营与维护(O&M)专业人员(Ops)的协作和交流,同时促进了软件交付和基础架构变更。它旨在建立一种文化和环境,使软件构建,测试和发布可以更加方便,频繁和可靠地进行。DevOps中的测试是自动化的,不同于传统的手工测试,自动化测试通过测试工具或者框架,录制编写测试脚本,对软件功能进行测试,能够快速检测错误并查找可能对用户体验产生负面影响的问题,从而更快的发布高质量产品。
本文通过介绍自动化测试体系概念,带你了解自动化测试在实现高质量产品方面的重要作用。具体内容如下:
- 什么是自动化测试
- 为什么要进行自动化测试
- 手工测试和自动化测试之间的区别
- 自动化测试如何与DevOps相适应
- Choerodon猪齿鱼如何进行自动化测试
什么是自动化测试?
自动化测试是使用工具、脚本和软件对重复、预定义的操作来执行测试用例的过程。由于自动化测试是通过自动化工具完成的,因此在增加总体测试覆盖率的同时,它在探索性测试中花费的时间更少,在维护测试脚本时花费的时间更多。
自动化测试的基本概念是测试金字塔。它演示了如何解决项目的自动化测试:构成金字塔基础的哪些部分首先要进行测试,以及在金字塔最后阶段剩下什么?
按照测试金字塔的模式,首先是单元测试层,即开发人员在编写代码时经常执行的代码测试。然后是API测试所属的服务器层。稍后,当前端完成时,将进行UI测试。
图:三层测试自动化金字塔
自动化测试的类型
- 冒烟测试: 针对每个版本或每次需求变更后,在正式测试前,对产品或系统的一次简单的验证性测试;
- 单元测试: 对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作;
- 集成测试: 是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误;
- 功能测试: 是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求,比如说逻辑功能测试,界面测试,易用性测试,安装/卸载测试,兼容性测试等;
- 性能测试: 通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
- 回归测试: 指修改了旧代码后,重新测试以确认修改没有引入新的错误或导致其他代码产生错误;
- 数据驱动测试: 一种在软件测试过程中使用的方法,用于描述直接测试的输入、可验证输出的条件表,以及测试环境的设置还有控制编码的过程;
- 黑盒测试: 又称为功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试主要测到的错误类型有:不正确或遗漏的功能;接口、界面错误;性能错误;数据结构或外部数据访问错误;初始化或终止条件错误等等。
为什么要进行自动化测试?
自动化测试是软件开发生命周期的重要组成部分, 主动修复错误需要对基础代码进行的每个小更改都进行测试和重新测试。随着时间的流逝,回归测试的数量将会增加,测试人员将承受很大的压力,而创新和增长的时间会越来越少。此外,至少有四个因素导致测试成本上升:
- 跨设备、系统和平台进行测试的需求不断增加。 将测试范围从例如一个Web浏览器扩展到两个或扩展到包含移动设备会影响工作量。
- 测试用例的数量不断增加。 随着每次产品更新,涵盖更多功能所需的测试用例数量都会增加。新功能会影响需要重新测试的现有功能;常见的回归测试问题。
- 发布管道的成熟。 团队不希望仅进行一次回归测试,而是希望在发布管道的多个阶段运行测试。这有助于为开发人员提供最快的反馈,但同时也需要大量测试。
- 管理层希望增加发布数量。 为了保持其最新产品的市场地位,企业希望确保软件质量并更快速的迭代产品。 面对测试成本的增加,为了改变测试不可持续的局面,团队可以引入自动化测试以减轻测试人员的重复、不可预测、繁琐的任务。
通过自动化测试可以带来以下好处:
- 提高生产率: 可以高精度执行更多测试,产品功能测试的范围更广;
- 快速反馈: 在软件开发生命周期(SDLC)中更快,更早地执行测试时,反馈也可以更快地提供给开发人员;
- 加快产品版本迭代: 更快的测试执行和连续的反馈循环可以缩短总体SDLC,并提高发布频率;
- 成本效率::优化资源后,可以降低成本;
- 更高的敏捷性和市场响应能力: 较短的发布周期使企业可以更好地响应变化并确定资源的优先级;
- 降低人为错误的风险: 自动化测试可满足回归测试需求,将人为错误的风险降到最低;
- 提高交付质量: 高效测试可最大程度地扩大测试范围,提高产品质量;
- 更高的工作满意度: 由于消除了高度重复的任务,测试人员可以体验到更高的工作满意度。
手动和自动化测试之间的区别
在快速且连续的产品开发中,手动测试是验证终端用户工作流程的最有效方法。但实际情况是,手工测试并不能完全做到重测每个功能,持续测试工作中需要编写快速且频繁运行的自动化测试,找出生产版本中的缺陷。
通过以下对比,让我们来了解测试工作中手工测试与自动化测试之间的区别:
特征 | 手动测试 | 自动化测试 |
---|---|---|
准确性和可靠性 | 精度低,手动测试更容易出现人为错误 | 使用工具和脚本的准确性很高 |
所需时间 | 手动测试比自动化慢,手动运行测试耗时多 | 自动化运行测试用例的速度明显快于人力资源 |
投资成本 | 成本低 | 初始成本比手动测试高 |
用法 | 适用于探索性,可用性和临时测试 | 适用于回归测试,性能测试,负载测试 |
体验 | 首次使用手动测试执行测试用例很顺利,但面对频繁变化的需求,捕获回归缺陷能力有限 | 能快速适应代码频繁更改的测试 |
自动化测试如何与DevOps相适应
DevOps中持续测试是软件产品交付管道中执行自动化测试的过程,其目的是获取有关最新构建或预发布的版本中业务风险的快速连续反馈。然后,可以使用此信息来确定软件产品是否已准备好在任何给定时间通过交付管道进行升级。由于测试提早开始并连续执行,因此减少了发现和修复缺陷所需的时间和精力,可以提高交付高质量软件(满足对可接受风险水平的期望的软件)的速度和频率,并减少技术负担。
持续测试包括对功能需求和非功能需求的验证,均与自动化测试有关。对于功能测试,持续测试通常涉及单元测试,API测试,集成测试和系统测试。非功能性测试涉及诸如静态代码分析,安全性测试,性能测试等实践。
Choerodon猪齿鱼如何进行自动化测试
Choerodon猪齿鱼目前支持的自动化测试有:API测试、性能测试、流量回归测试、UI测试,允许测试人员通过关键测试信息来完成测试操作,无需编程。
ChoerodonAPI测试模块通过集成Jmeter,实现了API用例的添加、归集、管理与执行的功能。其中支持基于接口URL或Swagger文档快速编排接口测试用例,而导入或添加API测试用例的整个过程免代码编写,技术门槛低,适合敏捷团队中各个角色使用。
Choerodon性能测试也是通过集成Jmeter测试工具,支持用户在已有的测试任务基础上调整执行参数(线程数、预热时长、循环数)来对系统的各项性能指标进行测试,从而发现性能瓶颈与性能缺陷,以便更好地优化系统或产品的整体性能。
Choerodon流量回归测试适用于:批量录制产品界面操作并将得到的用例进行集中管理,以便后续进行批量的回归测试。此功能通过使用Goreplay录制产品界面中的操作生成流量文件,然后将其导入Choerodon平台生成用例进行管理与执行。
ChoerodonUI测试适用于:测试人员通过插件录制web应用的界面操作,生成对应的测试用例与步骤;而后便能直接执行对应的测试文件来对界面UI操作进行测试。
结论
自动化测试能够提高测试人员的工作效率并且优化测试速度,提高软件产品的准确性和稳定性,代替人工完成各种业务场景,使资源最大化利用,增加软件的信任度。希望以上关于自动化测试的概念对你有所帮助。
关于猪齿鱼
Choerodon猪齿鱼作为全场景效能平台,是基于的Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷,持续交付,容器环境,微服务,DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而转变,更替代地交付更稳定的软件。
更多内容
大家可以通过以下社区途径了解Choerodon猪齿鱼文档,最新动态,产品特性:
【Choerodon官网】
【汉得开放平台】
【汉得开放论坛】
https://openforum.hand-china.com/
也可以加入Choerodon猪齿鱼官方社区用户交流群,交流猪齿鱼使用心得,Docker,微服务,K8S,敏捷管理等相关理论实践心得,群同步更新版本更新等信息,大家可以加群讨论交流。
①-Choerodon猪齿鱼官方交流(已满);
②-Choerodon猪齿鱼官方交流(可加);【微信号发至客服邮箱choerodon@vip.hand-china.com,运营小伙伴拉您入官方交流群】
欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。