软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

软件测试是伴随着软件的产生而产生的。早期的软件开发过程中软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。到了上世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个时候,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能。

1、功能测试关注面比较窄

从产品质量来讲,不管测试的是PC端、Web端、还是App端的产品,功能测试都是基础。虽然也会有相关的测试流程,如需求分析、测试用例编写、用例评审、提测验收、功能测试、Bug回归等,但是很多测试人员只关注自己的需求,而不关注这个需求在产品的整个生命周期中的作用,缺乏产品的整体考量,导致在参与大型产品项目开发或与多部门进行合作时,不知如何应对。例如,在对一款App产品进行测试时,测试人员可能只会考虑App的功能本身,而对接口调用传递、服务组件的测试及后端数据的校验缺乏有效的关注。

2、过于追求测试工具的使用

最近几年,随着开源社区的流行,绝大部分行业中共存的问题,在开源社区中都能找到相应的解决方案或处理问题的工具。所以很多测试人员抱着只要学会了这些测试工具,就能解决测试工作中所有问题的想法。在测试工具的应用上缺乏尝试和创新,要么只了解公司现有的框架,要么只在公司现在的框架上编写用例,而不去了解整体框架的工作原理。或者盲目选择市面上现有的开源测试工具,仅仅满足于使用,而不去了解为什么要这么用、还有没有其他相关的工具、这个工具是如何解决我们的问题的、这个工具背后的实现原理又是什么。在借用测试工具、测试框架来解决实际的工作问题时,虽然具备工具化、工程化思维固然重要,但是更重要的是要掌握工具解决问题背后的本质和思想。

1、测试自动化

根据一份报告,全球自动化测试市场的总体规模预计将从2019年的126亿美元增长到2024年的288亿美元。在预测期间,这一增长速度以18%的复合年增长率(CAGR)令人震惊。增加DevOps和敏捷的采用是推动自动化测试市场增长的一些关键因素。

敏捷开发、持续测试、CI/CD实现和DevOps正在帮助软件组织实现频繁的代码部署和实现可靠软件交付的目标。测试自动化是这些过程中不可或缺的一部分,因为它减少了对手动测试的依赖,特别是对于重复性的任务或不需要任何人工干预的任务。

2、人工智能和机器学习

人工智能(AI)将无处不在地出现在所有的技术部门。根据一份报告,到2025年,市场规模预计将从2018年的215亿美元增至1906亿美元,在此期间复合年增长率(CAGR)为36.6%。人工智能被认为是自动化测试的未来,并将在未来的数据挖掘/创建中扮演重要角色。

2024年中国软件测试行业市场现状及趋势分析人工智能和机器学习(ML)的致命结合将被更广泛地用于更好地进行自动化测试。它将加速测试自动化的过程,包括跨浏览器测试。此外,AI & ML将在2020年成为自动化测试行业变革的催化剂。

AI和ML将成为测试创建和测试执行的组成部分。这不仅需要思维方式的转变,还需要技能的转变,这将是自动化测试的关键。这也意味着用于Selenium自动化测试和跨浏览器测试的QA工具必须在一段时间内得到发展。基于AI/ML技术的QA工具将加速对网站/web应用程序的UI/GUI测试。这些工具还将支持模式和可视化验证。

3、专注于测试左移和持续部署

大型公司,包括早期的初创公司,越来越多地使用DevOps和测试左移来收集持续的反馈,并将这些反馈整合到产品发布中。持续部署(Continuous Deployment, CD)使用selenium自动化测试来验证代码库中的更改,并将稳定的版本部署到生产环境中。使用测试左移,QA团队的工作不是独立的,而是与开发和产品团队紧密协作。

企业已经认识到DevOps的巨大潜力和产品测试和交付的持续部署。到2020年,随着DevOps逐渐发展为持续部署,将会更多地关注自动化、基于云的测试、跨浏览器测试等。QA团队将与运维团队合作,确保及时发布“高质量的产品”,使整个软件发布过程更加无缝和集成。

4、测试集中在渐进式Web应用程序上

由谷歌引入的渐进式Web应用程序(PWA)标志着移动应用程序开发新时代的到来。使用PWA,你不需要下载并安装移动电话上的应用程序,而是使用现代web功能为终端用户提供类似本地应用体验的web应用程序(app)。根据许多案例研究,PWA为Twitter、全球速卖通等公司带来了更好的用户参与度、新用户转化率等。尽管有一点需要注意,先进的web应用程序在很大程度上依赖于现代web浏览器的特性。因此,有必要确保web应用程序在旧浏览器上的功能。

5、人工智能搜索

AI/ML已经被认为是自动化测试的一个组成部分。AI 爬取在自动化测试中加入AI,使测试脚本编写过程自动化。AI 爬取使用高级ML算法在你忙于项目时抓取应用程序。

使用AI 爬取的自动化工具收集应用程序中使用的特性的重要数据,例如记录测试场景的视频、截屏、测量执行时间等。这些步骤重复许多次,并使用数据培训ML模型,使其了解工作模式。

建立在人工智能爬取的自动化工具,将当前的工作模式与作为最大ML模型一部分的数据进行比较。任何偏差,例如执行速度变慢、实现问题、GUI/UI问题都被标记为潜在问题,这些细节都被添加到最终报告中。

AI 爬取对于开发人员和测试人员非常有用,因为它提供了关于应用程序哪些部分可以工作,哪些不能工作的信息。这将有助于将重点放在被工具标记为“潜在问题”的代码/实现部分。

6、手机自动化测试

随着手机功能越来越强大,全球移动应用程序开发也呈现出惊人的增长,预计到2023年将产生140亿美元的市场价值,在2018-2023年期间,CAGR将以22%的速度增长。这使得移动应用程序测试变得极为重要,因为应用程序必须在不同的设备和操作系统上进行测试。

移动应用程序自动化测试的趋势正在上升,这主要是由上市时间缩短和对移动测试自动化的高级方法的需求推动的。尽管在DevOps过程中使用了Appium等流行的移动应用程序自动化测试工具,但是目前对测试自动化工具的使用情况并不令人鼓舞。

7、物联网(IoT)测试自动化

物联网(IoT)被认为是当今时代最热门的技术之一,随着5G和其他新兴网络技术的发展,物联网在未来将会更加突出。根据Gartner的一份报告,处于网络边缘的智能设备数量可能是传统IT角色的20多倍。

物联网(IoT)在不同的行业得到应用——嵌入式系统、制造业、政府部门、消费电子产品等等。连接产生的数据可以帮助企业获得重要的见解,并采取适当的行动来有效地运行业务。2020年物联网和工业物联网将发挥更大的作用,包括物联网应用测试。

物联网应用测试在2020年将变得更加重要,因为它有大量的优势,包括改善测试覆盖范围、在产品开发的早期阶段预防缺陷、加速自动化测试和缩短上市时间。随着越来越多的设备联网,物联网应用测试将成为对不同行业产生积极影响的关键软件测试趋势之一。

8、语音辅助技术

不仅是智能音箱,语音辅助技术现在也成为许多移动电话和家庭的一部分。你不再需要按一个键来唤醒设备,因为它可以使用适当的唤醒命令(短语)来完成。

随着应用范围的扩大,公司正投入大量资金改善语音技术的各个方面,如方言、个性化、去除语音样本中的环境噪声等。虽然语音技术在智能音箱中更为突出,但并不是很多移动应用程序都具有语音命令功能。与隐私和准确性相关的问题可能是阻碍语音辅助技术发展的因素之一。

根据谷歌研究,目前全球27%的网民使用手机语音搜索。测试语音技术非常复杂,自动化测试框架需要在其路线图中适应“语音”。测试自动化框架将不得不进化到考虑语音命令的测试,我们将在2020年看到许多这样的期望变成现实。

9、大数据测试

随着大数据的出现,不同行业的企业拥有的大量数据都被用来作为参考,为做出明智的商业决策提供依据。无论数据是结构化的还是非结构化的,大数据的质量都是非常重要的。功能测试和性能测试是大数据测试的重要组成部分,也是数据质量的重要组成部分。

更多软件测试行业深度分析,请点击查看中研普华产业研究院发布的《》。