CN113157584A - 一种基于HttpClient的模糊测试方法 - Google Patents
一种基于HttpClient的模糊测试方法 Download PDFInfo
- Publication number
- CN113157584A CN113157584A CN202110467693.5A CN202110467693A CN113157584A CN 113157584 A CN113157584 A CN 113157584A CN 202110467693 A CN202110467693 A CN 202110467693A CN 113157584 A CN113157584 A CN 113157584A
- Authority
- CN
- China
- Prior art keywords
- test
- fuzzy
- following
- tested
- steps
- 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
- 238000010998 test method Methods 0.000 title claims abstract description 7
- 238000012360 testing method Methods 0.000 claims abstract description 99
- 238000000034 method Methods 0.000 claims abstract description 21
- 238000012544 monitoring process Methods 0.000 claims abstract description 11
- 238000003556 assay Methods 0.000 claims 1
- 238000011160 research Methods 0.000 abstract description 2
- 238000012827 research and development Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 240000005809 Prunus persica Species 0.000 description 1
- 235000006040 Prunus persica var persica Nutrition 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 235000002020 sage Nutrition 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000002054 transplantation Methods 0.000 description 1
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
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
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
本发明公开了一种基于HttpClient的模糊测试方法,包括以下步骤:步骤一:输入API文档,生成模糊测试数据;步骤二:使用HttpClient发送请求执行模糊测试数据;步骤三:监控被测系统行为,判断实际响应结果与预期结果是否一致,若实际响应结果与预期结果不一致,则判断使用当前测试用例会导致被测系统出现漏洞。本发明解决了模糊测试领域缺失了基于Java语言的模糊测试框架的尴尬处境,可以有效地解决测试人员发现问题、研发人员定位问题消耗大量时间却不能解决到全部问题的现象。
Description
技术领域
本发明涉及模糊测试领域,尤其是涉及一种基于HttpClient的模糊测试方法。
背景技术
当今互联网成为了人们生活不可或缺的一部分,各种软件及各种系统层出不穷,同时软件系统的正确性、安全性也成为了一个备受关注的技术问题。在当今网络信息的时代,软件系统任何一点微小的错误都会被无限放大,仅靠测试及开发人员去发现处理是很难杜绝的。
模糊测试(Fuzzing Test)是一种自动或半自动化地提供非预期的输入,并通过监视异常结果来发现实际的软件实现的漏洞。模糊测试的概念最早是由University ofWisconsin Madison的Professor Barton Miller和他的学生提出的,他在高级操作系统课程上,实现了一个简单原始的模糊器(fuzzer)来测试UNIX系统的健壮性。2006年开始,模糊测试技术在软件检测领域得到了长足的发展,2007年,team509安全团队的wushi通过模糊测试技术发现了QQ的一个溢出漏洞,wushi本着“负责任的漏洞披露过程”将漏洞细节告知了腾讯安全团队。为此,腾讯还专门发布了一个安全公告。2008年Godefroid等人,利用Fuzzing工具SAGE发现大型Windows应用程序中二十多个未知漏洞。近几年一些开源的模糊器和模糊测试框架渐渐走向成熟,例如American fuzzy lop,Peach,Sulley等,在发现软件漏洞这一领域,均取得了不俗的成果。模糊测试显然已经成为发现软件漏洞的重要手段与测试方式之一,然而实时高效准确地监控异常的监控模块一直是实现模糊测试工具的难点。
目前,软件测试领域模糊测试工具主要是:
1、全自动模糊测试工具bed
2、半自动模糊测试工具burpsuite
3、半自动模糊测试框架spike/sulley
使用burpsuite要受制于工具,一是可能会用得不方便,二是模糊测试要输出结果到其他代码的环境中不太适合,所以我们需要代码式的框架,然而模糊测试框架spike本质是C语言,sulley本质是Python,市面上缺乏基于Java语言的模糊测试框架。
发明内容
本发明的目的在于用于解决上述技术问题,提供一种基于HttpClient的模糊测试方法,本发明解决了模糊测试领域缺失了基于Java语言的模糊测试框架的尴尬处境,可以有效地解决测试人员发现问题、研发人员定位问题消耗大量时间却不能解决到全部问题的现象。
本发明解决上述技术问题采用的技术方案是:一种基于HttpClient的模糊测试方法,包括以下步骤:
步骤一:输入API文档,生成模糊测试数据;
步骤二:使用HttpClient发送请求执行模糊测试数据;
步骤三:监控被测系统行为,判断实际响应结果与预期结果是否一致,若实际响应结果与预期结果不一致,则判断使用当前测试用例会导致被测系统出现漏洞。
作为优选,步骤一还包括以下内容:输入并读取API文档获得若干参数,若干参数使用随机算法生成测试用例以生成模糊测试数据。提供被测系统的API文档,API文档需要基于excel表形式,程序可以读取API文档并快速地定位不同的参数以生成各种模糊测试数据。所述模糊测试数据即为测试用例。
作为优选,所述若干参数使用随机算法生成测试用例以生成模糊测试数据包括:若干参数使用随机算法生成随机数据,一组参数数据组合,生成一条测试用例,若干组参数组合生成若干条测试用例。
作为优选,步骤二还包括以下内容:通过Split方法切割生成的多条测试用例,将切割后的多条测试用例放入String数组中,通过遍历的方式提取出每条测试用例,使用HttpClient发送请求执行每条测试用例。通过使用@DataProvider注解,定义获取数据源方法,生成的测试用例随机、多样性,可以根据自己的需求定义,测试用例丰富多样,可以更好的、更全面的发现系统的异常问题及安全隐患。Split方法属于现有技术。
作为优选,还包括步骤四:生成测试报告,包括以下内容:通过监听每条测试用例执行情况,统计每条测试用例执行的结果,生成测试报告。过测试报告,可以直观的看到具体是哪个接口出现了问题以及抛出的异常时什么,这样,研发人员就可以根据测试报告去进行问题的修复,节约了测试人员发现问题、研发人员定位问题的大量时间。
作为优选,步骤一还包括确定被测系统方法,包括以下内容:用户输入被测系统的IP地址及端口,并在被测系统中加入自动重启方法。确定被测系统后输入被测系统API文档,开始生成模糊测试数据。进行模糊测试的时候,很容易因为各种测试数据造成系统崩溃导致测试无法进行下去,因此崩溃之后重启系统可以很好的解决这个问题。自动重启方法属于现有技术。
本发明具有的有益效果是:
1、本发明解决了模糊测试领域缺失了基于Java语言的模糊测试框架的尴尬处境,测试报告可以有效地解决测试人员发现问题、研发人员定位问题消耗大量时间却不能解决到全部问题的现象;
2、本发明可以准确地捕捉异常的产生,同时具有运行灵活、便于移植等特点。
附图说明
图1是本发明的流程图。
图2是图1中监控系统行为的流程图。
具体实施方式
以下结合附图和实施方式对本发明作进一步的说明。
在本发明中,需要理解的是:
HttpClient,支持HTTP协议的客户端编程工具包;
API,Application Programming Interface,应用程序编程接口;
Split,用于字符分割的命令读取指定文件;
String,字符串;
如图1-2所示,本发明一种基于HttpClient的模糊测试方法,包括以下步骤:
步骤一:输入API文档,生成模糊测试数据;
步骤二:使用HttpClient发送请求执行模糊测试数据;
步骤三:监控被测系统行为,判断实际响应结果与预期结果是否一致,若实际响应结果与预期结果不一致,则判断使用当前测试用例会导致被测系统出现漏洞。预期结果由API文档提供,被测系统若存在漏洞,实际响应结果会与预期结果不一致的情况。本实施例中将预期结果设置为200(成功处理了请求,一般情况下都是返回此状态码)或302(服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求),但若被测系统存在漏洞,实际响应结果可能为400(服务器不理解请求的语法)或500(服务器遇到错误,无法完成请求),本实施例仅举例说明,并不是对本专利中实际响应结果与预期结果不一致的限定。
步骤一还包括以下内容:输入并读取API文档获得若干参数,若干参数使用随机算法生成测试用例以生成模糊测试数据。提供被测系统的API文档,API文档需要基于excel表形式,程序可以读取API文档并快速地定位不同的参数以生成各种模糊测试数据。所述模糊测试数据即为测试用例。
所述若干参数使用随机算法生成测试用例以生成模糊测试数据包括:若干参数使用随机算法生成随机数据,一组参数数据组合,生成一条测试用例,若干组参数组合生成若干条测试用例。
步骤二还包括以下内容:通过Split方法切割生成的多条测试用例,将切割后的多条测试用例放入String数组中,通过遍历的方式提取出每条测试用例,使用HttpClient发送请求执行每条测试用例。
还包括步骤四:生成测试报告,包括以下内容:通过监听每条测试用例执行情况,统计每条测试用例执行的结果,生成测试报告。
步骤一还包括确定被测系统方法,包括以下内容:用户输入被测系统的IP地址及端口,并在被测系统中加入自动重启方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种基于HttpClient的模糊测试方法,其特征在于:包括以下步骤:
步骤一:输入API文档,生成模糊测试数据;
步骤二:使用HttpClient发送请求执行模糊测试数据;
步骤三:监控被测系统行为,判断实际响应结果与预期结果是否一致,若实际响应结果与预期结果不一致,则判断使用当前测试用例会导致被测系统出现漏洞。
2.根据权利要求1所述的基于HttpClient的模糊测试方法,其特征在于:步骤一还包括以下内容:输入并读取API文档获得若干参数,若干参数使用随机算法生成测试用例以生成模糊测试数据。
3.根据权利要求2所述的基于HttpClient的模糊测试方法,其特征在于:所述若干参数使用随机算法生成测试用例以生成模糊测试数据包括:若干参数使用随机算法生成随机数据,一组参数数据组合,生成一条测试用例,若干组参数组合生成若干条测试用例。
4.根据权利要求3所述的基于HttpClient的模糊测试方法,其特征在于:步骤二还包括以下内容:通过Split方法切割生成的多条测试用例,将切割后的多条测试用例放入String数组中,通过遍历的方式提取出每条测试用例,使用HttpClient发送请求执行每条测试用例。
5.根据权利要求4所述的基于HttpClient的模糊测试方法,其特征在于:还包括步骤四:生成测试报告,包括以下内容:通过监听每条测试用例执行情况,统计每条测试用例执行的结果,生成测试报告。
6.根据权利要求1或2或3或4或5所述的基于HttpClient的模糊测试方法,其特征在于:步骤一还包括确定被测系统方法,包括以下内容:用户输入被测系统的IP地址及端口,并在被测系统中加入自动重启方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110467693.5A CN113157584A (zh) | 2021-04-28 | 2021-04-28 | 一种基于HttpClient的模糊测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110467693.5A CN113157584A (zh) | 2021-04-28 | 2021-04-28 | 一种基于HttpClient的模糊测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113157584A true CN113157584A (zh) | 2021-07-23 |
Family
ID=76872099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110467693.5A Pending CN113157584A (zh) | 2021-04-28 | 2021-04-28 | 一种基于HttpClient的模糊测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157584A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115774677A (zh) * | 2022-12-20 | 2023-03-10 | 上海安般信息科技有限公司 | 一种基于多参数输入的模糊测试方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068925A (zh) * | 2015-07-29 | 2015-11-18 | 北京理工大学 | 软件安全缺陷发现系统 |
CN107797933A (zh) * | 2017-11-22 | 2018-03-13 | 中国银行股份有限公司 | 生成模拟报文的方法及装置 |
CN108182359A (zh) * | 2017-12-29 | 2018-06-19 | 中国信息通信研究院 | 一种测试可信环境下api安全性的方法、装置及存储介质 |
CN110134584A (zh) * | 2019-04-12 | 2019-08-16 | 深圳壹账通智能科技有限公司 | 一种接口测试用例的生成方法、装置、存储介质和服务器 |
CN110196813A (zh) * | 2019-06-06 | 2019-09-03 | 北京百度网讯科技有限公司 | 接口测试方法、装置、设备和介质 |
CN110297760A (zh) * | 2019-05-22 | 2019-10-01 | 平安普惠企业管理有限公司 | 测试数据的构造方法、装置、设备及计算机可读存储介质 |
CN111309621A (zh) * | 2020-02-26 | 2020-06-19 | 江苏满运软件科技有限公司 | 接口测试方法、系统、设备及存储介质 |
CN112328419A (zh) * | 2020-11-27 | 2021-02-05 | 北京字节跳动网络技术有限公司 | 远程过程调用接口的测试用例生成方法、装置、存储介质及电子设备 |
-
2021
- 2021-04-28 CN CN202110467693.5A patent/CN113157584A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068925A (zh) * | 2015-07-29 | 2015-11-18 | 北京理工大学 | 软件安全缺陷发现系统 |
CN107797933A (zh) * | 2017-11-22 | 2018-03-13 | 中国银行股份有限公司 | 生成模拟报文的方法及装置 |
CN108182359A (zh) * | 2017-12-29 | 2018-06-19 | 中国信息通信研究院 | 一种测试可信环境下api安全性的方法、装置及存储介质 |
CN110134584A (zh) * | 2019-04-12 | 2019-08-16 | 深圳壹账通智能科技有限公司 | 一种接口测试用例的生成方法、装置、存储介质和服务器 |
CN110297760A (zh) * | 2019-05-22 | 2019-10-01 | 平安普惠企业管理有限公司 | 测试数据的构造方法、装置、设备及计算机可读存储介质 |
CN110196813A (zh) * | 2019-06-06 | 2019-09-03 | 北京百度网讯科技有限公司 | 接口测试方法、装置、设备和介质 |
CN111309621A (zh) * | 2020-02-26 | 2020-06-19 | 江苏满运软件科技有限公司 | 接口测试方法、系统、设备及存储介质 |
CN112328419A (zh) * | 2020-11-27 | 2021-02-05 | 北京字节跳动网络技术有限公司 | 远程过程调用接口的测试用例生成方法、装置、存储介质及电子设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115774677A (zh) * | 2022-12-20 | 2023-03-10 | 上海安般信息科技有限公司 | 一种基于多参数输入的模糊测试方法及装置 |
CN115774677B (zh) * | 2022-12-20 | 2024-02-23 | 上海安般信息科技有限公司 | 一种基于多参数输入的模糊测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhao et al. | {Non-Intrusive} performance profiling for entire software stacks based on the flow reconstruction principle | |
Roest et al. | Regression testing ajax applications: Coping with dynamism | |
CN110912776B (zh) | 一种实体路由器管理协议的自动化模糊测试方法及装置 | |
Khalid et al. | Examining the relationship between findbugs warnings and app ratings | |
Peiris et al. | Pad: Performance anomaly detection in multi-server distributed systems | |
Zhang et al. | SRFuzzer: an automatic fuzzing framework for physical SOHO router devices to discover multi-type vulnerabilities | |
CN109948338B (zh) | 基于静态分析的安卓应用敏感路径触发方法 | |
CN111400167A (zh) | Redfish服务合规性验证方法、装置及设备和介质 | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
de Cleva Farto et al. | Reuse of model-based tests in mobile apps | |
Wang et al. | Detecting non-crashing functional bugs in Android apps via deep-state differential analysis | |
US20220138080A1 (en) | Computer-implemented method and device for selecting a fuzzing method for testing a program code | |
CN113157584A (zh) | 一种基于HttpClient的模糊测试方法 | |
JP2010140408A (ja) | ソースコード変換装置 | |
CN106855844B (zh) | 一种性能测试方法和系统 | |
CN111124937B (zh) | 基于插桩函数辅助提高生成测试用例效率的方法及系统 | |
Paydar | An empirical study on the effectiveness of monkey testing for android applications | |
JP2010140407A (ja) | ソースコード検査装置 | |
Pereira et al. | Extending EcoAndroid with automated detection of resource leaks | |
Shen et al. | A systematic review of fuzzy testing for information systems and applications | |
Zhang et al. | Crashfuzzer: Detecting input processing related crash bugs in android applications | |
Zaid et al. | Automated identification of over-privileged smartthings apps | |
CN113326193A (zh) | 一种小程序测试方法及装置 | |
Micskei et al. | Robustness testing techniques for high availability middleware solutions | |
Shan et al. | Face It Yourselves: An LLM-Based Two-Stage Strategy to Localize Configuration Errors via Logs |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210723 |