phmlabs / smoke
Smoke 可以用来检查一个 Web 平台是否基本正常工作。
此包的官方仓库似乎已消失,因此该包已被冻结。
此包尚无发布版本,可用的信息不多。
README
- 许可协议:MIT
- 构建:
- 代码质量:
- 依赖:
- Smoke 在线: http://smoke.phmlabs.com/
- 主页: http://www.thewebhatesme.com/
- Koalamon: Koalamon 家族的一部分
目的
Smoke 可以用来检查一个 Web 平台是否基本正常工作。
您只需定义扫描器的入口点并开始。Smoke 捕获器将扫描它找到的前 n 个(定义为命令行参数)网站,并对照一组定义的规则进行检查。
Smoke.phar analyse "http://www.amilio.de"
安装
使用 curl 下载 phar 归档
curl -O -LSs http://pharchive.phmlabs.com/archive/phmLabs/Smoke/current/Smoke.phar && chmod +x Smoke.phar
安装完成。
配置
分析命令行参数
-
--num_urls 定义要检查的 URL 数量。标准是 20。
示例:Smoke.phar analyse --num_urls="20" test.com -
--parallel_requests 定义并行进行的请求数量。标准是 10。
示例:Smoke.phar analyse --parallel_requests="10" test.com -
--config_file 设置用于后续测试的配置文件
示例:Smoke.phar custom --config_file="path/to/my.yml"
配置文件
您可以使用 URL 白名单 和 黑名单 以及规则集 定义 来配置任何 Smoke 运行。配置存储在单个 YAML 文件中,因此可以在后续测试运行中使用。配置文件可能包含最多三个元素
-
whitelist 包含一个用破折号分隔的 URL 正则表达式模式列表。这允许 Smoke 在 HTML 源中找到时测试相关的 URL。
-
blacklist 可选 - 包含一个用破折号分隔的 URL 正则表达式模式列表,Smoke 不允许测试。这对于任何独立项目的链接第三方域或服务很有用,例如子域上的在线商店。
-
rules 可选 - 包含具有相应 PHP 类和测试参数的命名测试列表。
目前,无法 黑名单 某个 URL 模式并 白名单 与黑名单匹配的另一个。
配置示例和用法
responseRetriever: class: whm\Smoke\Extensions\SmokeResponseRetriever\Retriever\Crawler\Crawler parameters: startPage: "http://www.amilio.de" filters: _BlackWhiteListFilter: class: whm\Smoke\Extensions\SmokeResponseRetriever\Retriever\Crawler\Filter\BlackWhiteListFilter _ValidUrlFilter: class: whm\Crawler\Filter\ValidUrlFilter _ForeignDomainFilter: class: whm\Smoke\Extensions\SmokeResponseRetriever\Retriever\Crawler\Filter\ForeignDomainFilter whitelist: - ^www.amilio.de^ blacklist: - ^www.amilio.de/api^ rules: HtmlSize: class: whm\Smoke\Rules\Html\SizeRule parameters: maxSize: 1 ImageSize: class: whm\Smoke\Rules\Image\SizeRule parameters: maxSize: 1 reporter: XUnitReporter: class: whm\Smoke\Extensions\SmokeReporter\Reporter\XUnitReporter parameters: filename: /tmp/xunit.xml
更多示例,请参阅examples目录。要使用您的配置文件调用Smoke,只需在命令行中输入
Smoke.phar custom --config_file="test.yml"
如何编写自定义规则
每个规则定义在一个简单的PHP类中,该类实现了具有validate方法的whm\Smoke\Rules\Rule接口。这是Rule基本规定的内容
<?php namespace whm\Smoke\Rules; use whm\Smoke\Http\Response; interface Rule { public function validate(Response $response); }
### 编写自己的规则
规则配置的可选init方法可以接收一个参数,其值在您的Smoke配置文件中定义。在您的validate方法内部,使用传入的Response对象;如果测试失败,则抛出ValidationFailedException。
<?php namespace MyApplication; use whm\Smoke\Http\Response; use whm\Smoke\Rules\Rule; use whm\Smoke\Rules\ValidationFailedException; class FooTest implements Rule { private $search; public function init($foo = "foo") { $this->foo = $foo; } public function validate(Response $response) { if ( stripos($response->getBody(), $this->foo ) === false) { throw new ValidationFailedException( $this->foo . ' not found' ); } } }
与配置文件一起使用
在您的Smoke配置文件中,您可以像这样引用您的规则
rules: MyFooTest: class: MyApplication\FooTest parameters: foo: "bar"
响应对象
Response对象提供了一系列有用的快捷方式,用于处理页面请求完成之前发生的事情
<?php use whm\Smoke\Http\Response; class BarTest implements Rule { public function validate(Response $response) { // HTTP status code, e.g. 400 $status = $response->getStatus(); // S'th like "text/html" $content_type = $response->getContentType(); // String, usually page HTML $body = $response->getBody(); // Integer (milliseconds) $duration = $response->getDuration(); // To be explained $request = $response->getRequest(); $header = $response->getHeader() } }