CN117785652A - 基于变异的并发软件测试用例生成方法、测试方法及系统 - Google Patents

基于变异的并发软件测试用例生成方法、测试方法及系统 Download PDF

Info

Publication number
CN117785652A
CN117785652A CN202311045084.6A CN202311045084A CN117785652A CN 117785652 A CN117785652 A CN 117785652A CN 202311045084 A CN202311045084 A CN 202311045084A CN 117785652 A CN117785652 A CN 117785652A
Authority
CN
China
Prior art keywords
test case
test
concurrent
original
mutation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311045084.6A
Other languages
English (en)
Inventor
梁哲恒
崔磊
姚潮生
沈伍强
沈桂泉
龙震岳
曾纪钧
裴求根
周纯
张金波
张小陆
钱正浩
温柏坚
周昉昉
李凯
蔡彦
王静华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Power Grid Co Ltd
Information Center of Guangdong Power Grid Co Ltd
Original Assignee
Guangdong Power Grid Co Ltd
Information Center of Guangdong Power Grid Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Power Grid Co Ltd, Information Center of Guangdong Power Grid Co Ltd filed Critical Guangdong Power Grid Co Ltd
Priority to CN202311045084.6A priority Critical patent/CN117785652A/zh
Publication of CN117785652A publication Critical patent/CN117785652A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种基于变异的并发软件测试用例生成方法、测试方法及系统,属于计算机软件测试领域。分析被测试系统的业务逻辑,获取原始测试用例;识别原始测试用例中的共享资源以及对共享资源的操作信息;利用变异测试方法保留原始测试用例中的与共享资源相关的部分,并将操作部分替换为同类操作中的其它操作,生成新测试用例;将原始测试用例和新测试用例联合,构成并发测试用例集。在测试用例时,使用至少两个线程将并发测试用例集同时反复输入到被测试系统进行测试,来达到增加并发测试覆盖的目的。本发明结合原始测试用例,采用变异操作和联合生成等策略生成新测试用例,能够更好地反映实际测试场景,从而提高测试的有效性和准确性。

Description

基于变异的并发软件测试用例生成方法、测试方法及系统
技术领域
本发明属于计算机软件测试领域,特别涉及一种基于变异的并发软件测试用例生成方法、测试方法及系统。
背景技术
随着计算机性能的不断提升,软件规模和复杂度也在逐渐增加。为了充分利用多核处理器的性能,采用并发编程技术成为了不可避免的趋势。相较于传统的串行编程,采用并发技术可以显著提升程序的运行速度、软件的效率和性能。然而,并发编程也引入了新问题,例如死锁、资源争用和线程同步等,这些问题会直接影响程序的正确性、可靠性和稳定性。
为了解决这些并发编程的问题,软件测试变得尤为重要。在并发测试中,需要考虑诸如多个线程之间的交互、竞争条件和并发访问共享资源的情况等。这些测试用例需要能够模拟与实际应用场景相似的并发情况,从而发现并解决可能存在的问题,并提高软件的质量和可靠性。然而,由于硬件、软件架构的复杂性以及多线程环境的随机性,这些问题通常很难被预测和排除。
传统的并发软件测试用例生成方法主要有四种,分别是静态和动态分析、基于约束的自动化测试、基于约束的符号执行和随机搜索策略。其中静态和动态分析是较为常见的方法,其主要通过对源代码和执行状态的分析来捕获潜在的并发问题,以帮助测试人员评估代码的线程安全性和可靠性。该方法可以预测潜在的并发问题,但是无法生成具有特定输入条件的测试用例。相反,基于约束的自动化测试方法则是通过用户指定的约束条件来生成合理的测试用例,以便探索不同的并发情况和线程排列。该方法具有高效和可靠的特点,但是需要依赖于求解器来解决约束,在遇到大规模和复杂的测试场景时,求解时间会变得很长。在基于约束的符号执行方法中,采用符号执行技术来生成满足特定约束条件的测试用例。该方法具有自动化和高效的特点,但需要完整的代码语义信息,并在遇到循环和递归等复杂控制结构时,效率会降低。随机搜索策略则是采用完全随机性的测试方法,通过生成随机的输入数据并进行测试,以尽可能地覆盖系统的不同分支和情况。该方法具有高效、简单和易于实现的特点,但是它的缺点是不能保证生成的测试用例能够充分覆盖系统的所有分支和情况。
综上所述,软件并发测试面临着很多挑战,需要更加谨慎和全面地考虑和分析,以确保软件的正常运行和稳定性。特别是在设计并发测试用例时,必须考虑多个线程之间的竞争关系和同步机制,以避免死锁、资源争用等问题。同时,应该选择合适的测试工具和策略,提高并发测试的效率和准确性。通过全面地测试,可以发现潜在的并发问题,保证软件在高负载、高并发的情况下依然稳定可靠。
发明内容
本发明的目的是为克服上述技术问题,提供了一种基于变异的并发软件测试用例生成方法、测试方法及系统、设备和介质,以提高软件并发测试的质量。
为实现上述目的,本发明采用以下技术方案:
一方面,本发明提供了一种基于变异的并发软件测试用例生成方法,其步骤包括:
原始测试用例获取步骤:分析被测试系统的业务逻辑,获取原始测试用例,该测试用例包括对被测试系统进行操作的场景;
原始测试用例识别步骤:识别原始测试用例中的共享资源以及对共享资源的操作信息;
变异生成新测试用例步骤:基于识别出的原始测试用例中的共享资源以及对共享资源的操作信息,利用变异测试方法,对原始测试用例中的共享资源以及操作进行变异,生成新测试用例;
并发测试用例生成步骤:将原始测试用例和新测试用例联合,构成并发测试用例集。
进一步地,所述被测试系统包括数据库、操作系统、分布式系统或需考虑并发情况的其他软件系统。
进一步地,采用人工或自动化识别方法,识别原始测试用例中的共享资源以及对共享资源的操作信息,该自动化识别方法选用静态代码分析、运行时监测、符号执行、数据流分析中一种。
进一步地,所述共享资源包括数据库、缓存、文件、网络中的一种或多种。
进一步地,所述变异测试方法包括代码变异、数据变异或逻辑变异,该代码变异是指通过修改测试用例中的代码片段来生成新的测试用例,该数据变异是指通过修改或替换测试用例中的数据值来生成新的测试用例,该逻辑变异是指通过修改测试用例中的逻辑条件或流程来生成新的测试用例。
另一方面,本发明还提供了一种基于变异的并发软件测试用例测试方法,其步骤包括:
使用上述并发软件测试用例生成方法,生成并发测试用例集;
使用至少两个线程,将该并发测试用例集同时反复输入到被测试系统中,进行软件并发测试。
另一方面,本发明还提供了一种基于变异的并发软件测试用例生成系统,包括:
原始测试用例获取模块,用于对被测系统的业务逻辑和流程进行分析,获取原始测试用例,该测试用例包括对被测试系统进行操作的场景;
原始测试用例识别模块,用于识别出测试用例中的共享资源和对共享资源的相关操作;
变异生成新测试用例模块,用于基于识别出的原始测试用例中的共享资源以及对共享资源的操作信息,利用变异测试方法,对原始测试用例中的共享资源以及操作进行变异,生成新测试用例;
并发测试用例生成模块,用于将原始测试用例和新测试用例联合起来,构成并发测试用例集。
另一方面,本发明还提供了一种基于变异的并发软件测试用例测试系统,包括:
测试用例生成模块,用于使用上述并发软件测试用例生成方法,生成并发测试用例集;
测试执行模块,用于使用至少两个线程,将上述并发测试用例集进行测试同时反复输入到被测试系统中,进行软件并发测试。
另一方面,本发明还提供了一种计算机设备,包括存储器和处理器,在该存储器上存储有计算机程序,该处理器执行该程序时实现上述并发软件测试用例生成方法的步骤。
另一方面,本发明还提供了一种计算机可读存储介质,存储有计算机程序,该程序被处理器执行时实现上述并发软件测试用例生成方法的步骤。
本发明的技术方案与现有技术相比,具有以下优点:
1.本发明结合已有的测试用例,能够更好地反映实际测试场景,从而提高测试的有效性和准确性。为实现这一点,本发明首先采用了变异测试方法生成新的测试用例,通过分析原始测试用例中的共享资源和操作信息,再根据这些信息进行变异,从而生成新的测试用例,增加测试的多样性和覆盖度,进一步发现被测系统可能存在的问题。
2.本发明利用人工或自动化识别方法,识别被测试系统中的共享资源和对这些共享资源的操作,尤其是自动化识别方法,能够大大提高测试用例生成的效率,使得测试可以更加全面地覆盖不同的测试场景,从而提高测试的完备性。
3.本发明为并发软件设计,采用变异操作和联合生成等策略生成测试用例,来扩充并发测试用例的多样性。根据被测系统的业务和特点,本发明生成与并发情况相适应的测试用例,这样的并发测试用例集涉及多个线程对系统的操作和测试,更好地模拟实际的并发测试场景,从而进一步提高软件测试的质量和效率。
4.本发明使用多线程同时输入联合的测试用例,从而增加并发测试覆盖率,提高测试效果。
综上,本发明通过结合已有的测试用例、引入变异测试方法、针对并发软件进行测试用例生成,以及采用自动化方法识别相关资源和操作,提供了一种更有效、更全面的测试用例生成及测试方法,利用这些创新的技术手段,可以达到更佳的测试效果,发现潜在的问题,从而显著提高被测软件的质量。
附图说明
图1为本发明实施例中的一种基于变异的并发软件测试用例生成方法流程图;
图2为本发明实施例中的一种基于变异的并发软件测试用例测试方法流程图;
图3为本发明实施例中的一种基于变异的并发软件测试用例生成系统结构图;
图4为本发明实施例中的一种基于变异的并发软件测试用例测试系统结构图;
图5为本发明实施例中的一种基于变异的并发软件测试用例测试系统具体结构图。
具体实施方式
为了更加清晰地阐述本发明实施例的目的、技术方案和优点,下面将结合附图说明来描述并展示所述实施例中的技术方案。需要注意的是,所描述的实施例是本发明其中的一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
如图1所示,本发明实施例提供一种基于变异的并发软件测试用例生成方法,本发明实施例中将对于一个原始测试用例,通过人工或自动化识别测试用例中可共享资源和对这些共享资源的操作,然后基于变异的测试方法生成一组新测试用例,接下来将原始测试用例和变异生成的测试用例,形成一个并发测试用例集,最后使用两个或多个线程同时反复输入这些测试用例集进行测试,来达到增加并发测试覆盖的目的。
本方法的处理步骤详细说明如下:
S1:分析被测试系统的业务逻辑,获取原始测试用例,该测试用例包括了对被测试系统进行操作的场景。
具体地,首先对于一个被测试系统,需要对其业务逻辑进行分析,以获取一组可行的原始测试用例。比如对一个电子商务网站,该系统涉及到了多种功能模块,如用户登录、搜索查询、用户下单等功能。用户在搜索查询商品的过程中,可能会存在其他用户在同一时间下单购买商品的情况,最终导致该用户的查询结果发生变化。对于该场景可以获取到其中的一个非并发测试用例,该测试用例的功能是查询table数据表中的所有信息。具体测试用例如下所示:
T=“select*from table”
S2:针对原始测试用例,基于人工或者自动化识别方法,识别出原始测试用例中的共享资源(例如数据、控制等内容)以及对共享资源的操作。
具体地,在获取到原始测试用例之后,需要进一步地分析该测试用例中的共享资源,以及对该共享资源的操作。识别的过程可以基于人工或者自动化识别技术,例如对于给出的原始测试用例T=“select*from table”,通过以上人工和自动化识别方法,可以识别出“table”为测试用例中的共享资源,“select”为对该共享资源“table”的操作。
常用的自动化识别方法包括以下几种方法:一种是静态代码分析技术,它可以识别代码中的变量和对象,并分析它们在测试用例中的使用情况,通过分析变量和对象的读写操作,可以判断它们是否属于共享资源,并且了解对共享资源的操作;另一种是运行时监测技术,它可以动态地跟踪和监视程序的执行,并记录共享资源的读写操作,通过分析运行时监测数据,可以确定哪些变量或对象是共享资源,并提取出对共享资源的操作序列;还有一种是符号执行技术,通过建立符号表达式来跟踪程序中的变量和对象,并推导出对共享资源的操作路径,通过符号执行,可以识别出测试用例中的共享资源以及对共享资源的操作;此外还有一种是数据流分析技术,通过分析程序中的数据流,可以识别出变量和对象之间的数据流关系,通过分析数据流,可以确定哪些变量属于共享资源,并找出对共享资源的操作。
S3:基于以上信息,利用变异测试方法,生成另一个新测试用例。
具体地,在前两步的基础上,对原始测试用例中的共享资源以及操作进行变异,生成一个新的非并发测试用例。常用的变异方法包括代码变异、数据变异和逻辑变异。
代码变异通过修改测试用例中的代码片段来生成新的测试用例,例如,原始测试用例T=“select*from table”,采用代码变异测试方法,保留和共享资源相关的“table”部分,变异其中的“select”部分,生成一个新的非并发测试用例即新测试用例,如下所示:
T’=“delete from table where xx”
对于数据表还有其他的操作(例如“insert”,“drop”等),采用代码变异测试方法也可以产生出其他的测试用例。
数据变异通过修改或替换测试用例中的数据值来生成新的测试用例,例如,原始测试用例为T="delete from table where xx",数据变异可以将其变异为T'="deletefrom table where yy",即将原始测试用例中的条件“xx”改为“yy”,测试软件是否能正确处理不同的删除条件。
逻辑变异通过修改测试用例中的逻辑条件或流程来生成新的测试用例,例如,原始测试用例为T="if x>0then do something",逻辑变异可以将其变异为T'="if x<0then do something",即将原始测试用例中的判断条件由大于改为小于,测试软件是否能正确处理不同的逻辑条件。
S4:将原始测试用例和新测试用例联合形成一个并发测试用例集。
具体地,接下来需要将原始测试用例和新测试用例联合生成一个并发测试用例集。针对以上过程新生成的并发测试用例集,如下所示:
<“select*from table”,“delete from table where xx”>
S5:在测试过程中,使用至少两个线程,同时反复输入新生成的并发测试用例集,以达到增加并发测试覆盖的目的。
具体地,在测试用例执行阶段,将新生成的并发测试用例集使用两个线程,同时反复发送给被测试系统,以达到增加并发测试覆盖的目的。同时,通过对测试结果的分析,可以发现原测试用例集无法测试出的并发问题。
上述是针对两个线程的并发测试用例,针对多个线程的并发测试用例可以采取类似的策略来生成。
如图2所示,本发明另一实施例还提供一种基于变异的并发软件测试用例测试方法,其步骤包括:
使用上述生成方法,生成并发测试用例集;
使用至少两个线程,将该并发测试用例集同时反复输入到被测试系统中,进行软件并发测试。
如图3所示,本发明另一实施例还提供一种基于变异的并发软件测试用例生成系统,包括:原始测试用例获取模块、原始测试用例识别模块、变异生成新测试用例模块、并发测试用例生成模块;其中,
原始测试用例获取模块:通过对被测系统的业务逻辑和流程进行深入分析,获取一个原始测试用例,以确保测试用例能够覆盖到被测试系统的某些功能和关键场景。
原始测试用例识别模块:该模块的主要作用是,基于人工或自动化方法,识别出测试用例中的共享资源和对共享资源的相关操作。测试人员需要对被测试系统中涉及的共享资源,如数据库、缓存、文件、网络等进行深入分析和识别;同时还需要对这些资源的相关操作进行记录。
变异生成新测试用例模块:该模块中基于上述的获取的信息,利用变异测试方法,对原始测试用例中的共享资源以及操作进行变异,生成一个新的测试用例。这样,测试人员就可以获取到一系列变化的测试用例,更加全面的覆盖被测试系统的各种功能和场景。
并发测试用例生成模块:该模块将原始测试用例和变异生成的新测试用例联合起来,形成一个并发测试用例集。
如图4所示,本发明另一实施例还提供一种基于变异的并发软件测试用例测试系统,包括:
测试用例生成模块,用于使用上述实施例的并发软件测试用例生成方法生成并发测试用例集,该测试用例生成模块也可以将上述实施例的并发软件测试用例生成系统的各个模块作为子模块组合构成(如图5所示)。
测试执行模块:该模块将使用至少两个线程同时反复输入其中的两个或多个“子”测试用例,以达到增加并发测试覆盖的目的。
本发明的另一实施例还提供了一种包括存储器和处理器的计算机设备(例如计算机、服务器、智能手机等),所述存储器中存储了计算机程序,该程序被配置为由处理器执行,所述计算机程序包含用于执行上述实施例的并发软件测试用例生成方法中各步骤的指令。
本发明的另一实施例还提供了一种包括存储器和处理器的计算机设备(例如计算机、服务器、智能手机等),所述存储器中存储了计算机程序,该程序被配置为由处理器执行,所述计算机程序包含用于执行上述实施例的并发软件测试用例测试方法中各步骤的指令。
本发明的另一个实施例还提供了一种可读取计算机程序的计算机存储介质,如磁碟、光盘,ROM/RAM等,当计算机执行该程序时,实现上述实施例的并发软件测试用例生成方法的各个步骤。
本发明的另一个实施例还提供了一种可读取计算机程序的计算机存储介质,如磁碟、光盘,ROM/RAM等,当计算机执行该程序时,实现上述实施例的并发软件测试用例测试方法的各个步骤。
以上列举的实施例仅用于阐明本发明的技术方案,并非对其做出限制。本发明的范围由所附权利要求限定。任何基于本发明精神和原则进行的等效替换和修改,都应在本发明的范围内予以涵盖,这些替换和修改并不会使其本质上偏离本发明的核心思想和技术方案。

Claims (10)

1.一种基于变异的并发软件测试用例生成方法,其特征在于,步骤包括:
原始测试用例获取步骤:分析被测试系统的业务逻辑,获取原始测试用例,该测试用例包括对被测试系统进行操作的场景;
原始测试用例识别步骤:识别原始测试用例中的共享资源以及对共享资源的操作信息;
变异生成新测试用例步骤:基于识别出的原始测试用例中的共享资源以及对共享资源的操作信息,利用变异测试方法,对原始测试用例中的共享资源以及操作进行变异,生成新测试用例;
并发测试用例生成步骤:将原始测试用例和新测试用例联合,构成并发测试用例集。
2.如权利要求1所述的并发软件测试用例生成方法,其特征在于,所述被测试系统包括数据库、操作系统、分布式系统或需考虑并发情况的其他软件系统。
3.如权利要求1所述的并发软件测试用例生成方法,其特征在于,采用人工或自动化识别方法,识别原始测试用例中的共享资源以及对共享资源的操作信息,该自动化识别方法选用静态代码分析、运行时监测、符号执行、数据流分析中一种。
4.如权利要求1所述的并发软件测试用例生成方法,其特征在于,所述共享资源包括数据库、缓存、文件、网络中的一种或多种。
5.如权利要求1所述的并发软件测试用例生成方法,其特征在于,所述变异测试方法选用代码变异、数据变异或逻辑变异,该代码变异是指通过修改测试用例中的代码片段来生成新的测试用例,该数据变异是指通过修改或替换测试用例中的数据值来生成新的测试用例,该逻辑变异是指通过修改测试用例中的逻辑条件或流程来生成新的测试用例。
6.一种基于变异的并发软件测试用例测试方法,其特征在于,步骤包括:
使用权利要求1-5任一项所述的并发软件测试用例生成方法,生成并发测试用例集;
使用至少两个线程,将该并发测试用例集同时反复输入到被测试系统中,进行软件并发测试。
7.一种基于变异的并发软件测试用例生成系统,其特征在于,包括:
原始测试用例获取模块,用于对被测系统的业务逻辑和流程进行分析,获取原始测试用例,该测试用例包括对被测试系统进行操作的场景;
原始测试用例识别模块,用于识别出测试用例中的共享资源和对共享资源的相关操作;
变异生成新测试用例模块,用于基于识别出的原始测试用例中的共享资源以及对共享资源的操作信息,利用变异测试方法,对原始测试用例中的共享资源以及操作进行变异,生成新测试用例;
并发测试用例生成模块,用于将原始测试用例和新测试用例联合起来,构成并发测试用例集。
8.一种基于变异的并发软件测试用例测试系统,其特征在于,包括:
测试用例生成模块,用于使用权利要求1-5任一项所述的并发软件测试用例生成方法,生成并发测试用例集;
测试执行模块,用于使用至少两个线程,将上述并发测试用例集进行测试同时反复输入到被测试系统中,进行软件并发测试。
9.一种计算机设备,其特征在于,包括存储器和处理器,在该存储器上存储有计算机程序,该处理器执行该程序时实现权利要求1-5任一项所述的并发软件测试用例生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,存储有计算机程序,该程序被处理器执行时实现权利要求1-5任一项所述的并发软件测试用例生成方法的步骤。
CN202311045084.6A 2023-08-18 2023-08-18 基于变异的并发软件测试用例生成方法、测试方法及系统 Pending CN117785652A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311045084.6A CN117785652A (zh) 2023-08-18 2023-08-18 基于变异的并发软件测试用例生成方法、测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311045084.6A CN117785652A (zh) 2023-08-18 2023-08-18 基于变异的并发软件测试用例生成方法、测试方法及系统

Publications (1)

Publication Number Publication Date
CN117785652A true CN117785652A (zh) 2024-03-29

Family

ID=90400582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311045084.6A Pending CN117785652A (zh) 2023-08-18 2023-08-18 基于变异的并发软件测试用例生成方法、测试方法及系统

Country Status (1)

Country Link
CN (1) CN117785652A (zh)

Similar Documents

Publication Publication Date Title
US10055338B2 (en) Completing functional testing
US7792950B2 (en) Coverage analysis of program code that accesses a database
Herodotou et al. Profiling, what-if analysis, and cost-based optimization of mapreduce programs
US8527965B2 (en) Layered static program analysis framework for software testing
Mehmood et al. Challenges and solutions for processing real-time big data stream: a systematic literature review
US8185874B2 (en) Automatic and systematic detection of race conditions and atomicity violations
US8904351B2 (en) Maintenance of a subroutine repository for an application under test based on subroutine usage information
Gulzar et al. Perception and practices of differential testing
US9195730B2 (en) Verifying correctness of a database system via extended access paths
US8782641B2 (en) Tuning of work to meet performance goal
Svajlenko et al. Big data clone detection using classical detectors: an exploratory study
US8850407B2 (en) Test script generation
Dageville et al. Oracle's Self-Tuning Architecture and Solutions.
Zhao et al. A Large-Scale Empirical Study of Real-Life Performance Issues in Open Source Projects
CN117785652A (zh) 基于变异的并发软件测试用例生成方法、测试方法及系统
Chen et al. Pattern-based circular reference detection in Python
Arshad et al. Big data testing techniques: taxonomy, challenges and future trends
Guo et al. A review of bad smells in cloud-based applications and microservices
US10909019B2 (en) Runtime performance introspection
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
CN110750569A (zh) 数据提取方法、装置、设备及存储介质
Ghafoor et al. Effective partial order reduction in model checking database applications
Chen et al. JFD: Automatic Java Fuzz Driver Generation
CN112364600B (zh) 一种处理器微架构设计验证方法
KR101845208B1 (ko) 데이터베이스와 애플리케이션을 위한 웹기반 성능개선 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination