CN107797917B - 性能测试脚本生成方法及装置 - Google Patents
性能测试脚本生成方法及装置 Download PDFInfo
- Publication number
- CN107797917B CN107797917B CN201611238339.0A CN201611238339A CN107797917B CN 107797917 B CN107797917 B CN 107797917B CN 201611238339 A CN201611238339 A CN 201611238339A CN 107797917 B CN107797917 B CN 107797917B
- Authority
- CN
- China
- Prior art keywords
- request
- test
- information
- generating
- data corresponding
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种性能测试脚本生成方法及装置。所述方法包括:获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据;根据所述功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息;根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息;根据所述性能测试脚本模板的头部信息和所述性能测试脚本模板的请求信息生成性能测试脚本。上述性能测试脚本生成方法及装置,根据功能测试流程对应的代码数据和功能测试中产生的功能测试数据直接生成性能测试脚本,可以节约大量的时间,减少人工编写过程中产生的错误。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种性能测试脚本生成方法及装置。
背景技术
在计算机软件开发中,对于开发出来的软件往往需要进行大量的测试,来鉴定软件的质量。软件测试是通过人工操作或者软件自动运行的方式,来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。
性能测试通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,传统的性能测试需要手动编写脚本,同时性能测试工作需要花费大量的时间去调试测试脚本,浪费了大量的时间。
发明内容
基于此,有必要针对性能测试浪费时间的技术问题,提供一种性能测试脚本的生成方法及装置,以减少性能测试的时间。
一种性能测试脚本生成方法,包括:
获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据;
根据所述功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息;
根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息;以及
根据所述性能测试脚本模板的头部信息和所述性能测试脚本模板的请求信息生成性能测试脚本。
在其中一个实施例中,所述根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息包括:
根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成测试请求信息;
获取所述功能测试流程对应的代码数据中存在的请求管控信息;以及
根据所述测试请求信息和请求管控信息生成所述性能测试脚本模板的请求信息。
在其中一个实施例中,所述获取所述功能测试流程对应的代码数据中存在的请求管控信息包括:
检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据所述功能测试流程对应的代码数据生成数据提取请求信息;
检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息;
根据所述功能测试流程对应的代码数据生成请求状态变量信息。
在其中一个实施例中,所述根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息包括:
根据所述功能测试流程对应的代码数据生成请求类型信息;
根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述请求类型信息对应的测试请求信息;以及
根据所述请求类型信息对应的测试请求信息生成所述性能测试脚本模板的请求信息。
在其中一个实施例中,所述根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息包括:
提取所述功能测试流程对应的代码数据中的请求路径字符串;
检测所述请求路径字符串中是否存在预设的字符,若是,则根据所述请求类型字符串和所述功能测试中产生的功能测试数据生成请求路径信息;以及
根据所述请求路径信息、所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息。
一种性能测试脚本生成装置,包括:
数据获取模块,用于获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据;
头部生成模块,用于根据所述功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息;
请求生成模块,用于根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息;以及
脚本生成模块,用于根据所述性能测试脚本模板的头部信息和所述性能测试脚本模板的请求信息生成性能测试脚本。
在其中一个实施例中,所述请求生成模块还用于检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据所述功能测试流程对应的代码数据生成数据提取请求信息;检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息;根据所述功能测试流程对应的代码数据生成请求状态变量信息。
在其中一个实施例中,所述请求生成模块还用于检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据所述功能测试流程对应的代码数据生成数据提取请求信息;检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息;根据所述功能测试流程对应的代码数据生成请求状态变量信息;以及根据所述测试请求信息、数据提取请求信息、单次请求控制信息和请求状态变量信息生成所述性能测试脚本模板的请求信息。
在其中一个实施例中,所述请求生成模块还用于根据所述功能测试流程对应的代码数据生成请求类型信息;根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述请求类型信息对应的测试请求信息;以及根据所述请求类型信息对应的测试请求信息生成所述性能测试脚本模板的请求信息。
在其中一个实施例中,所述请求生成模块还用于提取所述功能测试流程对应的代码数据中的请求路径字符串;检测所述请求路径字符串中是否存在预设的字符,若是,则根据所述请求类型字符串和所述功能测试中产生的功能测试数据生成请求路径信息;以及根据所述请求路径信息、所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息。
上述性能测试脚本生成方法及装置,根据功能测试流程对应的代码数据和功能测试中产生的功能测试数据直接生成性能测试脚本,不用人工编写性能测试脚本,可以节约大量的时间,同时大大地减少人工编写过程中产生的错误。
附图说明
图1为一个实施例中性能测试脚本生成方法的应用环境示意图;
图2为一个实施例中性能测试脚本生成方法的流程图;
图3为另一个实施例中性能测试脚本生成方法的流程图;
图4为一个实施例中性能测试脚本模板的界面示意图;
图5为一个实施例中性能测试脚本模板的请求信息生成方法的流程图;
图6为一个实施例中性能测试脚本生成装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中性能测试脚本生成方法的应用环境图。如图1所示,该应用环境包括用户终端102和服务器104,通过用户终端102获取的功能测试流程对应的代码数据以及功能测试中产生的功能测试数据发送到服务器104,服务器104根据获取的功能测试流程对应的代码数据以及功能测试中产生的功能测试数据生成性能测试脚本模板的头部信息和请求信息,并根据该头部信息和请求信息生成性能测试脚本,再发送到用户终端102。其中,用户终端102是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等,为可接入网络且支持功能测试和性能测试的设备,例如可为PC终端、移动终端等。服务器104,是提供计算服务的设备,具备数据获取、生成测试脚本等服务并且保障服务的能力,可为一台计算机或多台计算机等。
图2为一个实施例中性能测试脚本生成方法的流程图。如图2所示,该性能测试脚本生成方法包括步骤S202至步骤S208,其中:
步骤S202,获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据。
在本实施例中,功能测试是对系统的各功能进行验证,检查系统是否达到用户要求的功能。例如,检查网页中的每一个链接是否都有对应的页面,且页面之间是否可以正确切换,页面中按钮的更新、取消、删除、保存等功能是否能够正常运行等。功能测试流程是指对系统进行功能测试的整个过程,例如打开网页、登录网页、输入数据、提交、验证输入结果等过程。
在本实施例中,功能测试流程对应的代码数据是指通过开发工具所支持的语言写出来的源文件,是一组由字符串以离散形式表示功能测试流程的规则体系,该字符串可以是英文字符、符号字符等。其中,开发工具是指用于为功能测试流程的软件包、软件框架、硬件平台、操作系统等建立应用软件的特殊软件。
在本实施例中,功能测试中产生的功能测试数据可以是指在功能测试中输入、输出或者中间过程产生的数据,例如中文字符串、英文字符串、符号字符串等,也可以是用于在功能测试过程中获取数据的公式。
步骤S204,根据该功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息。
在本实施例中,性能测试是指是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。其中,正常负载条件下对系统性能测试是指对系统的正常工作状态进行测试,以观察系统的稳定性。峰值负载条件下对系统性能测试是指在极端条件下对系统进行测试,以观察系统的可靠性,例如使系统处于长时间运行状态。异常负载条件下对系统性能测试是指模拟系统在异常条件下的工作状态,以观察系统的鲁棒性,例如使系统突然断电。模拟系统在各种条件下的工作状态,以保证系统能够正常运行。
例如,对网页进行负载测试、并发性能测试、兼容性测试。其中负载测试是指测试系统在资源既定负载下的表现,以发现设计上的错误或验证系统的负载能力。并发性能测试是指当测试多用户并发访问系统或者系统中的某一个功能时是否会产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题。兼容性测试是指测试系统与所在的硬件环境以及该硬件环境中的其他应用软件的兼容性。
在本实施例中,性能测试脚本是指用于实现性能测试的通过特定的描述性语言按照一定格式编写的执行文件。通过性能测试脚本模板来生成性能测试脚本。性能测试脚本分为头部信息和请求信息,头部信息记录了用户终端的对性能测试中发起的请求的管理信息和默认信息。请求信息记录了性能测试中发起的请求的具体内容。
在本实施例中,头部信息分为用户自定义信息、请求头管理信息和请求默认信息等三部分。用户自定义信息是指用户输入的有关性能测试的版本、测试时间以及用户自定义变量等信息。请求头管理信息是指在性能测试过程中访问系统时发出的请求中所包含的请求头的内容,记录发送请求的用户终端的相关信息,比如浏览器可接受的字符集、测试请求消息的正文长度等,用于确保请求的正确性。请求默认信息是指性能测试过程中请求的默认值,比如请求访问路径、端口、协议等。其中,请求可以是HTTP(HyperText TransferProtocol,超文本传输协议)请求。
在本实施例中,用户自定义信息和请求头管理信息是根据预设请求系统信息生成的。请求默认信息是根据功能测试流程对应的代码数据生成的,功能测试流程对应的代码数据中记录了待测系统的访问路径和端口等信息,对应的生成性能测试中请求的默认值。
步骤S206,根据功能测试流程对应的代码数据和该功能测试中产生的功能测试数据生成性能测试脚本模板的请求信息。
在本实施例中,性能测试中的请求信息包括请求类型信息、测试请求信息、请求状态信息等内容。其中,性能测试中请求类型信息是指发起请求的方式,例如HTTP请求的GET方法与POST方法,GET方法是向网页服务器获取数据,POST方法是向传送网页服务器需要处理的数据。测试请求信息是性能测试中发送请求的具体内容,例如登录网页、网页跳转等。请求状态信息是指根据判断请求是否成功的一个状态变量。
在其他实施例中,还可以是根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成测试请求信息;获取所述功能测试流程对应的代码数据中存在的请求管控信息;以及根据所述测试请求信息和请求管控信息生成所述性能测试脚本模板的请求信息。其中,请求管控信息是指对测试请求进行控制以及显示请求状态的信息,例如控制测试请求的发送次数、显示测试请求的发送状态等。
步骤S208,根据性能测试脚本模板的头部信息和性能测试脚本模板的请求信息生成性能测试脚本。
在本实施例中,根据生成的头部信息和请求信息生成性能测试脚本模板,再根据性能测试脚本模板生成性能测试脚本。
在本实施例中,通过功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息,根据功能测试流程对应的代码数据和该功能测试中产生的功能测试数据生成性能测试脚本模板的请求信息,不需要用户每次性能测试前再去手动输入,大量地减少了编写性能测试脚本的时间,提高了性能测试的效率。
图3为另一个实施例中性能测试脚本生成方法的流程图。如图3所示,该性能测试脚本生成方法包括步骤S302至步骤S312,其中:
步骤S302,获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据。
在本实施例中,功能测试是对系统的各功能进行验证,检查系统是否达到用户要求的功能。功能测试用于验证系统对目标用户是否能正确工作,其中,系统可以是硬件系统、应用程序、网页等。功能测试是为了确保系统以期望的方式运行而按功能要求对系统进行的测试,通过对一个系统的所有的特性和功能都进行测试确保符合需求和规范。
其中,对网页进行测试需要使用适当的硬件环境、浏览器和测试脚本,以保证目标用户的体验足够好。例如,检查网页是否能够正常显示,网页中的每一个链接是否都有对应的页面,页面之间是否可以正确切换,页面中按钮的更新、取消、删除、保存等功能是否能够正常运行等。功能测试流程是指对系统进行功能测试的整个过程,例如打开网页、登录网页、输入数据、提交、验证输入结果等过程。在本实施例中,功能测试流程对应的代码数据是指通过开发工具所支持的语言写出来的源文件,是一组由字符串以离散形式表示功能测试流程的规则体系,该字符串可以是英文字符、符号字符等。其中,开发工具是指用于为功能测试流程的软件包、软件框架、硬件平台、操作系统等建立应用软件的特殊软件。
在本实施例中,功能测试中产生的功能测试数据可以是指在功能测试中输入、输出或者中间过程产生的数据,例如中文字符串、英文字符串、符号字符串等,也可以是用于在功能测试过程中获取数据的函数和公式,例如函数“${}”。
步骤S304,根据该功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息。
在本实施例中,性能测试是指是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。例如对网页进行压力测试、稳定性测试、可恢复测试。其中,压力测试是指测试系统在极端条件下的表现,该极端条件可以是超负荷的交易量和并发数据等。稳定性测试是指测试系统在长时间运行的情况下是否会发生问题,例如客户端和服务器在运行过程中建立了大量的连接通路,负载运行一段时间后,却不能有效地复用和及时释放,使得内存资源一直被占用,这种内存泄露的问题再运行初期很难检测出来,只有运行一段时间之后才慢慢体现出来。可恢复测试时指测试系统是否能够快速地从错误状态恢复到正常状态。
在本实施例中,性能测试脚本是指用于实现性能测试的通过特定的描述性语言按照一定格式编写的执行文件。通过性能测试脚本模板来生成性能测试脚本。性能测试脚本分为头部信息和请求信息,头部信息记录了用户终端的对性能测试中发起的请求的管理信息和默认信息。该头部信息用于用户读取该性能测试脚本的相关信息,在性能测试过程中不用于发起具体的测试请求。请求信息记录了性能测试中发起的请求的具体内容,用于在性能测试过程中发起具体的测试请求。
在本实施例中,头部信息分为用户自定义信息、请求头管理信息和请求默认信息等三部分。用户自定义信息是指用户输入的有关性能测试的版本、测试时间以及用户自定义变量等信息。请求头管理信息是指在性能测试过程中访问系统时发出的请求中所包含的请求头的内容,记录发送请求的用户终端的相关信息,比如浏览器可接受的字符集、测试请求消息的正文长度等,用于确保请求的正确性。请求默认信息是指性能测试过程中请求的默认值,比如请求访问路径、端口、协议等。其中,请求可以是HTTP请求。
在本实施例中,用户自定义信息和请求头管理信息是根据预设请求系统信息生成的。请求默认信息是根据功能测试流程对应的代码数据生成的,功能测试流程对应的代码数据中记录了待测系统的访问路径和端口等信息,对应的生成性能测试中请求的默认值。
步骤S306,根据功能测试流程对应的代码数据和功能测试中产生的功能测试数据生成测试请求信息。
在本实施例中,测试请求信息是指测试请求的具体内容,例如在对待测网页进行测试的过程向网页服务器发起登录请求,点击按钮跳转到指定网页等。在性能测试过程中会产生多个测试请求,一个测试请求可能只发送一次也可能会发送多次。
步骤S308,获取功能测试流程对应的代码数据中存在的请求管控信息。
在本实施例中,请求管控信息是指用于对请求进行管理和控制信息。请求管控信息包括数据提取请求信息、单次请求控制信息和请求状态变量信息。
在本实施例中,检测功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据功能测试流程对应的代码数据生成数据提取请求信息。在性能测试过程中可能存在获取数据的情况,需要从测试系统中获取数据。这种情况下无法根据用户终端的输入来获取数据,因此需要生成数据提取请求信息,通过数据提取请求信息发起数据提取请求,可以自动提取性能测试过程中需要从系统中获取的数据,无需人工提取,可以减少性能测试的时间,大大地提高性能测试效率,同时减少手动输入的错误率。
在本实施例中,检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息。数据提取可以是直接从网页中提取数据,例如查找并提取网页中出现的“城市”,统计该变量出现的次数。也可以是提取网页中同一种类型的数据,例如网页中存在类型为“城市”的数据有“深圳”、“成都”、“北京”等,提取所有类型为“城市”的数据即将页面中出现的“深圳”、“成都”、“北京”等数据提取出来。
在本实施例中,单次请求控制信息用于控制测试请求信息的发送次数,在性能测试过程中,为了测试系统的负载、并发等各项性能,需要向系统不断发送请求。为了提高测试效率,对于不需要测试负载、并发等性能的功能,可以通过单次请求控制信息去控制相应的测试请求只发送一次,例如登录网页,在测试的时候控制登录网页请求只发送一次,避免在一次测试中重复登录,可以提高测试效率,减少用户终端不断发送请求而造成的服务器压力。
在本实施例中,根据所述功能测试流程对应的代码数据生成请求状态变量信息。请求状态变量信息用于标记性能测试过程中发送的测试请求是否发送成功。若测试请求发送成功则请求状态变量信息标记请求成功,若测试请求发送失败则请求状态变量信息标记请求失败。通过生成请求状态变量信息,在系统测试失败的时候可以及时排查出现错误的地方,提高测试的效率。
在一个实施例中,步骤S308中还可以包括:根据该功能测试流程对应的代码数据生成请求类型信息,以及提取该功能测试流程对应的代码数据中的请求路径字符串步骤。其中,请求类型信息是指在性能测试中发起请求的方式,例如HTTP请求分为GET请求与POST请求,GET方法是向网页服务器获取数据,POST方法是向传送网页服务器需要处理的数据。
在一个实施例中,在对系统进行测试的过程中,需要根据请求路径将测试请求发送至测试对象。例如,在对网页进行测试的过程中,测试请求通过网页的URL(UniformResoure Locator,统一资源定位器)进行访问,其中,URL是指在互联网中访问标准资源的地址,例如https://www.jsig.com/s?ie=utf-8&f。
在一个实施例中,通过请求路径字符串生成请求路径信息,用户终端通过请求路径信息访问测试系统。其中,请求路径信息分为静态请求路径信息和动态请求路径信息。请求路径字符串是预先设定的,如果在请求路径字符串未检测到预设的字符,则直接将请求路径字符串作为请求路径信息对测试系统进行访问,即该请求路径信息为静态请求路径信息。如果在请求路径字符串中检测到预设的字符,则用功能测试中产生的功能测试数据插入请求路径字符串中指定的位置,将插入后的请求路径字符串作为请求路径信息,即此时该请求路径信息为动态请求路径信息。
例如,请求路径字符串为:https://www.jsig.com/${},检测到该请求路径字符串中包含预设字符“$”,通过${}函数获取得到功能测试中产生的功能测试数据中的替换数据为“shenzhen”,那么最后生成的请求路径信息就为:https://www.jsig.com/shenzhen。
步骤S310,根据测试请求信息和请求管控信息生成性能测试脚本模板的请求信息。
在本实施例中,根据步骤S306至步骤S308生成的测试请求信息、数据提取请求信息、单次请求控制信息和请求状态变量信息生成性能测试脚本模板的请求信息。
在一个实施例中,根据以下信息中的一种或多种:请求类型信息、数据提取请求信息、单次请求控制信息、请求状态变量信息和请求路径信息,以及测试请求信息生成性能测试脚本模板的请求信息。
步骤S312,根据性能测试脚本模板的头部信息和性能测试脚本模板的请求信息生成性能测试脚本。
在本实施例中,根据生成的头部信息和请求信息生成性能测试脚本模板,再根据性能测试脚本模板直接生成性能测试脚本。
在本实施例中,通过功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息,根据功能测试流程对应的代码数据和该功能测试中产生的功能测试数据生成性能测试脚本模板的请求信息。不需要用户每次性能测试前再去手动输入,大量地减少了编写性能测试脚本的时间,提高了性能测试的效率。
图4为一个实施例中性能测试脚本模板的界面示意图,如图4所示,该性能测试脚本模板中包括头部信息402、单次请求信息404、测试请求信息406、测试请求信息408、数据提取请求信息410、测试请求信息412和请求状态变量信息414。在本实施例中,头部信息402包括用户自定义信息、HTTP请求头管理信息和HTTP请求默认信息。单次请求信息404用于控制测试请求只发送一次。在本实施例中,测试请求信息406只发送一次,包括登录页面、访问主页面以及转到中心会计页面的请求。在其他实施例中还可以根据测试需求添加或者删除只发送一次的测试请求。测试请求信息408为打开单据的请求,该请求需要提取页面数据,因此测试请求信息408中包含数据提取请求信息410,用于提取打开单据请求过程中需要的页面数据。测试请求信息412包括打开影像请求、保存意见请求和提交请求,其中,提交请求中包括请求状态变量信息414,用于标记该提交请求发送是否成功。
图5为一个实施例中性能测试脚本模板的请求信息生成方法的流程图,如图5所示,该测试请求信息生成方法包括步骤S502到步骤S526。其中:
步骤S502,判断是否需要从页面获取数据,若是,则执行步骤S504,若否,则执行步骤S506。
在本实施例中,性能测试的测试对象为网页页面,根据功能测试流程对应的代码数据判断是否需要从网页页面中获取数据,若需要则生成数据提取请求信息。性能测试过程中通过数据提取请求信息获取网页页面中的数据。
步骤S504,生成数据提取请求信息。
在本实施例中,数据提取请求信息用于对网页页面进行性能测试的过程中提取数据,该数据可以是中文字符串、英文字符串和符号字符串等。通过该数据提取信息可以直接获取网页页面中的数据,也可以获取网页页面中同一类型的数据。例如,获取网页页面中类型为“城市”的数据,那么网页页面中出现的“北京”、“深圳”、“成都”等数据都被提取出来。
在本实施例中,通过数据提取请求信息获取的数据存储在本地文本文件中,通过“城市:数据”的形式进行存储,然后可以统计数据出现的次数。例如“城市:深圳”。该数据请求信息可以自动获取网页页面中的数据,无需人工获取,提高了性能测试的效率。
步骤S506,判断该测试请求是否只发送一次,若是,则执行步骤S508,若否,则执行步骤S510。
在本实施例中,根据功能测试流程对应的代码数据判断的测试请求的发送次数。若判断该测试请求只发送一次,则生成单次请求控制信息。
步骤S508,生成单次请求控制信息。
在本实施例中,在对网页页面进行测试的过程中,会向网页页面对应的服务器发送多个测试请求,例如登录请求、页面跳转请求等。为了测试网页页面的性能,一个测试请求也可能发送多次,例如为了保证页面跳转功能的性能,会多次发送测试页面跳转请求,以测试页面跳转功能。对于网页页面中对性能要求不高的功能,为了提高测试效率,需要在性能测试过程中减少该功能的测试次数,所以需要控制该请求只发送一次。例如为了避免在性能测试过程中因为重复登录造成的性能测试时间过长,通常在性能测试的时候会控制登录请求只发送一次。
在本实施例中,若该测试请求生成单次请求控制信息,那么在性能测试过程中,该测试请求发送多次,若为生成单次请求控制信息,那么该测试请求只会发送一次。
步骤S510,判断是否生成请求状态,若是,则执行步骤S512,若否,执行步骤S512。
在本实施例中,若测试请求发送成功则请求状态变量信息标记请求成功,若测试请求发送失败则请求状态变量信息标记请求失败。在性能测试过程中若出现错误,可以根据请求状态判断对应的测试请求是否发送成功,及时排查出错的地方,提高测试的效率。
步骤S512,生成请求状态变量信息。
在本实施例中,若测试请求存在对应的请求状态,则根据功能测试流程对应的代码数据生成请求状态变量信息,该请求状态变量信息初始状态为请求成功,在性能测试过程中若对应的测试请求发送失败,则该请求状态变量信息更改为请求失败。在其他实施例中,用户终端还会接受到对应的错误代码,通过该错误代码可以判断在该测试请求发送过程中具体是哪个环节出现的错误。
步骤S514,判断该测试请求的请求类型,若为GET请求,则执行步骤S516,若为POST请求,则执行步骤S522。
在本实施例中,根据功能测试流程对应的代码数据判断该测试请求的请求类型,请求类型分为GET请求和POST请求。其中,GET请求通过测试请求路径信息向测试的网页页面对应的服务器上获取数据,获取数据的查询字符串会显示在测试请求路径信息中。POST请求通过测试请求路径向测试的网页页面对应的服务器提交需要被处理的数据,获取数据的查询字符串不会显示在测试请求路径信息中,而是包含在POST请求的测试请求信息中。
步骤S516,判断请求路径字符串是否有预设字符,若是,则执行步骤S518,若否,则执行步骤S520。
在本实施例中,需要根据请求路径信息生成测试请求信息,若请求路径字符串中存在预设字符,则该测试请求路径为动态请求路径信息,需要根据获取的功能测试数据和请求路径字符串生成请求路径信息;若该请求路径字符串中不存在预设字符,则该请求路径信息为静态请求路径信息,直接根据请求路径字符串生成请求路径信息。
步骤S518,用获取的功能测试数据和请求路径字符串拼接成请求路径信息。
在本实施例中,根据请求路径字符串中是否存在符号“$”判断请求路径信息是否为动态请求路径信息,若请求路径字符串中存在“$”,则根据获取的功能测试数据和请求路径字符串生成请求路径信息;若请求路径字符串中不存在“$”,则直接根据请求路径字符串生成请求路径信息。
例如,请求路径字符串为:https://www.jsig.com/${},检测到该请求路径字符串中包含预设字符“$”,假设通过${}函数获取得到功能测试中产生的功能测试数据中的替换数据为“shenzhen”,那么最后生成的请求路径信息就为:https://www.jsig.com/shenzhen。若请求路径字符串为:https://www.jsig.com,该请求路径字符串中不包含“$”,那么最后生成的请求路径信息就为:https://www.jsig.com。
步骤S520,生成请求信息。
在本实施例中,根据步骤S502到步骤S518生成请求类型对应的请求信息。
图6为一个实施例中性能测试脚本生成装置的结构示意图,如图6所示,性能测试脚本生成装置600包括数据获取模块602、头部生成模块604、请求生成模块606和脚本生成模块608。其中:
数据获取模块602,用于获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据;
头部生成模块604,用于根据所述功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息;
请求生成模块606,用于根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息;以及
脚本生成模块608,用于根据所述性能测试脚本模板的头部信息和所述性能测试脚本模板的请求信息生成性能测试脚本。
在本实施例中,通过功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息,根据功能测试流程对应的代码数据和该功能测试中产生的功能测试数据生成性能测试脚本模板的请求信息。不需要用户每次性能测试前再去手动输入,大量地减少了编写性能测试脚本的时间,提高了性能测试的效率。
在其中一个实施例中,请求生成模块606还用于检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据所述功能测试流程对应的代码数据生成数据提取请求信息;检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息;根据所述功能测试流程对应的代码数据生成请求状态变量信息。
在其中一个实施例中,请求生成模块606还用于检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是则根据所述功能测试流程对应的代码数据生成数据提取请求信息;检测所述测试请求信息中是否存在单次发送的测试请求,若是则根据所述功能测试流程对应的代码数据生成单次请求控制信息;根据所述功能测试流程对应的代码数据生成请求状态变量信息;以及根据所述测试请求信息、数据提取请求信息、单次请求控制信息和请求状态变量信息生成所述性能测试脚本模板的请求信息。
在其中一个实施例中,请求生成模块606还用于根据所述功能测试流程对应的代码数据生成请求类型信息;根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述请求类型信息对应的测试请求信息;以及根据所述请求类型信息对应的测试请求信息生成所述性能测试脚本模板的请求信息。
在其中一个实施例中,请求生成模块606还用于提取所述功能测试流程对应的代码数据中的请求路径字符串;检测所述请求路径字符串中是否存在预设的字符,若是,则根据所述请求类型字符串和所述功能测试中产生的功能测试数据生成请求路径信息;以及根据所述请求路径信息、所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种性能测试脚本生成方法,其特征在于,包括:
获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据;
根据所述功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息;
根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息;以及
根据所述性能测试脚本模板的头部信息和所述性能测试脚本模板的请求信息生成性能测试脚本;
所述根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息包括:
根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成测试请求信息;
获取所述功能测试流程对应的代码数据中存在的请求管控信息,所述请求管控信息是指用于对请求进行管理和控制的信息,所述请求管控信息包括数据提取请求信息、单次请求控制信息和请求状态变量信息;以及
根据所述测试请求信息和请求管控信息生成所述性能测试脚本模板的请求信息。
2.根据权利要求1所述的方法,其特征在于,所述获取所述功能测试流程对应的代码数据中存在的请求管控信息包括:
检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据所述功能测试流程对应的代码数据生成数据提取请求信息;
检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息;
根据所述功能测试流程对应的代码数据生成请求状态变量信息。
3.根据权利要求1所述的方法,其特征在于,所述根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息包括:
根据所述功能测试流程对应的代码数据生成请求类型信息;
根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述请求类型信息对应的测试请求信息;以及
根据所述请求类型信息对应的测试请求信息生成所述性能测试脚本模板的请求信息。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息包括:
提取所述功能测试流程对应的代码数据中的请求路径字符串;
检测所述请求路径字符串中是否存在预设的字符,若是,则根据所述请求路径字符串和所述功能测试中产生的功能测试数据生成请求路径信息;以及
根据所述请求路径信息、所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息。
5.一种性能测试脚本生成装置,其特征在于,包括:
数据获取模块,用于获取功能测试流程对应的代码数据以及功能测试中产生的功能测试数据;
头部生成模块,用于根据所述功能测试流程对应的代码数据和预设请求系统信息生成性能测试脚本模板的头部信息;
请求生成模块,用于根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息;以及
脚本生成模块,用于根据所述性能测试脚本模板的头部信息和所述性能测试脚本模板的请求信息生成性能测试脚本;
所述请求生成模块,还用于根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成测试请求信息;
获取所述功能测试流程对应的代码数据中存在的请求管控信息,所述请求管控信息是指用于对请求进行管理和控制的信息,所述请求管控信息包括数据提取请求信息、单次请求控制信息和请求状态变量信息;以及
根据所述测试请求信息和请求管控信息生成所述性能测试脚本模板的请求信息。
6.根据权利要求5所述的装置,其特征在于,所述请求生成模块还用于检测所述功能测试流程对应的代码数据中是否存在从功能测试对象中获取的数据,若是,则根据所述功能测试流程对应的代码数据生成数据提取请求信息;检测所述测试请求信息中是否存在单次发送的测试请求,若是,则根据所述功能测试流程对应的代码数据生成单次请求控制信息;根据所述功能测试流程对应的代码数据生成请求状态变量信息。
7.根据权利要求6所述的装置,其特征在于,所述请求生成模块还用于根据所述测试请求信息、数据提取请求信息、单次请求控制信息和请求状态变量信息生成所述性能测试脚本模板的请求信息。
8.根据权利要求5所述的装置,其特征在于,所述请求生成模块还用于根据所述功能测试流程对应的代码数据生成请求类型信息;根据所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述请求类型信息对应的测试请求信息;以及根据所述请求类型信息对应的测试请求信息生成所述性能测试脚本模板的请求信息。
9.根据权利要求5至8中任意一项所述的装置,其特征在于,所述请求生成模块还用于提取所述功能测试流程对应的代码数据中的请求路径字符串;检测所述请求路径字符串中是否存在预设的字符,若是则根据所述请求路径字符串和所述功能测试中产生的功能测试数据生成请求路径信息;以及根据所述请求路径信息、所述功能测试流程对应的代码数据和所述功能测试中产生的功能测试数据生成所述性能测试脚本模板的请求信息。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时可实现如权利要求1至4任一项所述的性能测试脚本生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611238339.0A CN107797917B (zh) | 2016-12-28 | 2016-12-28 | 性能测试脚本生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611238339.0A CN107797917B (zh) | 2016-12-28 | 2016-12-28 | 性能测试脚本生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107797917A CN107797917A (zh) | 2018-03-13 |
CN107797917B true CN107797917B (zh) | 2020-04-17 |
Family
ID=61529615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611238339.0A Active CN107797917B (zh) | 2016-12-28 | 2016-12-28 | 性能测试脚本生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107797917B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704312B (zh) * | 2019-09-25 | 2023-09-12 | 浙江大搜车软件技术有限公司 | 压力测试的方法、装置、计算机设备和存储介质 |
CN111258900A (zh) * | 2020-01-17 | 2020-06-09 | 深圳壹账通智能科技有限公司 | 接口测试脚本的生成方法、系统、设备及存储介质 |
CN111258902B (zh) * | 2020-01-17 | 2022-07-19 | 深圳平安医疗健康科技服务有限公司 | 基于SockJS服务器的性能测试方法和性能测试系统 |
CN113672826B (zh) * | 2021-07-27 | 2024-07-23 | 深圳市捷视飞通科技股份有限公司 | 页面跳转方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770148A (zh) * | 2004-11-01 | 2006-05-10 | 华为技术有限公司 | 一种脚本文件自动生成系统及自动生成方法 |
EP1936506A1 (en) * | 2006-12-18 | 2008-06-25 | Leirios | System test generator |
CN103309904A (zh) * | 2012-03-16 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种生成数据仓库etl 代码的方法及装置 |
-
2016
- 2016-12-28 CN CN201611238339.0A patent/CN107797917B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770148A (zh) * | 2004-11-01 | 2006-05-10 | 华为技术有限公司 | 一种脚本文件自动生成系统及自动生成方法 |
EP1936506A1 (en) * | 2006-12-18 | 2008-06-25 | Leirios | System test generator |
CN103309904A (zh) * | 2012-03-16 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 一种生成数据仓库etl 代码的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107797917A (zh) | 2018-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822919B2 (en) | Auto-generation of API documentation via implementation-neutral analysis of API traffic | |
CN111177005B (zh) | 业务应用的测试方法、装置、服务器和存储介质 | |
CN107783899B (zh) | 应用程序中h5页面的测试方法、装置和计算机设备 | |
US8745641B1 (en) | Automatic verification and anomaly detection in a representational state transfer (REST) application programming interface | |
CN111061526B (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN107797917B (zh) | 性能测试脚本生成方法及装置 | |
US7698688B2 (en) | Method for automating an internationalization test in a multilingual web application | |
WO2018184361A1 (zh) | 应用程序测试方法、服务器、终端和存储介质 | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
JP4193196B1 (ja) | Webサービス提供システム検査装置及びWebサービス提供システム検査プログラム | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
WO2021061185A1 (en) | Test automation of application | |
JP4363533B2 (ja) | 文字化けを検出するための装置、方法、及びプログラム | |
CN111124937B (zh) | 基于插桩函数辅助提高生成测试用例效率的方法及系统 | |
CN111078529B (zh) | 客户端写入模块测试方法、装置、电子设备 | |
CN115470152B (zh) | 测试代码生成方法、测试代码生成装置以及存储介质 | |
CN117499287A (zh) | Web测试方法、装置、存储介质及代理服务器 | |
US7882205B2 (en) | Device setting apparatus, device setting method, information acquiring apparatus, information acquiring method, storage medium, and program | |
US20210382810A1 (en) | Test data generation apparatus, test data generation method and program | |
CN111949537A (zh) | 接口的测试方法、装置、设备和介质 | |
CN116166533A (zh) | 接口测试方法、装置、终端设备以及存储介质 | |
CN111522752B (zh) | 程序测试方法、程序测试装置、存储介质和电子设备 | |
JP2005222130A (ja) | プログラム管理方法及び実施装置並びに処理プログラム | |
JP6261244B2 (ja) | Webアプリケーションテスト装置およびそのプログラム | |
JP6221869B2 (ja) | 画面遷移制御方法、画面遷移制御プログラムおよび画面遷移制御装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |