敏捷开发实现测试自动化的6个步骤

news2024/11/16 9:18:28

许多敏捷软件开发中的自动化测试的工作都失败了,或者并没有发挥它们最大的潜力。本文研究分析了自动化测试也许不能满足测试人员和其他利益相关者期望的两个主要原因,然后列举了六个能够避免陷入这些陷阱的步骤。以下是在敏捷环境中成功实现测试自动化的方法。

为了能够跟上因敏捷软件开发而不断缩短的发布周期,很多开发团队都采用了自动化测试的方法,从而不断保证每个软件版本都符合所需的质量水平。

这是传统软件开发实践的一个重要转变:测试经常被卡在开发过程的最后,被视为了测试过程的负担,而并不是好处。因此,一个在采用敏捷软件开发,转变为DevOps文化并采用持续集成和持续交付的组织中工作的测试人员,必须对于如何有效地实施测试自动化这一日常活动有一个基本的了解。

不幸的是,敏捷软件开发中的很多测试自动化工具都失败了,或者并没有最大化它们的潜力。

我想探讨一下我认为测试自动化没有办法满足敏捷软件开发过程中测试人员和其他利益相关者期望的两个最重要的原因。然后,我们来看一下避免陷入这些陷阱的策略和手段,以便于在敏捷环境中成功实现测试自动化。

同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

软件测试工程师大忌!盲目自学软件测试真的会毁终生,能救一个是一个......

不合理的预期

我看到这么多自动化工作没有成功达到预期的两个主要原因之一是因为实施前的不合理预期。太多的团队负责人,开发和项目经理,以及C级管理人员(其他人员也并不是完全无关的)都将测试自动化视为所有测试瓶颈的一站式解决方法。

然而,实施已经一再表明:

  • 实施自动化测试需要时间,精力,和特定技能。

  • 自动化是一个帮助测试人员的活动,而并非代替测试人员

  • 不是每一项测试活动都可以通过自动化实现

然而,自动化测试依然被普遍认为能够用某种神奇的方式,按下按钮就能够为你执行所有需要的测试。经过几个月的努力搭建和运行测试,这样的概念成为一种幻想。辛苦忙于自动化测试的测试人员往往成为了替罪羊,有时候甚至被解雇。

在我看来,测试人员和自动化工程师能够解决这个问题的最佳方式是在测试之前进行思考与沟通。确保所有利益相关者在自动化方面的预期与你处于同一水平。参考组织内部以及更多软件测试和开发社区的先前的努力,从这些经验中学习。

应该如何做测试?什么可能会导致失败?不要期待自动化是解决所有测试问题的灵丹妙药。

缺乏对自动化的关注

自动化失败的另一主要原因是是因为开发团队(以及更大规模的组织)缺乏时间来创造可用的,稳定的,有效的自动化解决法案。尽管众所周知,实现自动化需要花费时间和精力,但是当时间变得紧促时,自动化仍然是第一件受影响的事。

这适用于项目中,但它也适用于在敏捷环境中工作的团队。尽管自动化是很多软件开发团队中最希望能够实现的事,但当接近尾声时,交付功能几乎总是优先于自动化。

需要注意的是,我并不认为这一定是一件坏事。毕竟最终发布的产品是可供用户使用的功能,而非确保功能正确运行的那些自动化测试用例。然而从长远看来,团队将发布产品的功能置为最高优先级,同时一次又一次地迭代发布日期的制定,已将他们的搞得异常忙碌,精辟尽力。他们似乎已经忘记了采取敏捷工作方式的目的是以小幅度增长的方式发布可供用户使用的功能,并且得到用户方的即时反馈,而非只是一味追求速度,仓促发布功能。

不允许有足够的时间来创建可靠的自动化解决方案也会产生不必要的副作用:如果你没有将自动化授予应有的优先级(且可能不是最优先考虑事项),那么你的团队成员将不太可能拥有足够的时间成为熟练的自动化工程师。我将自动化视作一种手艺,与其他手艺相类似,它需要不断的学习和磨练你的技艺。

使自动化成为敏捷开发过程的一部分

既然我们已经讲述了两个导致自动化失败的主要原因。我想提出一个分布指南来帮助您避免这些陷阱,并成功实现自动化作为软件开发活动中的一部分。这并不是一个权威指南,也许并非所有的步骤都适用于您的情况。但是按照以下步骤可能能够帮助您在敏捷自动化工作中获得成功。

1.设定合理的预期

正如我之前所说,任何自动化的成功都始于合理的预期。我发现提问及对于该问题达成的多方共识是一个设定合理预期的好方法。为什么我们首先要自动化?为什么我们认为我们需要自动化测试?

在我开来,这个问题有好的答案:“因为我们希望能够第一时间获得开发人员的反馈”,而“因为我们不想要手动进行测试”是不合理预期来源的一个主要例子。

2.将自动化测试视为软件开发

确保所有的相关方都意识到自动化测试的引入基本等同于在当前项目中又引入了另一个软件开发项目。

自动化测试作为项目进行实施需要同时考虑该项目的计划及其技术实现(您应该为其分配资源并允许在开发和维护自动化上花费时间等等),同上(您写代码,因此确保请务必保证良好的开发模式和实践,并尊重自动化测试是一门需要特定技能的手艺)。

3.为自动化分配专用资源

为了在敏捷软件开发工作中成功实现自动化测试,您需要确保所有负责创建和维护自动化的人员都具备合适的技能,并拥有足够的时间来完成。

当前项目中自动化测试人员配备的数量取决于多种因素,其中包括测试人员自身的技术能力,需要哪类自动化测试,以及被测应用程序的复杂性和风险性。如果您的团队目前没有雇佣足够的人来满足您的自动化需求,或者团队人员缺乏必要的经验,那么临时外聘专家也是一个值得考虑的选择。

4.选择一个起点

从何处着手实施自动化测试,似乎是个非常棘手的难题,正如同面对任何一个重大项目一样难以抉择。对此,我有两条建议:

  • 可以从一些简单易实现的功能着手,或者着眼于当前应用程序中的一些高风险项及重大缺陷(这有助于向利益相关者尽快展示自动化测试的附加价值。

  • 尽量避免使用到端对端自动化测试,例如使用Selenium。虽然当你想要编写自动化回归测试时,这似乎是一个很直接的选择,但这种类型的测试是编写最难,执行速度最慢,最容易失败,失败的原因有可能是待测应用程序界面的变化,也可能是用于部署过程中的同步性,亦或者环境等因素(例如,测试数据)。相反,您更应着眼于是否能够创建可靠的单元测试。

5.使自动化成为您所定义的“完成”

当您在敏捷设置中工作时,将自动化测试作为您所谓“完成”的一部分指定特征是有意义的。尽管如此,尽可能避免以下两个陷阱:

包括诸如“所有测试都应该是自动化的”,或“我们应该为所提供的每个项目实现自动化”之类的声明有时候并没有意义,反而较为繁琐,甚至完全不可能实现。换而言之,有效的定义诸如:“更新现有的自动化脚本以应对当前功能的变更”,或”在开发团队认为有必要的前提下,创建额外的自动化测试用例”。基于百分比—“百分百代码覆盖率”是一个空话。这句话完全没有说明测试的质量以及关联性。同样,“80%的测试已经实现自动化”也没有意义。首先,这基于自动化测试所执行的一对一转换,而这种方式再三被证明是无效的。但更为重要的是,您如何首先定义了80%?80%的可自动化能被所有测试所执行吗?我想你能明白我的意思。

6.学习和调整

对此你应不必感到奇怪:自动化测试是一个软件开发活动,当你在用敏捷工作方式时,应用快速反馈,快速评估和学习时有必要的。

自动化的实施并非一蹴而就的。就像您正在测试中的应用程序一样,花时间进行实验,尽早尽快评估,从错误中学习,并坚持使用有效的方法。假以时日,不断积累,自动化方法与您的软件开发工作密切相关

请注意,情况各有不同,对一个组织有效的方法未必也适用于其他组织。话虽如此,我真的相信以上内容能够帮助大多数正在努力进行有效测试的团队有所帮助。也正因此,自动化被视为改进敏捷测试工作中的一种手段。

总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1272119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统iptables扩展

目录 一. iptables规则保存 1. 导出规则保存 2. 自动重载规则 ①. 当前用户生效 ②. 全局生效 二. 自定义链 1. 新建自定义链 2. 重命名自定义链 3. 添加自定义链规则 4. 调用自定义链规则 5. 删除自定义链 三. NAT 1. SNAT 2. DNAT 3. 实验 ①. 实验要求 ②. …

设计模式-创建型模式之原型、建造者设计模式

文章目录 七、原型模式八、建造者模式 七、原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直…

C题目12:请写一个函数,判断一个数是否为质数,并在main函数中调用

一.每日小语 人的一切痛苦,本质上都是对自己的无能的愤怒。——王小波 自己思考 判断一个函数是否为质数,这个我在之前练过,我想至少两次,而这一次则是问我如何在main函数中调用,这个概念我不理解,所以我…

软件测试面试最全八股文

请你说一说测试用例的边界 参考回答: 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。 常见的边界值 1)对16-bit 的整数而言 32…

在gitlab上使用server_hooks

文章目录 1. 前置条件2. Git Hook2.1 Git Hook 分为两部分:本地和远程2.1.1 本地 Git Hook,由提交和合并等操作触发:2.1.2 远程 Git Hook,运行在网络操作上,例如接收推送的提交: 3. 操作步骤3.1 对所有的仓…

Linux 命令pwd

命令作用 pwd是Linux中一个非常有用而又十分简单的命令,pwd是词组print working directory的首字母缩写,即打印工作目录;工作目录就是你当前所处于的那个目录。 pwd始终以绝对路径的方式打印工作目录,即从根目录(/&am…

半同步复制与MHA高可用架构设计

各位道友好,鼠鼠我呀校招刚通过了移动的面试 ,但是安排的岗位是偏远县城里面的岗位,各位能给给建议吗?鼠鼠我啊真不想有时候变成销售员去卖产品!!! 半同步复制与MHA高可用架构设计 一、半同步复…

力扣202题 快乐数 双指针算法

快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#…

LeetCode(44)存在重复元素 II【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 存在重复元素 II 1.题目 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xf…

.net-去重的几种情况

文章目录 前言1. int 类型的list 去重2. string类型的 list 去重3. T泛型 List去重4. 使用HashSet List去重5. 创建静态扩展方法 总结 前言 .net 去重的几种情况 1. int 类型的list 去重 // List<int> List<int> myList new List<int>(){ 100 , 200 ,100…

波奇学C++:C++11的可变参数模板和emplace

可变参数模板 // args是参数包 template<class T,class ...Args> void _ShowList(T value, Args... args) {cout << sizeof...(args) << endl; // 2cout << value << " ";/*_ShowList(args...);*/} int main() {_ShowList(1,2,3); re…

CSS 在性能优化方面的实践

前言 CSS&#xff08;层叠样式表&#xff09;是一种用于描述网页外观和格式的语言。随着网页变得越来越复杂&#xff0c;CSS文件的大小也随之增加&#xff0c;这可能会对网页性能产生负面 .box {width: 100px;height: 100px;transition: transform 0.3s; }.box:hover {transf…

算法通关村第一关—链表高频面试题(白银)

链表高频面试题 一、五种方法解决两个链表的第一个公共子节点的问题 面试 02.07.链表相交1.首先想到的是暴力解&#xff0c;将第一个链表中的每一个结点依次与第二个链表的进行比较&#xff0c;当出现相等的结点指针时&#xff0c;即为相交结点。虽然简单&#xff0c;但是时间…

SS6810R40V/1A 步进电机驱动芯片 替代ROHM BD68610EFV

SS6810R 是一款由 PWM 电流驱动的双极低功 耗电机驱动集成芯片。 SS6810R 有两路 H 桥驱 动&#xff0c;最大输出 40V /1A。输入接口采用 Pala-IN 的驱 动方式&#xff0c;电流衰减模式可选择为快衰减、慢衰减和 混合衰减&#xff0c;且可以任意设置快衰减与慢衰减的比 例…

【Linux】firewall防火墙配置-解决Zookeeper未授权访问漏洞

背景&#xff1a; zookeeper未授权访问漏洞&#xff0c;进行限制访问&#xff0c;采用防火墙访问策略 配置步骤&#xff1a; ##查看firewall配置清单 firewall-cmd --list-all ##查到为关闭态&#xff0c;启动防火墙 systemctl start firewalld ## 添加端口&#xff0c;这里…

自动驾驶DCLC 功能规范

目录 1 概述Summary....................................................................................................... 4 1.1 目的Purpose....................................................................................................... 4 1.2 范围Ran…

主流数据库类型总结

前言&#xff1a;随着互联网的高速发展&#xff0c;为了满足不同的应用场景&#xff0c;数据库的种类越来越多容易混淆&#xff0c;所以有必要在此总结一下。数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值&#xff08;Key-…

跨境在线客服系统:打破国界的沟通壁垒

跨境在线客服系统在如今全球化的时代中扮演着重要的角色。随着电子商务的兴起&#xff0c;越来越多的企业将目光投向了国际市场。然而&#xff0c;跨境交流带来了语言、文化、时区等各种难题&#xff0c;给客服工作带来了巨大的挑战&#xff0c;而跨境在线客服系统成为了解决这…

Python编程新标准:十项好习惯提升编码质量

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 1. 编写易读易维护的代码 编写清晰易读的代码是Python编程的核心。使用描述性变量名、规范的注释和文档字符串&#xff0c;让代码易于理解和维护。 # 示例代码&#xff1a;使用描述性变量名和规范注释 total_s…

AutoCAD 2024 中文

AutoCAD 2024是一款全球知名的计算机辅助设计软件&#xff0c;由Autodesk公司开发。它提供了丰富的绘图功能和工具&#xff0c;可以满足不同领域的需求&#xff0c;支持2D和3D绘图设计&#xff0c;包括平面图、立体图、剖面图等等。此外&#xff0c;AutoCAD 2024具备强大的数据…