Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >智能算法 | 又一大进步,软件测试开销过大的问题这样解决!

智能算法 | 又一大进步,软件测试开销过大的问题这样解决!

作者头像
智能算法
发布于 2019-07-03 03:50:39
发布于 2019-07-03 03:50:39
6990
举报
文章被收录于专栏:智能算法智能算法

图文已经华南理工大学智能算法实验室授权。

实验室负责人:黄翰教授

联系邮箱:hhan@scut.edu.cn

近年来,在软件开发过程中(如图一)据统计有50%的开销来自于测试环节。软件测试的主要目的是以最少的人力、物力和时间找出软件中潜在的各种缺陷和错误,通过修正缺陷和错误提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患。其中黑盒测试白盒测试是两种常见的测试类型,黑盒测试着重于评估测试程序的表现,白盒测试则能够揭露程序逻辑上的潜在缺陷。而测试用例自动生成问题(ATCG)是一类迫切需要解决的白盒测试问题,以往测试用例的自动生成大多通过人工手段实现,ATCG问题的解决可以有效帮助减少软件测试过程中的人力、物力资源的开销。

为了解决软件测试环节人力、物力和时间等方面的开销问题,华南理工大学软件学院智能算法实验室展开了一系列对测试用例自动生成问题(ATCG)的研究,现已成功在IEEE TII上发表针对ATCG的“测试用例-路径”关系矩阵的研究成果论文。下面让我们一起回顾关于本研究工作的发展进程与相关成果。

图1 软件开发过程示意图

首先,本工作从雾计算程序中的ATCG-PC问题背景出发,在了解整个雾计算系统(如图2)的概念下,我们从中可知雾计算程序中ATCG-PC问题目标就是要最大化路径覆盖率,同时测试用例开销也需要尽可能控制到最小。而在解决ATCG问题上,雾计算程序只是作为对比的benchmark function,也就是基准测试函数;路径覆盖测试用例自动生成问题的需求其实就是在有限的测试用例开销内,找到覆盖基准测试函数中所有可行路径的测试用例。那么,针对目前仍有一些路径并不能被测试用例覆盖的问题上,下面我们提出了一种基于“测试用例-路径”关系矩阵的差分进化算法(RP-DE)。

图2 雾计算系统示意图

本算法通过收集测试用例变量与路径节点相关性,找出测试用例编码空间中与覆盖路径相关的同胚低维欧氏空间(与目标路径相关的测试用例编码维度构成的搜索空间),并通过关系矩阵中的信息指导算法将更多的计算资源分配搜索该同胚低维欧氏空间,从而减少算法的测试用例开销,并提升算法搜索效率。

该算法的流程主要通过先初始化种群和关系矩阵R的初始工作,然后不断重复DE算法的变异和交叉操作,和使用“测试用例-路径”关系矩阵覆盖目标路径这两步,直到最后满足终止条件,即当路径覆盖率c为100%或者生成的测试用例数目T大于等于预设最大测试用例开销Max时,算法停止退出。算法框架如下图3所示:

图3 RP-DE算法框架

基于上述的算法思想,本课题立足iFogSim这个雾计算工具包中常用的几个函数作为基准测试函数,最后成功实现了对该工具的单元测试用例生成的工作,下面图4和图5便是我们使用关系矩阵更新测试的用例示例。

图4 使用关系矩阵更新测试用例示例图(1)

图5 使用关系矩阵更新测试用例示例图(2)

在本次研究课题中,我们提出了一种雾计算程序的ATCG-PC问题数学模型,其问题为单目标优化问题,每个测试用例仅需评估一次,并且可以解决雾计算程序以及其他具有不可覆盖路径时,其他数学模型无法对比求解算法性能的问题;提出了RP-DE算法,在测试雾计算程序以及其他测试程序的单元测试中,相对对比的算法均拥有显著的优势,具有较强的鲁棒性。

与此同时,我们将设计的算法应用于实际,开发出相对应的软件、工具以及测试平台来解决自然语言处理深度学习等工具的测试问题。通过探究智能软件测试用例编码空间的同胚欧式空间映射关系,以及研究在同胚欧式空间与剩余搜索空间的计算资源分配问题,已经成功搭建一款智能软件的测试与系统验证平台。

参考文献

[1]Han Huang,Fangqing Liu*,Zhifeng Hao. Differential Evolution Based on Self-Adaptive Fitness Function for Automated Test Case Generation, IEEE Computational Intelligence Magazine, 12(2),46-55, May 2017.

[2]Han Huang, Fangqing Liu*, Zhongming Yang, Zhifeng Hao. Automated Test Case Generation Based on Differential Evolution with Relationship Matrix for iFogSim Toolkit. IEEE Transactions on Industrial Informatics(Early Access), 2018, [DOI: 10.1109/tII.2018.2856881].

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
白盒测试方法应用于代码评审、单元程序之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中。
Srlua
2024/10/19
4230
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
软件测试习题(附答案)
1. 在软件生命周期的哪一个阶段,软件缺陷修复费用最低                               (   A   )
红目香薰
2022/11/29
2K0
软件测试方法课程笔记(3)
逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖. 是以程序内部的逻辑结构为基础的测试用例设计方法. 白盒测试作为逻辑测试方法,是以程序内部逻辑驱动的单元测试方法.
Mezereon
2018/10/09
5620
超全干货 | 软件测试岗技术笔试
一条Bug记录最基本应包含:编号、Bug所属模块、Bug描述、Bug级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;要有效的发现Bug需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认肯定,然后再向外发布如此才能提高提交Bug的质量。
红目香薰
2022/11/29
5180
软件测试-开始软件测试
1.测试的目的:在于发现错误(缺陷),保证整个软件开的质量,但软件的质量不能以软件测试为依据 2.成功的测试:是发现了未曾发现的软件错误(缺陷) 3.好的测试用例:是能有效地发现别的测试用例未发现的软件错误
达达前端
2019/07/03
2.6K0
软件测试基础与常识
软件测试,是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。
阳光岛主
2019/02/19
9140
如何系统自学软件测试,看这篇软件测试学习方法万字总结就够了
主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。
伤心的辣条
2022/12/14
1K0
如何系统自学软件测试,看这篇软件测试学习方法万字总结就够了
软件测试技术之: 白盒测试和黑盒测试[通俗易懂]
一般地,我们将软件测试活动分为以下几类:黑盒测试、白盒测试、静态测试、动态测试、手动测试、自动测试等等。
全栈程序员站长
2022/10/02
7.1K0
软件测试技术之: 白盒测试和黑盒测试[通俗易懂]
软件测试常见面试题汇总
1. 一条软件缺陷(或者叫Bug)记录都包含了哪些内容? 如何提交高质量的软件缺陷(Bug)记录?
全栈程序员站长
2022/09/27
6010
【愚公系列】软考中级-软件设计师 038-软件工程基础(系统测试)
系统测试是一种测试方法,用于确定计算机系统或软件是否满足所需的功能和需求。在系统测试中,测试人员会执行一系列测试用例和场景,以验证系统的各个部分和功能是否正常工作。系统测试通常包括功能测试、性能测试、安全测试、兼容性测试等。这种测试方法旨在发现系统错误和问题,并为解决这些问题提供反馈和改进建议。系统测试是软件开发生命周期中的一个重要步骤,可以确保系统在投入使用之前是可靠和高质量的。
愚公搬代码
2024/04/16
2550
软件测试用例编写
测试用例是测试工作的指导,是软件测试必须遵守的准则。测试用例的内容是一系列情景和步骤的描述,并对每个步骤中必须列出输入的数据,预计输出结果。将这一过程整理成测试文档,称为测试用例。
张哥编程
2024/12/19
3010
软件测试基础知识大全_软件测试主要学的内容有哪些
软件缺陷:又称之为“Bug”。即计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
全栈程序员站长
2022/11/10
8450
软件测试基础知识大全_软件测试主要学的内容有哪些
软件测试复习
软件体系结构是软件系统的结构、行为和属性的高级抽象,给出系统的组织结构和拓扑结构,规定系统需求和构成系统的元素之间的对应关系。
千灵域
2022/06/17
3960
软件测试复习
软件测试人员的初心是什么?(一)
现在的技术发展令我们眼花缭乱,java、doceker、jira、sonar、微服务、jmeter、功能、性能、安全性、自动化测试、渗透性测试、探索性测试、BDD\TDD等等,很容易让我们浅尝辄止失去方向。我们不得不经常静下心来思考,回归测试的本真。那技术测试人员的初心是什么呢?让小编为大家细细道来
muntainyang
2020/10/23
8010
软件测试学习笔记-概念篇(一)
  每个系统的成型,上线都离不开测试,这段时间陆陆续续的学习测试,在这里总结一番;作为学习交流之用;
Dawnzhang
2018/10/18
8870
软件测试学习笔记-概念篇(一)
【软件测试系列一】《软件测试基础知识》
为了保证软件的质量和可靠性,应力求在分析、设计等各个开发阶段结束前,对软件进行严格技术评审。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。如果给软件测试下定义,可以这样讲:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入一些数据而得到其预期的结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
再见孙悟空_
2023/09/19
1.6K0
【软件测试系列一】《软件测试基础知识》
阿常:软件测试的方法
大家好,我是阿常。上一篇给大家介绍了软件测试的目的,今天阿常和大家说说软件测试的方法。
程序媛淼淼
2022/09/01
5140
软件测试的内容
软件测试是一个快速发展的职业领域,随着信息技术的不断发展和应用,软件测试的重要性也越来越受到重视。软件测试职业是指专门从事软件测试工作的人员,他们负责对软件系统进行全面、深入、有效的测试,发现和解决软件中的缺陷和错误,提高软件的质量和可靠性。
FunTester
2023/08/04
3020
软件测试的内容
黑盒测试和白盒测试的区别
1.        软件测试方法:白盒测试、黑盒测试、灰盒测试、静态测试、动态测试
庞小明
2018/10/11
9.7K1
深入探讨软件测试技术:方法、工具与最佳实践
软件测试是软件开发生命周期中至关重要的环节,它有助于确保软件系统的质量、可靠性和稳定性。本文将深入探讨软件测试技术,包括常用的测试方法、工具以及一些最佳实践,旨在帮助开发者更好地理解和应用测试技术,提高软件质量。
海拥
2023/11/23
1.4K0
相关推荐
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档