单元测试算法平台:高质量算法设计的好帮手
发布时间: 2023-09-26 浏览次数: 10

单元测试是软件开发中的一种测试方法,专门用于检查软件中如函数、模块等小单元的正确性、稳定性以及其他性能方面的问题。单元测试可以帮助开发人员快速发现并定位软件中的问题,避免这些问题在后期扩展和维护过程中造成更大的问题和损失。路径覆盖是单元测试中的最高标准。然而,在算法设计的过程中,由于实际问题往往错综复杂,算法设计人员需要综合考虑诸多因素,仅凭个人经验难以快速评估所设计单元测试算法的优劣。为解决当前单元测试算法评估难的问题,智能算法研究中心的研究人员研发了一款单元测试算法平台(如图1所示,平台访问地址:http://www.unittestpc.com.cn/),为算法设计人员等用户提供高效、准确的单元测试方案,帮助用户快速、清晰地了解被测算法的性能。

 图1 单元测试算法平台首页

单元测试算法平台是一款基于路径覆盖单元测试的算法评估工具。该平台可以为算法设计人员提供便捷的单元测试算法性能评估服务,并生成实时的测试报告,帮助算法设计人员了解单元测试算法的性能,有利于后续对算法进行针对性的改进。

在现有算法功能模块(如图2所示)中,本系统预设了一些算法和测试集,供用户进行测试。用户可以依次选择算法、算法运行次数以及测试集,然后点击运行。在运行的过程中,用户可以看到所运行算法的进度和实时的测试报告。算法运行完毕后,用户可以下载对应的测试报告。

 图2 单元测试算法平台的现有算法功能演示

除了预设算法,本系统还支持用户根据模板编写算法(如图3所示)。在新增算法功能中,本系统提供了算法说明文件压缩包,其中包含算法模板、算法示例和说明文档等。用户可根据系统提供的模板编写算法,将所编写算法导入系统并运行,同样可以获得实时测试报告和最终测试报告。

 图3 单元测试算法平台的新增算法功能页面

在运行结果模块(如图4所示)中,用户可以查看已进行的算法测试记录,并根据算法名称和报告ID对这些记录进行筛选和下载。

 图4 单元测试算法平台的运行结果展示页面

此外,系统还为管理员提供了管理功能。第一,管理员可查看所有用户的信息,并拥有修改密码和删除用户的权限。第二,管理员可查看正在运行的所有算法,并根据算法名称、报告ID、用户名称以及用户手机号码对这些算法进行筛选,还能够对算法进行停止操作。第三,管理员可查看所有测试集列表,拥有上传和下载测试集的权利。第四,管理员可查看所有用户的算法运行记录,根据算法名称和报告ID进行筛选,选择所需的测试报告进行下载。

 图5 单元测试算法平台查看运行中的算法列表功能演示

单元测试算法平台的成功得益于智能算法研究中心在软件自动化测试方面取得的成果。针对路径覆盖自动测试用例生成问题这一黑盒优化问题,智能算法研究中心的研究人员先后提出了不同的解决方案,这些方案为单元测试算法平台提供了强大的技术支持,提升了软件单元测试的可靠性和效率。例如,针对雾计算场景下的路径覆盖测试用例生成问题,研究人员提出了一种“测试用例-路径”关系矩阵搜索策略[1],通过定向搜索由目标路径相关维度组成的决策子集,解决了iFogSim雾计算案例的路径覆盖测试用例生成问题。

 图6 基于“测试用例-路径”关系矩阵搜索策略的差分进化算法流程

此外,研究人员对一个应用广泛的NLP工具包CoreNLP进行了单元测试,并根据NLP单元程序中经常使用字符串作为输入变量的特点,设计了一种基于随机启发式算法的动态多点搜索策略SA-SS [2],通过定向搜索由路径相关维度搜索顺序最优值构成的决策子集,实现了CoreNLP程序的单元测试路径覆盖测试用例的自动生成。该工作为同类型NLP程序自动生成路径来覆盖测试用例的算法提供了设计思路,使研究人员能够在此基础上设计更加高效的算法来测试NLP程序。

 图7 SA-SS求解路径覆盖测试用例生成问题示例

受流形学习思想的启发,研究人员采用流形启发式优化算法[3],通过在预设的子空间内搜索的同时更新有效决策子集,指导算法在有效决策子集上定向搜索,从而高效地自动生成路径覆盖的测试用例。该算法在多个测试集上进行了测试。结果表明,该算法可以更快地生成更有效的测试用例,并且具有比其他现有技术更高的测试用例覆盖率和缺陷发现率。

 图8 流形学习思想与启发式优化算法

综上所述,单元测试算法平台具备扎实且先进的算法理论基础,能够为算法优化提供有力辅助,具有很强的实用性以及广阔的应用前景。目前,该平台的核心技术已取得多项国家专利和国际专利授权,并获得2023年国家发明专利优秀奖。欢迎各位算法设计人员体验和试用,期待您的宝贵建议和意见!


参考文献

[1] H. Huang, F. Liu, X. Zhuo and Z. Hao, "Differential evolution based on self-adaptive fitness function for automated test case generation," IEEE Computational Intelligence Magazine, vol. 12, no. 2, pp. 46-55, 2017.

[2] F. Liu, H. Huang, Z. Yang, Z. Hao and J. Wang, "Search-based algorithm with scatter search strategy for automated test case generation of NLP toolkit," IEEE Transactions on Emerging Topics in Computational Intelligence, vol. 5, no. 3, pp. 491-503, 2021.

[3] F. Liu, H. Huang, J. Su, S. D. Semujju, Z. Yang and Z. Hao, "Manifold-inspired search-based algorithm for automated test case generation," IEEE Transactions on Emerging Topics in Computing, vol. 10, no. 2, pp. 1075-1090, 2021.

[4] 基于路径覆盖软件测试的测试用例自动生成方法(专利号 ZL201710766422.3) 授权公告号:CN 107590073 B 发明人:黄翰、刘方青、颜学明,2021.

[5] 基于路径覆盖测试用例自动生成的单元测试方法(专利号 ZL201810501975.0) 授权公告号:CN 108710575 B 发明人:黄翰、连木明、刘方青、杨忠明、郝志峰,2020.

[6] 基于测试用例自动生成算法的单元测试自动执行方法(专利号 ZL201910819271.2) 授权公告号:CN 110543421 B 发明人:黄翰、连木明、朱浩锋、

浩聪、谌小虎、刘方青、杨忠明、汪疆平,2022.

[7] 单元测试代码结构自动解析与路径分析方法(专利号 ZL202011267313.5) 授权公告号:CN 112380120 B 发明人:黄翰、刘方青、凌霄、林锋、曹捷、庄少阳、郝志峰,2022.

[8] 基于路径覆盖测试用例自动生成的单元测试方法(美国专利号:US 2021/209008 A1) 发明人:黄翰、连木明、刘方青、杨忠明、郝志峰,2023.


总编:黄翰

责任编辑:袁中锦

文字:庄培溪、梁靖欣

图片:庄培溪、梁靖欣

校稿:何莉怡

时间:2023925