一个沉重的问题:未来已来,软件测试还有价值吗?
作者:互联网
前言
在过去的几十年里,软件测试已经根据用于执行不同活动的工具和使用这些工具的人的心态发生了变化。那时用于软件测试的工具很少,但是现在我们有很多的工具可以选择,从专有的到开源的。同样地,人们开始把软件测试者当作信息代理者而不是看门人,并且在敏捷的世界中已经出现很多积极的开发团队,这些开发对团队在软件开发生命周期中遵循的流程进行了重要的更改。技术的进步要感谢这些进化。
从我们看待软件、评估风险、考虑复杂性、设计我们的测试方法和策略,以及帮助向用户发布一个稳定的产品的方式来看,技术确实对我们测试软件的方式产生了影响,并且这种影响将只会随着技术的进步而继续。在高层次上,我们已经看到将决定软件测试未来的5件重要事情。
1.人工智能
大约5年前,每个人都在谈论“移动优先”,并为用户提供使用手机网页、本机和混合应用程序的移动体验。现在,新的流行词是人工智能。它在自动驾驶汽车、家庭助理(人们当然喜欢Alexa)、计算机视觉、健康保健、金融,以及现在的软件测试领域都有使用。
现在,在市场上很少有可靠的工具使用机器学习来帮助编写程序和执行功能测试、端到端测试和回归测试。它们主要集中在基于用户界面的测试自动化——用户创造的测试越多,算法变得越智能,这使得测试更稳定。
幸亏有人工智能,有一些我们可以期望开始看到的在测试中的好处:
更容易编写测试代码
降低测试脚本的维护工作
减少片状测试
使非技术人们开始进行自动化
更容易集成CI/CD
更多可复用测试
举个例子,我用Cucumber、 Java和Appium构建了一个自动化框架。虽然我有一个健壮的框架,并且在编写自定义代码来执行各种操作时具有很大的灵活性,但我经常遇到维护方面的常见问题。当开发人员更改我的自动化测试已经覆盖的元素的属性时,测试开始失败。结果,我花了很多时间来维护这些测试,而不是编写新的自动化代码来覆盖实现的新功能。
这个问题现在可以通过使用人工智能从文档对象模型提取的动态定位器来解决。在实时的情况下,人工智能分析会分析DOM中的所有对象树和属性,并为特定元素创建不同属性的列表。因此,当一个元素的属性变化时,人工智能会尝试进入列表中的下一个属性来定位该元素,并一直遍历列表,直到找到该元素为止。这种测试更加稳定,测试程序的编写和执行速度会快得多,而且测试者在维护上花的时间会更少。
2.开发运营
开发运行帮助软件开发团队和运营团队更好地协作,从而确保在整个软件开发生命周期(SDLC)中有持续的自动化和监视,包括基础设施管理。
您可能会问,这将如何影响软件测试?答案是:作为测试的一部分,我们所做的一切都会改变。我预计的变化包括:
需要在软件开发生命周期的开始时就启动自动化,并且确保几乎所有的测试用例都是自动化的
所有的质量保障工作都需要对齐,以确保CI/CD周期的顺利进行
需要高水平的协作,以确保在生产环境有持续的监控
所有的QA环境都需要被标准化
测试思维从“在此模块上完成测试”转变为“在发布候选版本中已经减轻了哪些业务风险?”
以上所有变化的关键是自动化。开发运营和自动化手携手并进——缺少其一,另一个将无法工作。这就是聪明的人类和工具能帮助缩短和更可靠的发布周期的地方。
我曾在一家公司工作,那里的开发、测试、运营团队之间的协作很少。我们在软件开发生命周期里发现了很多缺陷,比如更多的bug进入生产环境,不稳定的CI/CD基础设施,以及对生产监控和统计的不可见性。注意到这些差距,团队决定实施开发运营实践,每个人都开始在软件开发生命周期的每个阶段进行协作和贡献。这从需求收集开始,一直扩展到产品发布和监控上。
这种增强的协作文化开始对团队士气产生积极影响,更多自动化开始产生,整个团队开始作为一个单元一起工作。
3.质量保证即服务
就像我们有软件即服务、基础设施即服务、平台即服务一样,我们现在也有质量保障即服务。在过去的几年里,这已经成为公司满足软件测试需求的一种流行方式。
拥有质量保障即服务解决方案的公司可以通过以下方式使软件测试过程的不同方面变得更简单:
测试用例管理和维护解决方案
测试自动化工具,减少编码需求
强大的测试报告功能,包括日志、视频录制和屏幕截图
易于与CI系统集成
在过去7年做自动化的过程中,像手机、虚拟机、安全网络和测试人员等资源里,我经常遇到的一个大问题是,必须维护自己的服务器来运行自动化测试。服务器的机器有不同的问题,如存储空间,一个片状的互联网连接,处理速度慢的测试正在运行持续整个星期,和需要频繁更新的最新操作系统,构建工具,安全补丁、集成开发环境等等。这些问题可以通过质量保障即服务的提供商解决,因为他们可以为您完成所有这些活动,因此团队成员可以将精力集中在更关键的任务上。
将来,质量保障即服务的供应商将考虑更多的方法来改进他们的产品,以保持领先于他们的竞争对手,这也将使软件测试人员受益。
4.物联网
随着可穿戴设备、智能家居、联网汽车和其他基于云技术的出现,物联网已经开始成为一个大的讨论的主题。这些设备的惊人之处在于,每秒钟都有如此多的通信和集成发生。
让我们来分析一下,在高水平上,可穿戴健身追踪器发生不同通信。首先,手机app和健身追踪器需要相互沟通。你的移动应用程序捕获的数据与该应用程序的桌面、移动web和平板电脑版本无缝集成,所有这些跨设备的通信都应该实时发生。所有的数据都在云、设备和应用程序之间来回传输。人们还可以通过应用程序组成小组,互相竞争,所以这些计算和通信也需要实时进行。根据触发的不同事件,需要在正确的时间向正确的用户发送正确的通知。所有这些通信都发生在互联网上。
假设您是测试这个健身跟踪器的测试人员。从哪里开始呢?您将如何设计您的测试策略和方法?
物联网将其自身的复杂性引入软件测试。它将影响我们对测试的看法,特别是因为集成测试需要比单独测试每个组件的旧方法给予更多的关注。
举个例子,当我在一家旅游预订公司工作时,我们为Apple Watch开发了一款新的应用程序,它使用的是WatchOS (Apple Watch最初由Apple推出)。该应用程序具有有限但有用的功能,比如查看通知和奖励信息、预定以及定位酒店、航班和租车位置的能力。在测试这个应用程序时,我注意到当Apple Watch应用程序连接到我手机上的同一个应用程序时,出现了一些奇怪的问题:当我将手机上的应用程序最小化时,Apple Watch一片空白,只有一个黑屏;但当我再次在手机上打开应用程序时,黑屏消失了,Apple Watch应用程序运行正常。
这是一个很好的例子,说明了集成测试的重要性。随着越来越多的设备进入市场,这对于组织和用户来说将是至关重要的。
5.机器人
现在有做测试的机器人。有些人可能认为这是可怕的工作保障,但我仍然相信,人类的思想是无法取代的。仍然需要人类来监控机器人,以确保它们在做人们期望它们做的事情,并为它们编写程序。这种可扩展性有多强?只有时间才能证明。
总之,技术的进步已经开始影响我们进行软件测试的方式。这也导致公司重新思考他们的组织结构:QA团队正在向嵌入开发团队的方向发展,并且整个团队将拥有质量。研究和开发团队与开发团队的频繁互动也将变得非常重要,以使产品更智能,对客户更有用。
还需要有处理大量数据的程序,以及适当的计算能力来梳理这些数据以获得有用的信息和反馈。最后,为了使这一切成为现实,公司需要采用精益流程,并且更加透明,以防止成为创新的一个障碍。精益转型对有效增长至关重要。
重要的是改变我们看待系统的思维方式,并相应地进行测试。我们可以选择忽略它,也可以选择接受它。你将会怎么做?
微信搜索程序员二黑关注即可领取Python自动化测试超硬核资源啦!
标签:Apple,应用程序,已来,沉重,测试,自动化,团队,软件测试 来源: https://blog.51cto.com/u_15090928/2791556