2个版本
0.1.1 | 2019年6月25日 |
---|---|
0.1.0 | 2019年6月25日 |
#35 in #testing-http
30KB
530 行
Heel Gun
测试您的HTTP服务器对任意输入的鲁棒性。 heel-gun
是一个工具,它执行多个HTTP请求以识别服务器行为不当的情况。请求基于一组可配置的规则随机构建。
使用
此CLI工具期望两个主要参数:HTTP服务器的基本URL,以及定义要测试的HTTP端点和如何生成这些参数的配置文件。
USAGE:
heel-gun [OPTIONS] <url> <config> [outdir]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-N <n> number of iterations to test for each target [default: 100]
ARGS:
<url> the base URL to test
<config> path to configuration file
<outdir> path to the output directory containing the logs [default: output]
示例
heel-gun http://testmachine.myspot.net:8080 resources/example.yaml -N 4
这将使用一组随机的请求测试服务器,例如这些
GET http://testmachine.myspot.net:8080/cool-endpoint/lBtY2g18?id=0&more=891134
GET http://testmachine.myspot.net:8080/cool-endpoint/ie9EMV9G?id=-1&more=238164
GET http://testmachine.myspot.net:8080/cool-endpoint/dJ7iV7cs?id=null&more=415128
GET http://testmachine.myspot.net:8080/cool-endpoint/HCvpC90k?id=null&more=902781
POST http://testmachine.myspot.net:8080/user/UBwqFvFnXh?admin=undefined
POST http://testmachine.myspot.net:8080/user/LkspwEu0g4?admin=null
POST http://testmachine.myspot.net:8080/user/pkgagTBnem?admin
POST http://testmachine.myspot.net:8080/user/rRdlgzll2D?admin=false
并将有问题响应记录在CSV文件中
method,uri,reason,file
GET,http://testmachine.myspot.net:8080/cool-endpoint/lBtY2g18?id=0&more=891134,501 Not Implemented,GET/cool-endpoint/lBtY2g18?id=0&more=891134
GET,http://testmachine.myspot.net:8080/cool-endpoint/ie9EMV9G?id=-1&more=238164,501 Not Implemented,GET/cool-endpoint/ie9EMV9G?id=-1&more=238164
GET,http://testmachine.myspot.net:8080/cool-endpoint/dJ7iV7cs?id=null&more=415128,501 Not Implemented,GET/cool-endpoint/dJ7iV7cs?id=null&more=415128
GET,http://testmachine.myspot.net:8080/cool-endpoint/HCvpC90k?id=null&more=902781,501 Not Implemented,GET/cool-endpoint/HCvpC90k?id=null&more=902781
POST,http://testmachine.myspot.net:8080/user/UBwqFvFnXh?admin=undefined,501 Not Implemented,POST/user/UBwqFvFnXh?admin=undefined
POST,http://testmachine.myspot.net:8080/user/LkspwEu0g4?admin=null,501 Not Implemented,POST/user/LkspwEu0g4?admin=null
POST,http://testmachine.myspot.net:8080/user/pkgagTBnem?admin,501 Not Implemented,POST/user/pkgagTBnem?admin
POST,http://testmachine.myspot.net:8080/user/rRdlgzll2D?admin=false,501 Not Implemented,POST/user/rRdlgzll2D?admin=false
此外,服务器错误响应的HTTP正文作为独立的文件保存在输出目录中
output/
├── GET
│ └── cool-endpoint
│ ├── lBtY2g18?id=0&more=891134
│ ├── ie9EMV9G?id=-1&more=238164
│ ├── dJ7iV7cs?id=null&more=415128
│ └── HCvpC90k?id=null&more=902781
└── POST
└── user
├── UBwqFvFnXh?admin=undefined
├── LkspwEu0g4?admin=null
├── pkgagTBnem?admin
└── rRdlgzll2D?admin=false
目前,有问题响应是HTTP响应状态码为5xx
,或者请求导致连接中断或超时。
<config>
是一个描述生成URI路径和其他参数(如查询字符串参数)的规则的文件。该模式作为TypeScript类型定义文件(heel-gun.d.ts)提供。请参阅资源目录中的示例。支持作为实验性功能提供的Play框架"routes"定义。
您还可以定义RUST_LOG
环境变量以获得额外的日志输出(由log
定义,可以是"error"、"warn"、"info"、"debug"或"trace"之一)
RUST_LOG=info heel-gun http://testmachine.myspot.net:8080 resources/example.yaml
许可证和警告说明
许可协议为以下之一
- Apache许可证2.0版本,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
除非您明确声明,否则根据Apache-2.0许可证定义,您提交的任何旨在包含在工作中的贡献,都应双许可,如上所述,没有任何额外的条款或条件。
尽管主要目标是测试服务器的健壮性,但此工具也可能表现出能够进行危险的错误(例如在生产环境中运行),不慎的行为(DoS攻击)和其他类型的滥用。请在使用heel-gun
时负责。根据上述许可证,heel-gun
的所有作者和贡献者不对由此软件使用造成的任何损害承担责任。
依赖项
~15–25MB
~336K SLoC