一种基于测试的执行路径的记录方法和装置的制造方法_2

文档序号:9921949阅读:来源:国知局
步详细的说明。
[0054]目前记录执行路径的三种方案至多只能过滤部分干扰数据。
[0055]针对某台测试服务器,收集在其运行的应用系统的执行路径的方案或与其相近的方案,只能获取到整个测试执行路径总和,无法过滤干扰数据;
[0056]按时间段来获取某个时间段内的执行路径的方案或与其相近的方案,只能过滤时间段外的干扰数据,无法过滤在时间段内的干扰数据;
[0057]按URL、参数等方式获取局部执行路径的方案或与其相近的方案,只能过滤某URL和某参数情况外的干扰数据,而无法过滤对于同URL、同参数的干扰数据。
[0058]上述三种记录执行路径的方案均无法从记录的执行路径中完全剥离干扰数据、精准地获取单个人员甚至是单次操作的测试执行路径,无法有针对性地获取单个人员甚至是单次操作形成的测试执行路径,因而造成无法准确分析测试执行结果,导致测试退出点判断难且不准、程序质量评估难、系统发布上线风险变大。随着自动化测试应用越来越广泛,上述问题日益突出。
[0059]因此,提出了本申请实施例的核心构思之一,采用会话sess1n来唯一标识一组或一次测试操作的执行路径,可以在复杂的应用环境中彻底过滤掉干扰数据,精准地收集到有效数据。
[0060]参照图1,示出了本申请的一种基于测试的执行路径的记录方法实施例的步骤流程图,具体可以包括如下步骤:
[0061]步骤101,当接收到通过会话发送的针对测试对象的测试请求时,记录所述会话的会话标识;
[0062]需要说明的是,本申请实施例可以在应用系统中部署覆盖率的统计平台ACC,即本申请可以是应用在ACC中,也是应用在应用系统,因为部署ACC需要对应用系统进行插粧(增加了载入ACC的代码),被插过粧的应用系统启动后,ACC就已经作为一个组件侵入到应用系统中,ACC此时已经作为应用系统的一部分可以和应用系统的其他功能进行交互。
[0063]当然,本申请实施例还可以单独应用于应用系统中,本申请实施例对此不加以限制。
[0064]会话sess1n可以指客户端与服务端(例如部署有ACC的应用系统)进行通信的时间间隔,是一种作为客户端和服务器之间的一种会话机制,可以唯一标示客户端和服务端的对应关系。
[0065]没有建立会话sess1n的情况下,第一次客户端与服务端的连接会自动建立会话sess1n。
[0066]在一个有效的时间内,或指定的开始和结束之间,使用的是同一个会话标识。该会话标识可以指能够代表一个唯一确定的会话sess1n的信息,例如sess1n ID (Identity,身份标识号码)。
[0067]测试对象的测试请求可以是指用户发出的执行某个测试对象,以进行测试的指不O
[0068]测试对象可以为进行测试的对象,具体可以包括Java(—种可以撰写跨平台应用软件的面向对象的程序设计语言)程序等等。
[0069]在具体实现中,大多数采用Java编写的企业应用程序系统中,接受用户的测试请求的入口一般是名为servlet的一段程序,该程序将实现或分派另一段程序去处理用户的测试请求并做出响应。在servlet之前,有另一段名为filter的程序可以允许首先处理。
[0070]本申请实施例中,可以采用filter记录用于唯一标识用户操作的会话sess1n的会话标识,用于后续标识执行路径。
[0071]具体而言,在ACC中可以创建了一个名为ACCFi I ter的filter,在该fitler中将会话标识(如sess1n ID)保存在了名为ACCSess1nContext的上下文中,该上下文可以保存在本地线程变量(ThreadLocal)中以确保线程安全。
[0072]步骤102,获取所述会话标识对应的存储空间;
[0073]在本申请实施例中,可以通过插粧的方式在应用系统中部署ACC。
[0074]插粧可以是指在应用系统中插入具有拦截测试对象执行并记录测试对象执行信息的代码。
[0075]在本申请的一种优选实施例中,步骤102可以包括如下子步骤:
[0076]子步骤S11,判断所述会话标识是否存储在预设的全局变量中;若是,则执行子步骤S12,若否,则执行子步骤S13 ;
[0077]子步骤S12,获取所述会话标识对应的,在所述全局变量中的已有的存储空间;
[0078]子步骤S13,在所述全局变量中,为所述会话标识配置新的存储空间。
[0079]在插粧后的应用系统中,可以增加一个名为$ACC$Coverages的全局变量和名为$ACC$Hook$MethodBefore 的方法。
[0080]名为$ACC$Coverages的全局变量,可以用于记录由会话标识(如sess1n ID)进行标识的执行路径。
[0081 ] 名为$ACC$Hook$MethodBefore的方法,可以用于在测试对象执行前从名为ACCSess1nContext的上下文中获取会话标识(如sess1n ID);若全局变量记录有当前会话标识(如sess1n ID)标识的上一次的执行路径,则可以获取由上一次的执行路径,用以继续记录执行路径;若全局变量未记录有当前会话标识(如sess1n ID)标识的上一次的执行路径,则可以为当前会话标识(如sess1n ID)配置存储空间,用以记录执行路径。
[0082]步骤103,拦截根据所述测试请求对所述测试对象的执行;
[0083]—般情况下,在测试对象在正式运行前,可以对测试对象中的全部或部分功能进行测试,以确保该测试对象能按预定的方式正确地运行。
[0084]在具体实现中,所述测试对象包括一个或多个测试子对象,该测试子对象可以为测试对象的组成部分,具体可以包括能实现可执行语句等等。
[0085]在本申请的一种优选实施例中,步骤103可以包括如下子步骤:
[0086]子步骤S21,拦截根据所述测试请求对所述一个或多个测试子对象的执行。
[0087]在具体实现中,可以在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
[0088]其中,测试用例可以指一组由输入数据、执行步骤、期望结果组成的测试描述信息,用于验证测试对象的某个功能。
[0089]当输入测试用例时,按照测试用例执行一个或多个测试子对象。
[0090]设计出的测试用例一般保证在测试中每个可执行语句至少执行一次,但每个可执行语句并非一定要执行,本申请实施例对此不加以限制。
[0091 ] 本申请实施例中,通过插粧,在应用系统中测试子对象的入口增加记录执行路径的方法,使得在测试子对象被调用前,都需要经过该记录执行路径的方法,实现对测试子对象的执行的拦截。
[0092]步骤104,在所述存储空间中记录被执行的所述测试对象的信息,获得执行路径。
[0093]在记录执行路径的方法拦截对测试子对象的执行时,可以记录当前执行的测试子对象的信息,例如,入口地址等等,以获得执行路径。
[0094]在本申请的一种优选实施例中,步骤104可以包括如下子步骤:
[0095]子步骤S31,在所述新的存储空间中记录被执行的所述一个或多个测试子对象的in息,获得执行路径。
[0096
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1