一种测试参数的生成方法和系统技术方案

技术编号:3913930 阅读:145 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种测试参数的生成方法和系统,包括:为用户统一设置的共享内存;从数据文件中读取全部参数,加载入共享内存;若需要进行随机抽取处理,每个用户通过互斥量MUTEX技术对共享内存中的参数进行顺序但不重复的读取,作为测试参数。本发明专利技术提供的测试参数生成方法,在多进程、多线程并发环境下实现参数取值的唯一、互斥、随机等特性,解决资源锁定和共享的问题。

【技术实现步骤摘要】

本专利技术涉及计算机性能测试和性能评估技术,特别是指一种唯一和互斥参数的生 成方法和系统。
技术介绍
目前软件性能测试越来越受到重视,性能测试中模拟的业务压力如何尽可能地贴 近软件实际负载及满足软件的业务逻辑,是测试人员需要重点关注和较难实现的地方。软件性能测试开发过程中最重要的工作之一就是设计循环运行的测试代码中需 要不断变化的参数,例如业务受理、搜索关键词、电话充值等。现有的商业性能测试工具 均把参数功能作为重要功能之一,包括HP LoadRunner (简称LR)、Rational Performance Tester (简称RPT)、一般能提供内置的日期/虚拟用户ID/迭代次数等参数功能,并提供加 载文件方式的用户自定义参数,文件加载参数的取值策略包括顺序、随机、唯一,基本能满 足一般的性能测试参数化要求。然而,对于需要长时间运行、参数需求数量大、并发用户数大并有唯一性、互斥性、 随机性等特殊数据要求的应用情况,目前的商用性能测试软件在参数功能上仍存在缺陷。 LR的唯一参数功能(unique)要预先指定每个并发用户分配的参数数据段(block)大小,无 法适应长时间测试迭代次数未知的情况,在并发用户不断增加的测试场景(压力测试)中, 也容易发生系统错误造成整个测试场景终止。RPT文件加载类型参数的取值方式则只有顺 序取值一种。另外参数的唯一性和随机性要求常常是需要同时满足,在软件实际运行中参数的 取值通常是随机的,参数取值的随机性对软件性能测试的质量起关键作用,因为数据的顺 序访问和随机访问对软件系统产生的压力有数量级的差异。目前的测试工具均未能提供同 时满足参数取值的唯一性和随机性的功能。在电信软件系统的性能测试中,常常需要唯一性、互斥性使用的参数,例如电信营 业系统的电话开通功能,号码的选取需要保证唯一性,不能对同一个号码做重复的开通操 作。在电信生产环境中做性能测试时,受管理限制只能对小批量的样本对象进行循环方式 的测试,对某些业务例如充值操作,在对一个用户进行充值尚未完成的时候,不允许对该用 户再次发出充值请求,即除了获取参数有唯一性需求外,对参数的使用还有互斥性需求。因此对电信软件系统等的性能测试均需要使用并发方式来发送业务请求,并且并 发方式下参数的唯一性、随机性、互斥性需要在多进程、多线程的环境中实现。
技术实现思路
有鉴于此,本专利技术的目的在于提出一种基于共享内存和互斥量技术的性能测试参 数生成方法和系统,解决在目前的测试工具下参数唯一性、互斥性的问题。基于上述目的本专利技术提供的一种测试参数的生成方法,包括为测试参数设置统一的共享内存;从数据文件中读取全部参数,加载入共享内存;若需要进行随机抽取处理,每个用户通过互斥量MUTEX技术对共享内存中的参数 进行顺序但不重复的读取,作为测试参数。可选的,该方法所述从数据文件中读取全部参数,加载入共享内存后进一步包括 通过洗牌算法将所述全部参数随机打散。可选的,该方法所述洗牌算法包括(1)将全部参数组成为数组,设置当前数组下标为0 ;(2)生成一个适应较大长度的数组的随机数,用加载到共享内存的数组长度取余, 用于在该数组内随机选取一个数组下标;(3)当前数组下标与随机选取的数组下标所指向的数组项做值交换;(4)当前数组下标往后移一位,重复执行(2)_(3)操作,直至移至数组最末,洗牌结束。可选的,该方法所述每个并发用户通过互斥量技术对共享内存中的参数进行顺序 但不重复的读取过程包括把特定唯一参数的当前值及用当前值作为下标所指向的共享数组元素通过API 赋给输出参数;B、把特定唯一参数的当前值递增1。可选的,该方法在每个用户通过互斥量MUTEX技术对共享内存中的参数进行顺序 但不重复的读取后还包括在参数可选值数组上应用先进先出FIFO和循环折返队列算法, 把在使用参数值保存在队列中,使用完毕后退出队列。可选的,该方法所述在参数可选值数组上应用先进先出FIFO和循环折返队列算 法,把在使用参数值保存在队列中,使用完毕后退出队列步骤包括A、把参数指向的数据数组当为先进先出FIFO的队列,队列头和队列尾初始位置 均为数组起始;B、参数获取方法被调用时,返回队列尾指向的值,队列尾加一,当队列尾移至数组 最后时,将折返至数组起始;C、参数释放方法被调用时,把释放的值赋给队列头指向的数组位置,队列头加 D、若队列尾折返递增后到达队列头,则当前全部参数数据均被使用且未释放,后 续的参数使用调用将处于等待状态,直至参数释放方法被调用为止。可选的,该方法所述全部参数用数组方式保存。基于上述目的,在上述方法的基础上本专利技术还提供了一种测试参数的生成系统, 包括用于统一存储测试参数的共享内存;数据读取单元,用于从数据文件中读取全部参数,加载入共享内存;测试参数生成单元,用于通过互斥量MUTEX技术对共享内存中的参数进行顺序但 不重复的读取,作为测试参数发送给每个并发用户。可选的,该系统还包括参数随机处理单元,用于对加载入共享内存的全部参数通 过洗牌算法随机打散。可选的,该系统还包括互斥和循环处理单元,用于在参数可选值数组上应用先进 先出FIFO和循环折返队列算法,把在使用参数值保存在队列中,使用完毕后退出队列。从上面所述可以看出,本专利技术提供的测试参数生成方法和系统,在多进程、多线程 并发环境下实现参数取值的唯一、互斥、随机等特性,解决资源锁定和共享的问题,并能在 目前应用最广的性能测试工具HP LoadRunner 8. 1 (LR)上使用。本专利技术相对于现有方法,具有以下优点和效果本专利技术解决了目前软件性能测试商业工具中无法生成大规模唯一参数值、无法同 时满足参数取值唯一性、随机性、互斥性的问题;本专利技术使用了各类操作系统中均提供的共享内存和互斥量技术,算法简单,计算 机资源开销小,采用标准C编程和微软WIN32系统调用平台,略加调整便可移植到其他操作 系统。附图说明图1为本专利技术实施例系统结构示意图;图2为本专利技术实施例测试参数的生成方法流程示意图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照 附图,对本专利技术进一步详细说明。本专利技术提供的测试参数生成方法主要包括为测试参数设置统一的共享内存;从 数据文件中读取全部参数,加载入到共享内存;若需要进行随机抽取处理,每个用户通过互 斥量MUTEX技术对共享内存中的参数进行顺序但不重复的读取,读取出的参数作为测试参 数。另外,本专利技术还可以根据不同需要进一步包括若参数取值需要随机性,则测试参数使用前还进一步先进行洗牌方式的随机打散处理。若参数取值需要互斥和循环方式使用,则在参数可选值数组上应用先进先出 (FIFO)和循环折返队列算法,把在使用参数值保存在队列中,使用完毕后退出队列,保证在 使用的参数取值的互斥属性。本专利技术实施例的逻辑组成如图1所示,本实施例中MUTEX句柄和共享参数均用数 组方式保存,以实现同时使用多个唯一参数的功能。多进程间共享的唯一参数保存于共享 内存中,共享唯一参数数组为数据结构体数组,数据结构体包括如下的数据项 唯一参数ID 并行使用的多个共享参数的唯一 ID,例如多个省份的充值卡数据 中的某省份充值卡数据; 当前值共享参数的当前整数值,可作为关联的外部加载数本文档来自技高网
...

【技术保护点】
一种测试参数的生成方法,其特征在于,包括:为测试参数设置统一的共享内存;从数据文件中读取全部参数,加载入共享内存;若需要进行随机抽取处理,每个用户通过互斥量MUTEX技术对共享内存中的参数进行顺序但不重复的读取,作为测试参数。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈泳袁立宇
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利