测试是产品交付市场前的最后桥梁,如果测试不够完善那么通往市场的桥梁随时都会坍塌。测试致力于保障开发质量,是软件开发周期必不可少的重要环节。
早期软件项目只有开发人员,当时人们对于软件的容错性非常高,没有测试的环节,也没有测试的概念。随着软件的数量急剧膨胀,软件需求日趋复杂,维护的难度越来越大,大家开始对软件测试有了基本的概念。近年来,互联网发展的越来越大,越来越多的企业加入软件产业,软件覆盖的功能也越来越贴近人们的生活,除了功能,人们更在乎使用体验。而当下最热的一个词莫过于AI了,可以预见的是,未来的测试技术将趋近于智能。
做测试很痛苦,但它关乎到用户体验和数据安全,甚至人身安全,不能不做。软件质量问题会使开发维护费用和用户的使用成本大幅增加,造成公司信誉下降,而一些关键应用领域的质量问题,更会造成灾难性的后果。
从一些软件故障说起
1. 2019年5月,SAP严重漏洞使5万家企业关键业务易受网络攻击
Onapsis研究实验室的网络安全团队声称,针对SAP软件两个技术组件的名为10KBlaze的漏洞会导致SAP应用软件中招,包括删除关键业务型应用软件数据以及窃取或篡改敏感信息。远程攻击者只要略懂一些技术知识和通过网络连接到易受攻击的系统,就可以执行攻击。使用SAP NetWeaver和S/4HANA的多达5万家公司和100万个生产系统存在配置不当的问题。
2. 2019年5月,Azure云宕机3个小时
在过去的几年里,AWS、微软Azure、谷歌云、阿里云等,任何一家巨头都没能实现100%的可靠性。由于DNS配置失误,微软Azure云在全球范围内处于不稳定的状态。这次影响整个平台的故障破坏了全球各地由微软托管的各种系统:从Azure SQL数据库和App Services,到多因子身份验证、Microsoft 365、Teams、Dynamics、SharePoint Online和OneDrive。
3.2019年8月,起亚宣布召回11423辆2019款Optima轿车
这些车辆的生产日期在2018年5月21日至2019年5月29日之间。召回的原因是起亚的前置碰撞预警系统,其中包括了自动紧急刹车功能。起亚表示,他们所发现的一个软件错误可能会导致车辆忽略前方处于静止状态下的其他车辆,不会对司机进行警告,也不会在需要时启动自动刹车功能。
软件质量——总体质量的提升与重大质量事故的涌现
当下,软件总体质量有所提升,但质量事故仍不断涌现。不管是操作系统、办公软件,还是手机APP,整体质量都有提升,但是,一系列质量事故的出现又在告诉我们,我们在软件质量和测试上的欠缺还非常多。
随着世界不断的数字化、数据化,我们目睹了技术进步的巨大变化。移动互联网的红利正从线上转移到线下,并带动传统行业在未来十年发生巨大的转型,而随着互联网及传统行业的公司逐渐转向数据驱动的运营方式,测试也被赋予了更多的含义。
目前,很多企业已采用了敏捷与DevOps, 以应对快速变化的需求,而为了有效地实施DevOps实践,软件团队不能忽视测试自动化,因为它是DevOps过程的基本要素。与此同时,AI和机器学习技术的不断成熟和发展,我们正在看到更多应用它们来解决质量预测,测试用例优先级排列,故障分类和分布等问题的实践。
值得关注的测试趋势
1.测试自动化,以及手动和自动化的集成
传统上软件测试的工作一般都是由测试人员编写脚本来对软件包括前后端在内的不同部分进行测试,这个过程往往需要消耗很多的时间。而一旦软件进行了变更,脚本也得做相应调整,然后还要进行费时的调试工作。
测试自动化能够帮助测试团队将他们的时间和努力专注到测试用例上,而不必过于管理测试需求。自动化测试则负责跟踪和管理所有的测试需求,以及测试那些需要涉及到的测试类型,有助于确保高质量的软件交付。专业的工具被用于控制测试的执行,从而将实际结果与预期结果做比较。
Tricentis是一家为企业提供软件自动化测试解决方案的奥地利企业,其自动化软件测试解决方案Tosca可以自行扫描应用包括GUI和API,对代码进行解析,从业务层对应用的功能做出解读,并且创建出测试的功能模块。然后对应用进行测试,测试支持.NET、HTML、Java等多种语言。如果程序发生变更的话,只需对其进行重新扫描即可,帮助用户优化测试资产的可重用性。与许多其他的测试自动化工具一样,它支持广泛的技术和应用程序,如web、mobile和API。Tosca还具有集成管理、风险分析和分布式执行的特性。
越来越多的质量保证专业人员会结合使用手动和自动化测试方法,来相互补足短板,并达到相得益彰的效果。不过,手动测试仍在整个测试领域占据着主导地位,而且特别是在可用性和手工设计等方面。
2.测试的未来:AI+测试,更智能的测试
纵观测试行业,从最初的人工手动测试,到后来的工具测试,再到目前市面上主流的自动化测试,整个行业在技术和流程上,基本已经进入到了一个成熟和稳定的阶段。
有没有可能让测试工具可以像机器像人一样,即使界面和环境发生了改变,它还能认识?
近日,Testin云测正式发布全新AI测试产品iTestin,其融合了自然语言处理、文本识别、图标识别等技术,测试人员只需要用自然语言即可实现测试编程:测试人员只需在界面中输入点击、等待、检查、长按、输入等自然语言的文字描述,后台的AI就能准确实时的在真机上进行完整无误的操作和相关指令,完成测试自动化操作。
通过将 AI 与自动化测试相结合,有助于自动化、全路径探索应用的各种显在或是潜在问题,提取特征训练进行业务功能的识别,并智能生成测试报告。AI 的加入还有助于实现对功能模块的自动探索以及执行过程的可视化,使得测试环节定位更加迅速准确。对于用户来说,自动化的测试管理和测试用例创建能够显著降低测试时间与资源的浪费,大大加快应用上市的进程。
头部公司的测试实践:智能化、自动化、DevOps
1.阿里正在尝试着让整个测试工作变得更简单,通过降低门槛,让开发、算法或者其他同学都能够参与进来,这个阶段主要是向测试平台或者测试中台的演进。
阿里打造了协同化的测试模式,将低风险和算法的项目通过智能化线下测试平台Markov来做。该平台具备非常先进的智能化技术,如智能回归,用例智能推荐,数据智能推荐,冒烟回归技术,用例膨胀,智能排查闭环等,通过智能化、可视化、产品化的方式,让开发、算法的同学进行自动化的测试,由系统来判定准入,判定准出,系统通过了,就可以随时上线。在功能测试的用例生成,用例回归,排查阶段,都体现出了智能化的效果。
2.360搜索通过CI/CD全流程自动化、功能、性能、接口测试自动化,再加上业务监控、线上产品质量的自动化分析、AB实验以及一套完善的数据分析系统来保障线上服务质量。
360搜索在流程自动化方面做了全流程的自动化体系建设,通过线上质量的自动化分析系统进行保障。具体来说,在项目管理上,把时光轴、项目时间节点都和数据关联起来;同时,打造了自有功能自动化、前端自动化、接口自动化平台;而在专项测试上,采用性能测试平台和DIFF平台。在自动化分析实践中,360搜索采用了很多领先的技术,比如图片处理,机器学习等。通过智能推荐sug,进行语料处理,主题向量变换,以及相似度计算,找出推荐的badcase。通过自动化系统部署需要的环境,360搜索可快速的切入到业务,使整体工作效率得到大幅提升,既有功能的自动化使整个发布基本不用人工干涉。
3.网易通过DevOps提升迭代效率,并突出测试的价值。通过网易OverMind平台,从需求到研发,到上线,到测试,把各个环节常规所需要用到的一些平台和工具都进行串联打通。
基于OverMind平台管理环境,实现了自动化的环境搭建,将整个环境创建的过程实现一键式自动化,环境搭建的整体效率提升了240倍。网易做了一个机器学习的服务平台,把研发日常线下所做的很多工作,如需要的日志,物料,所有特征的结果,以及模型训练的结果,通过该平台直观展示出来,在这个平台上查询日志总体的分布,物料的情况,模型的更新情况,把特征训练和模型训练方面的工作做平台化和服务化。
结语
测试正在变得越来越智能,机器学习正在为各种工作流程带来革命性的变化。虽然,AI和机器学习在测试中的应用仍处于早期阶段,但在未来几年中,我们无疑将看到更多应用它们来解决质量预测,测试用例优先级排列,故障分类和分布等问题的实践。应用AI和机器学习技术应对软件测试中的挑战已经变成业界共识,下一代测试已经到来。