干货分享|误报多、效率低、难定位……软件测试难题一网打尽
模糊测试
8/18/2023
来源

首图.gif

近年来,软件行业的发展形势可谓迅猛,相应地对软件开发提出了更高的要求,对软件测试的重视程度也不得不加强。软件测试是一种系统性的活动,旨在评估软件产品的功能、性能和安全性,它可以帮助发现潜在的缺陷、错误和漏洞,以确保软件产品能够按照预期的方式运行。


此前,我们在《浅谈模糊测试对软件质量保障的推动作用》一文中曾提到“软件测试是发现bug的有效手段,虽然软件测试不能等同于软件质量保证(SQA),但测试可以有效反馈质量情况,间接推动质量改进,是软件质量保证的主要手段之一。


软件测试的重要性不言而喻。然而,在实际操作中,软件测试的过程和结果并不总是理想的。测试误报率高、测试效率无法满足需求、出现问题难以定位等难题无不困扰着测试人员。


那么,致使这些现象出现的原因是什么?又该如何应对以避免这些问题呢?


首先我们来了解下这些问题的危害、产生的原因以及应对方案的现状。


误报多

误报是指不存在安全威胁的地方发出安全警报,也即测试结果显示存在问题,实际上没有问题。


误报会造成干扰,使安全团队检测和解决实际的安全风险的难度提升,使组织快速有效地响应安全问题的能力被削弱;此外,因为误报的存在,团队会浪费大量时间调查不存在的安全问题,缺乏解决实际安全问题的时间。


关于误报产生的原因,下面总结了几点:

  • 过时的漏洞数据:许多测试工具需要访问漏洞数据库(如NVD),然后确定应用程序中是否存在数据库中标识的漏洞。漏洞数据库集中了有关已知漏洞的数据,但数据库并不总是最新的,过时的漏洞数据可能导致误报。
  • 配置数据:软件测试工具通常会分析与应用程序相关的配置数据以评估风险,当无法准确分析时,可能导致误报;而即使能够准确分析,如果扫描的配置数据不准确或已过时,也可能导致误报。
  • 警报阈值低:如果把应生成的警报类型和级别配置得过于敏感,测试工具会标记不存在或无关紧要的风险,从而产生误报。


正确配置安全测试工具,一定程度上可以减少误报,但要实现“零误报”,仍有很大难度。


效率低

随着软件规模的加大,加上软件质量保障的硬性需求,各企业在软件测试工作中投入的人力、物力逐渐加大,在软件开发过程中,软件测试成本占可以达到总开发成本的30%左右,如何提高测试效率是各组织面临的严峻问题。


谈到提效,绕不开的是“自动化测试”,自动化测试是通过一些自动化测试工具模拟人工操作验证其结果来完成整个测试过程。


自动化测试技术的普及已趋向于大众化,但实际应用却并没有想象中的乐观。

  • 目前自动化测试多用于耗时且可重复的测试(例如回归测试),以提高效率、减少人工成本,但某些测试场景是很难自动化的;
  • 大多数自动化测试工具对测试人员仍有一定要求,需要具备一定的代码知识和技能,因为测试人员需要开展编写测试脚本、调试脚本、分析测试结果等工作。


不过,融合了人工智能及机器学习的自动化测试工具和框架,无疑会更智能、更高效。


定位难

软件缺陷定位即根据缺陷报告中的信息找到引发该缺陷的相关源代码,是软件缺陷修复任务的一个重要步骤。


一个开发项目通常包含成百上千甚至更多的源文件,仅仅依靠开发人员进行人工缺陷定位十分困难且费时。各组织及研究者们提出了多种自动化的缺陷定位解决方法,以辅助开发人员进行缺陷定位,提高缺陷处理的效率。按照是否需要执行测试用例划分为动态缺陷定位方法静态缺陷定位方法


动态缺陷定位方法由于直接运行目标程序,通常可以在较细的粒度上对缺陷进行定位,但是需要消耗执行程序的时间和资源成本;静态缺陷定位方法主要依赖于缺陷报告、源代码和开发过程中产生的一些静态信息来定位缺陷,优势在于使用简单,成本低廉(不需要运行代码),但定位粒度较粗糙,通常在文件或者方法级别对缺陷进行定位。


两类自动化缺陷定位方法各有优劣,且相关研究在实际中的应用并不是特别广泛,要更好更快地修复缺陷,需要兼顾易用、低成本、高效率等优势的技术。



除提到的这三个问题之外,仍有测试不充分、未知缺陷难查找等难点。那么,该如何解决呢?


近期,AIGC的爆发引发了对其在软件测试中的应用可能性的广泛研究和探讨,其实人工智能早已在软件测试中发挥作用。


人工智能技术已经发展了几十年,最早只有专家知识库以及断统计方法,现在已经具备了深度学习与融合、人机互动、自主操作等功能,对很多行业都产生了较大的推动作用。人工智能与测试技术的深度融合可以使测试工具具备高效的自动化能力、快速的学习能力以及对大规模数据的处理能力,进而破解测试难点,提高软件质量


我国已经有一些企业在相关领域取得了重大突破,比如安般科技推出的智能模糊测试系统,基于运行反馈和人工智能技术,可以变异生成大量有针对性的测试用例,大幅提升测试覆盖率,快速发现并精准定位程序缺陷,进一步提升程序的安全性和稳定性。


接下来我们以安般科技智能模糊测试系统为例,解析其是如何解决现有的软件测试难点的。


模糊测试不依赖于已知漏洞库,在程序动态运行时挖掘缺陷,查找到的缺陷几乎没有误报,安全团队或开发者无需筛选误报即可确定问题。而且,模糊测试也是挖掘未知缺陷的利器。


安般智能模糊测试系统通过机器学习算法,根据用户输入的种子用例自动变异生成大量有效测试用例,并且能够基于运行时反馈智能调度策略,无疑为测试人员节省了大量写测试用例的时间。而且,安般智能模糊测试系统可以自动执行测试任务、生成测试报告,近乎全自动化的测试能力能够代替大量传统人工工作,显著提高软件开发、测试效率。


此外,安般智能模糊测试系统对于发现的缺陷,可定位至代码行,并准确提供缺陷类型和原因,通过AI大模型提供精准的代码修复建议,帮助研发、测试人员快速修复缺陷


值得一提的是,安般智能模糊测试系统采用分层式技术架构,通过松耦合分层架构来封装不同层次的系统功能,将业务复杂度与技术复杂度隔离以应对不同技术需求的变化,使各个功能子系统可以独立或协作运行满足不同层级的业务需求。


通过分析现有软件测试的难点,并解析智能模糊测试在应对各大难点上的优势,我们有理由相信,未来智能模糊测试定能解决更多问题,赋能软件测试领域,进一步推进软件产业高质量发展。