在过去的几十年中,软件测试已经在“用于执行不同活动的工具”和“使用这些工具的人的思维模式”方面发展。过去只有少数工具用于软件测试,但现在我们有许多工具可供选择,从专有到开源。同样,人们已经开始将测试人员视为信息经纪人而不是看门人。并且敏捷领域出现了许多积极的发展,这些发展促成了团队在其软件开发生命周期中所遵循的流程的重大变化。科技的进步要感谢这些演变。
从我们关注软件,评估风险,考虑复杂性,设计我们的测试方法和策略,并帮助向客户发布稳定产品等方面,技术对我们如何测试软件产生了影响。而且这种影响只会随着技术的进步而持续。
在高层次上,我们已经看到五个关键的东西将会塑造软件测试的未来。
1、人工智能
大约五年前,每个人都在谈论“移动优先”,并通过移动WEB,本地和混合应用为用户提供移动体验。现在,新的流行语是AI。在自动驾驶汽车,家庭助理,计算机视觉,医疗保健,金融,以及现在的软件测试。
目前市场上使用机器学习帮助进行功能测试、端到端测试和回归测试的编写和执行的可靠工具非常少。它们主要集中在基于UI的测试自动化中 - 用户创建的测试越多,算法变得越聪明,这使测试更加稳定。
以下是我们可以期待在AI测试中看到的一些好处:
- 更轻松地编写测试
- 降低测试脚本的维护工作量
- 更少的片状测试
- 让非技术人员开始自动化
- 更容易CI/CD集成
- 更多的可重用测试
例如,我使用Cucumber,Java和Appium构建了一个自动化框架。尽管我在编写自定义代码以执行各种操作时拥有强大的框架和很大的灵活性,但我经常遇到常见的维护问题。当开发人员更改已由我的自动化测试覆盖的元素的属性时,测试开始失败。因此,我花了很多时间来维护这些测试,而不是编写新的自动化代码来覆盖已实现的新功能。
这个问题现在可以通过使用AI从文档对象模型(DOM)中提取的动态定位器来解决。AI实时分析DOM中的所有对象树和属性,并可为特定元素创建不同属性的列表。所以,当一个元素的一个属性发生变化时,AI会尝试去列表中的下一个属性来定位该元素并继续浏览该列表,直到该元素被定位。测试更稳定,测试的创作和执行速度更快,测试人员不得不花费更少的时间进行维护。
2、DevOps
DevOps帮助软件开发团队和运营团队更好地协作,从而确保在整个软件开发生命周期(SDLC)中始终保持自动化和监控,其中还包括基础架构管理。
你可能会问,这会如何影响软件测试?我们作为测试的一部分所做的一切都会改变。我预见到的变化包括:
- 需要在SDLC开始时自动启动,并确保几乎所有的测试案例都是自动化的
- 所有质量保证任务都需要进行调整以确保CI / CD周期的顺利进行
- 为确保在生产环境中持续监控,需要高度的协作
- 所有QA环境都需要标准化
- 测试思维模式从“完成对该模块的测试”变为“在候选版本中已经减轻的业务风险?”
所有上述变化的关键是自动化。DevOps和自动化并驾齐驱-缺一不可。这就是智能人员和工具可以帮助实现更短,更可靠的发布周期。
我曾在一家开发,测试和运营团队之间进行最低限度协作的公司工作。我们发现SDLC周期存在很多缺陷,包括进入生产的错误增多,CI / CD基础设施不稳定,以及对生产监控和统计的可见性较低。注意到这些差距,团队决定实施DevOps实践,每个人都开始在SDLC的每个阶段进行合作和贡献。这从需求收集开始,一直延伸到生产发布和监控。
这种不断增加的合作文化开始对团队士气产生积极影响,实现更多自动化,并且整个团队开始作为一个整体合作。
3、QA即服务
就像我们如何拥有SaaS(软件即服务),IaaS(基础架构即服务)和PaaS(平台即服务)一样,我们现在拥有QAaaS。在过去的几年中,这已经成为企业满足软件测试需求的一种流行方式。
拥有QAaaS解决方案的公司通过提供以下方面使软件测试过程的各个方面更加容易:
- 测试用例管理和维护解决方案
- 测试自动化工具不需要编码
- 具有日志、视频记录和截图的强大测试报告功能
- 与CI系统轻松集成
在过去七年中,我一直遇到的一个重大问题是必须维护自己的服务器以运行自动化测试。服务器机器有不同的问题,比如耗尽存储空间,片状互联网连接,针对整个星期连续运行的测试数量的处理速度慢,需要经常用最新的操作系统,构建工具进行更新,安全补丁,IDE等。QaaS提供商可以解决这些问题,因为他们可以为您完成所有这些活动,因此团队成员可以专注于更关键的任务。
未来,QaaS提供商将考虑采用更多方法来改进他们的产品以保持领先于竞争对手的地位,这也将使软件测试人员受益。
4、物联网
随着可穿戴设备,智能家居,联网汽车和其他基于云技术的出现,物联网(IoT)已成为讨论的一大话题。关于这些设备的惊人之处在于每秒钟都会发生如此多的通信和集成。
让我们从高层次分析,与穿戴式健身追踪器进行不同的通信。首先,移动应用和健身追踪器需要相互通信。你的移动应用捕获的数据应与应用的桌面,移动网站和平板电脑版本无缝集成,并且跨设备的所有这些通信都应实时发生。所有数据都来自云端,设备和应用。人们也可以通过应用组成团队并相互竞争,因此这些计算和通信也需要实时进行。根据触发的不同事件,正确的通知需要在正确的时间发送给正确的用户。所有这些通信都通过互联网进行。
想象一下,你是测试这款健身追踪器的测试者。你从哪里开始?你将如何设计你的测试策略和方法?
物联网将其自身的复杂程度引入到软件测试中。这将影响我们对测试的思考方式,特别是因为需要对集成测试进行更多的集中测试,而不是单独测试每个组件的旧方法。
例如,当我在一家旅行预订公司工作时,我们想出了一款使用WatchOS构建的Apple Watch的新应用(当它首次由Apple推出时)。该应用具有有限但有用的功能,如查看通知和奖励信息,预订以及酒店,航班和汽车租赁位置的功能。在测试此应用时,我注意到当Apple Watch应用连接到手机上的相同应用时,出现了一些奇怪的问题:当我最小化手机上的应用时,Apple Watch变得空白,只显示黑屏;但是当我再次在手机上打开应用时,黑屏消失了,Apple Watch应用正常运行。
这是完成集成测试很重要的一个完美例子。随着越来越多的设备进入市场,这对组织和用户来说至关重要。
5、机器人
现在有机器人进行测试。有些人可能会认为这在工作保障方面很可怕,但我仍然相信人类的思想永远不能被取代。仍然需要人类来监控机器人,以确保它们正在做他们期望的事情,并且实际上对他们进行编程。这个可能性有多远?只有时间会给出答案。
总之,技术的进步已经开始影响我们进行软件测试的方式。它也使公司重新思考他们的组织结构:QA团队正在向嵌入开发团队的方向发展,整个团队将拥有自己的技能。对于研发团队来说,与开发团队频繁互动以使产品更加智能化,对客户更有用也将变得重要。
为了实现这一切,企业需要采用精益流程,并且要更加透明,以防止成为创新的障碍。精益转型对于有效增长至关重要。
最后,重要的是改变我们对如何看待系统及测试它们的思维模式。我们可以选择忽略它,也可以拥抱它。你会怎么做?
由ruink翻译自 Raj Subramanian 的《5 Things That Will Impact the Future of Software Testing》一文。
Zsnow1216(2018-05-10 16:12:09)
未来的测试应该是一种标准的认证。与需求平行,甚至要先于需求提出对于质量的要求。