CN105302731A - 网站架构升级测试***和方法 - Google Patents
网站架构升级测试***和方法 Download PDFInfo
- Publication number
- CN105302731A CN105302731A CN201510908223.2A CN201510908223A CN105302731A CN 105302731 A CN105302731 A CN 105302731A CN 201510908223 A CN201510908223 A CN 201510908223A CN 105302731 A CN105302731 A CN 105302731A
- Authority
- CN
- China
- Prior art keywords
- upgrading
- user
- module
- request msg
- request
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种网站架构升级测试***和方法。所述网站架构升级测试***包括:流量复制和控制单元,用于接收用户请求数据,并将接收到的用户请求数据复制为两份,并将两份用户请求数据分别发送到升级前的***和升级后的***;功能测试处理单元,用于基于升级前的***和升级后的***的输出结果进行测试。
Description
技术领域
本发明涉及网站架构升级,具体地涉及网站架构升级测试***和方法。
背景技术
近年来,随着互联网行业的兴起,互联网产品也层出不穷,并已经逐渐成为当今社会信息交互的主要载体。随着用户数量的飞速增长,很多互联网产品原有的***的性能和扩展性会遇到瓶颈,不得不每隔一段时间进行***架构升级。架构升级通常是在不改变原有功能的前提下,对***的底层架构进行调整和优化,对既有代码重新整理和优化,从而使升级后***性能和扩展性更好。架构升级之后,最重要的就是功能测试。如何保证架构升级后的***功能的可靠性已经成为许多大型互联网公司迫切需要解决的一个问题。
当前,互联网行业通常采用以下几种技术进行产品的功能测试:
UnitTest(单元测试):开发人员编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为;
集成测试(也叫组装测试):单元测试的逻辑扩展。它最简单的形式是把两个已经测试过的单元组合成一个组件,测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合为程序的更大部分。方法是测试片段的组合,并最终扩展成进程,将模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试;以及
回归测试:指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。
目前国内大部分互联网公司网站***架构升级后,***功能测试都是由开发人员的编写单元测试和集成测试,测试人员采用人工黑盒测试来完成的。互联网行业中产品的单元测试,集成测试等测试方法都是沿用了传统软件行业测试手段。但是对于网站架构升级来说,架构升级人员通常不是原有***开发人员。因此难以全面评估出涉及到改动的功能点,并且既有代码重构后,单元测试的覆盖度也很难做到100%完全覆盖。因此,经常出现产品上线一段时间后才暴露出bug(漏洞)的情况。
发明内容
为了解决现有技术中存在的上述问题,本发明提出了一种网站架构升级测试***和方法。
根据本发明的一个方面,提出了一种网站架构升级测试***,包括:流量复制和控制单元,用于接收用户请求数据,并将接收到的用户请求数据复制为两份,并将两份用户请求数据分别发送到升级前的***和升级后的***;功能测试处理单元,用于基于升级前的***和升级后的***的输出结果进行测试。
优选地,所述流量复制和控制单元包括:
接收模块,用于接收用户请求数据,
复制模块,用于执行对用户请求数据的复制,以及
存储模块,用于存储用户请求数据。
优选地,所述代理模块容宿所述执行模块。
优选地,升级前的***和升级后的***并行连接在所述流量复制和控制单元与所述功能测试处理单元之间。
优选地,所述用户请求数据是超文本传输协议或安全超文本传输协议请求报文信息。
根据本发明的另一方面,提出了一种网站架构升级测试方法,包括:接收用户请求数据;将接收到的用户请求数据复制为两份,并将两份用户请求数据分别发送到升级前的***和升级后的***;基于升级前的***和升级后的***的输出结果进行测试。
优选地,所述方法还包括:存储用户请求数据。
优选地,所述用户请求数据是超文本传输协议或安全超文本传输协议请求报文信息。
根据本发明的上述技术方案,解决了网站架构升级后,功能测试效率低下,测试覆盖度不全面的问题。该方案的优点在于使用全量生产线的原生的用户请求数据和响应结果作为待测试***的输入参数和标准输出值。相当于为架构升级后的***打造了实时准生成环境,成功通过该方案测试的***上线之后,理论上不会再出现bug,因为该***已经提前接受了全量线上用户请求的考验。测试样本数相比于测试人员模拟的实验数据要丰富和真实的多。
附图说明
图1示出了根据本发明的网站架构升级测试***的结构框图;
图2示出了根据本发明的网站架构升级测试方法的流程图;
图3示出了根据本发明的一种实施例的网站架构升级测试***中的流量复制和控制单元的具体结构框图。
具体实施方式
以下参考附图对本发明进行具体描述。
首先,图1示出了根据本发明的网站架构升级测试***100的结构框图。
所述网站架构升级测试***100包括流量复制和控制单元110和功能测试处理单元120。所述流量复制和控制单元110和所述功能测试处理单元120之间连接待测***(即升级后的***)。
具体地,所述流量复制和控制单元110的输入端接收用户请求数据。所述流量复制和控制单元110然后将接收到的用户请求数据复制为两份。最后,流量复制和控制单元110经其输出端将两份用户请求数据分别发送到升级前的***和升级后的***。所述升级前的***和升级后的***并行连接在所述流量复制和控制单元110与所述功能测试处理单元120之间。
所述功能测试处理单元120在接收到升级前的***和升级后的***的输出结果后,基于所述输出结果进行测试。
在一种优选实施例中,所述流量复制和控制单元110包括:接收模块、复制模块和存储模块。其中,接收模块用于接收用户请求数据;复制模块用于执行对用户请求数据的复制;存储模块用于存储用户请求数据。
在一种更为优选的实施例中,所述代理模块容宿所述执行模块。
优选地,所述用户请求数据是超文本传输协议或安全超文本传输协议请求报文信息。
在图1所示的***中,流量复制和控制单元110是所述***100的重要单元,生产线上所有用户的请求数据都要先经过该单元。它将用户原生请求数据完整复制一份到升级后的***,以便升级后的***能和升级前的***有同样的输入参数。同时该模块承担按照业务维度记录相关的请求数据序列的任务。
功能测试处理单元120则承担了记录升级前的***和升级后***的输出结果并根据结果执行测试任务的工作。同时,该单元还承担了按照业务维度回访用户请求的功能。
接下来参见图2,图2示出了根据本发明的网站架构升级测试方法200的流程图。网站架构升级测试方法200开始于步骤S210,其中接收用户请求数据。然后,所述方法200进行到步骤S220,在步骤S220中,将接收到的用户请求数据复制为两份,并将两份用户请求数据分别发送到升级前的***和升级后的***。最后,在步骤S230中,基于升级前的***和升级后的***的输出结果进行测试。
优选地,所述方法200还可包括存储用户请求数据的步骤。
优选地,所述用户请求数据是超文本传输协议或安全超文本传输协议请求报文信息。
接下来,图3中示出了根据本发明的一种实施例的网站架构升级测试***中的流量复制和控制单元300的具体结构框图。
如上述文所述,流量复制和控制单元包括:接收模块、复制模块和存储模块。在图3所示的实施例中,将接收模块、复制模块和存储模块分别实现为Nginx模块310、Lua模块320和Redis模块330。
具体地,Nginx模块310是一种高性能的HTTP和反向代理服务器,其特点是占有内存少,并发能力强,稳定特别高。Nginx模块310在流量复制和控制单元300中作为原***的反向代理服务器,同时还是下面要提高的lua(一种高效的脚本语言)模块320的脚本的宿主程序。
Lua是世界上运行速度最快的脚本语言之一,并且很容易镶嵌到其他语言编写的程序中。在流量复制和控制单元310中,用lua模块320来实现了具体的流量复制和控制功能。由于网络原因,在实际环境中很难保证100%将流量复制到目的站点,当复制出现异常的时候将异常信息记录到Redis模块330中,以方便对问题进行定位。
Redis模块330(Redis是一种开源的高效的基于内存的key-value数据库)用来存储基于业务维度用户请求序列数据,以便当测试结果出现异常的时候,通过回放测试数据,定位***bug。
根据图3中所示的流量复制和控制单元300的具体结构。流量复制和控制单元的功能可具体实现如下:
1.在Nginx模块上安装第三方模块LuaNginxModule(其实现了将lua语言宿主到Nginx执行);
2.Nginx模块的配置文件中将需要测试的位置节点增加access_by_lua_file指令(LuaNginxModule模块中的指令,用来将指定的lua代码文件注入到Nginx访问阶段);
3.通过access_by_lua_file指令可以在请求的访问阶段将lua模块代码注入到nginx模块执行流程中;
4.在lua模块代码中使用lua_socket模块(lua模块中的socket模块,可以实现发起tcp和http请求)将本次请求的数据包发送到测试地址,实现将请求复制到测试环境;
5.在lua模块代码中使用lua_socket模块将线上请求的包头和包体数据保存到redis模块,以便后期做请求的回放。
尽管以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改、替换和改变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。
Claims (8)
1.一种网站架构升级测试***,包括:
流量复制和控制单元,用于接收用户请求数据,并将接收到的用户请求数据复制为两份,并将两份用户请求数据分别发送到升级前的***和升级后的***;
功能测试处理单元,用于基于升级前的***和升级后的***的输出结果进行测试。
2.根据权利要求1所述的***,其中所述流量复制和控制单元包括:
接收模块,用于接收用户请求数据,
复制模块,用于执行对用户请求数据的复制,以及
存储模块,用于存储用户请求数据。
3.根据权利要求2所述的***,其中所述代理模块容宿所述执行模块。
4.根据权利要求1所述的***,其中升级前的***和升级后的***并行连接在所述流量复制和控制单元与所述功能测试处理单元之间。
5.根据权利要求1所述的***,其中所述用户请求数据是超文本传输协议或安全超文本传输协议请求报文信息。
6.一种网站架构升级测试方法,包括:
接收用户请求数据;
将接收到的用户请求数据复制为两份,并将两份用户请求数据分别发送到升级前的***和升级后的***;
基于升级前的***和升级后的***的输出结果进行测试。
7.根据权利要求6所述的方法,还包括:存储用户请求数据。
8.根据权利要求6所述的方法,其中所述用户请求数据是超文本传输协议或安全超文本传输协议请求报文信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510908223.2A CN105302731A (zh) | 2015-12-10 | 2015-12-10 | 网站架构升级测试***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510908223.2A CN105302731A (zh) | 2015-12-10 | 2015-12-10 | 网站架构升级测试***和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105302731A true CN105302731A (zh) | 2016-02-03 |
Family
ID=55200020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510908223.2A Pending CN105302731A (zh) | 2015-12-10 | 2015-12-10 | 网站架构升级测试***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302731A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273252A (zh) * | 2017-06-13 | 2017-10-20 | 北京小度信息科技有限公司 | 测试方法及装置 |
CN110175118A (zh) * | 2019-05-08 | 2019-08-27 | 重庆八戒电子商务有限公司 | 软件性能测试方法和装置 |
CN110196723A (zh) * | 2018-02-27 | 2019-09-03 | 广东神马搜索科技有限公司 | 流量数据拷贝的方法、装置以及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880830A (zh) * | 2011-07-15 | 2013-01-16 | 华为软件技术有限公司 | 一种原始测试数据的采集方法及装置 |
CN103631705A (zh) * | 2012-08-24 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 一种针对搜索引擎的回归测试方法和装置 |
CN104516809A (zh) * | 2013-09-26 | 2015-04-15 | 方正宽带网络服务股份有限公司 | 一种自动化测试***及方法 |
US9152386B1 (en) * | 2013-03-11 | 2015-10-06 | Trizetto Corporation | Method and system for rapid upgrade through transactional analysis |
CN105117329A (zh) * | 2015-08-07 | 2015-12-02 | 北京思特奇信息技术股份有限公司 | 一种应用程序自动上线方法及*** |
-
2015
- 2015-12-10 CN CN201510908223.2A patent/CN105302731A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880830A (zh) * | 2011-07-15 | 2013-01-16 | 华为软件技术有限公司 | 一种原始测试数据的采集方法及装置 |
CN103631705A (zh) * | 2012-08-24 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 一种针对搜索引擎的回归测试方法和装置 |
US9152386B1 (en) * | 2013-03-11 | 2015-10-06 | Trizetto Corporation | Method and system for rapid upgrade through transactional analysis |
CN104516809A (zh) * | 2013-09-26 | 2015-04-15 | 方正宽带网络服务股份有限公司 | 一种自动化测试***及方法 |
CN105117329A (zh) * | 2015-08-07 | 2015-12-02 | 北京思特奇信息技术股份有限公司 | 一种应用程序自动上线方法及*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273252A (zh) * | 2017-06-13 | 2017-10-20 | 北京小度信息科技有限公司 | 测试方法及装置 |
CN110196723A (zh) * | 2018-02-27 | 2019-09-03 | 广东神马搜索科技有限公司 | 流量数据拷贝的方法、装置以及计算机可读存储介质 |
CN110175118A (zh) * | 2019-05-08 | 2019-08-27 | 重庆八戒电子商务有限公司 | 软件性能测试方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726093B (zh) | 用于执行测试用例的方法、设备和计算机程序产品 | |
CN110147240B (zh) | 基于云存储的应用程序安装方法、***及存储介质 | |
US10185650B1 (en) | Testing service with control testing | |
CN108923997B (zh) | 一种基于python的云服务节点自动测试方法及装置 | |
CN104468655A (zh) | 对反向代理软件进行测试的方法及*** | |
CN105302731A (zh) | 网站架构升级测试***和方法 | |
CN111767226A (zh) | 一种云计算平台资源的测试方法、***及设备 | |
CN105786636B (zh) | 一种***修复方法及装置 | |
CN109684204A (zh) | 一种http接口自动测试方法 | |
CN112702195A (zh) | 网关配置方法、电子设备及计算机可读存储介质 | |
CN110198222B (zh) | 一种配电自动化终端即插即用测试方法及测试主站 | |
CN116090380B (zh) | 数字集成电路验证的自动化方法及装置、存储介质和终端 | |
CN117076296A (zh) | 网络嵌入式设备的控制***、方法、设备及介质 | |
US10055516B1 (en) | Testing open mobile alliance server payload on an open mobile alliance client simulator | |
CN113050925B (zh) | 区块链智能合约修复方法及装置 | |
CN114500348B (zh) | 一种cdn网关测试方法及*** | |
CN116016270A (zh) | 一种交换机测试管理方法、装置、电子设备和存储介质 | |
US10481969B2 (en) | Configurable system wide tests | |
CN112765038B (zh) | 一种分布式集群软件的测试方法、装置、设备及存储介质 | |
CN114327416A (zh) | 应用于开发分支的接口同步方法、装置及电子设备 | |
CN112860562B (zh) | 自动化测试方法和装置 | |
CN113986263A (zh) | 代码自动化测试方法、装置、电子设备、存储介质 | |
CN110045971A (zh) | ***升级恢复方法及装置 | |
CN111190822A (zh) | 一种自动化测试分布式***软件的方法及装置 | |
CN111444108A (zh) | 一种基于s7工业协议的行为审计自动化测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160203 |