問題の抑制¶
Mayhem がレポートする問題がすべて API のメンテナーにとって意味がある、 あるいは興味を引くものとはかぎりません。 Mayhem には API テスト ジョブで見つかった問題を抑制する仕組みがあります。
.mapi
構成ファイル¶
.mapi
構成ファイルは問題の抑制ルールを指定します。
#
# Example .mapi configuration file
#
version: "1.0"
# An array of rules for suppressing issues.
#
# If an issue matches any rule, it will be suppressed
# from reporting.
#
# Any issue will only match a rule if ALL statements for
# a rule match the issue.
suppressed:
- reason: "Suppress Internal API issues"
path: /internal/.*
- reason: "Ignore flask debug exceptions"
summary: flask\.debughelpers\.*
問題抑制ルールは、さまざまな問題フィールドに一致する正規表現で構成されます。
suppressed:
- reason: "(required string) Description of why issues matches this rule are suppressed"
method: "(optional regex) GET|PUT|POST|DELETE|PATCH... etc. Matches HTTP Method"
path: "(optional regex) /foo|/tools/.* Matches the HTTP request path"
rule_id: "(optional regex) internal-server-error|auth-bypass|server-crash... Matches mapi rule id"
summary: "(optional regex) matches additional issue summary - such as stacktrace message"
response: "(optional regex) Matches against the entire response, headers and payload. *"
レスポンス比較¶
抑制ルールに response
正規表現が含まれている場合、その正規表現はサーバーのレスポンス全体に適用されます。つまり、ヘッダーで始まり、ペイロードが送信された場合は後続のペイロードを含む、TCP 接続上で送信された生のレスポンスです。
curl -v
を使用してアクセスすることで、サーバーからの生の出力に近いものを確認できます。
例: curl -v https://google.com
[...]
< location: https://www.google.com/
< content-type: text/html; charset=UTF-8
< date: Thu, 24 Mar 1970 21:04:22 GMT
< expires: Sat, 23 Apr 1970 21:04:22 GMT
< cache-control: public, max-age=2592000
< server: gws
< content-length: 220
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< alt-svc: h3=":443"; ma=2592000,h3-29=":443";
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
レスポンス内のヘッダーと比較を行うには、次のように response
フィールドを追加します。
server: gws
ボディの一部と比較を行うには、次のように response
フィールドを追加します。
The document has moved
.mapi
ファイルの配置場所¶
💡 SCM ツールで抑制ルールへの変更を追跡できるよう、ソース管理システムに
.mapi
ファイルをチェックインすることを推奨します。
mapi
CLI は、次の優先順位で .mapi
ファイルを解決します。
mapi run
呼び出し時に--config <path-to-file>
を使用して設定されたファイルMAPI_CONFIG_FILE
環境変数で設定されたファイルmapi run
が呼び出された作業ディレクトリにあるファイル- プロジェクトのルート (
.git
フォルダーがある場合、同じレベル) にあるファイル
抑制された問題の参照¶
mapi
は実行時に抑制された問題もアップロードしますが、デフォルトではそれらの問題は表示されません。たとえば CLI から抑制された問題を表示するには、追加のフラグ --include-suppressed
を指定する必要があります。
▶ mapi issue list <job-id>> --include-suppressed
ID RULE_ID SUMMARY METHOD PATH SUPPRESSED SUPPRESSED_REASON
35717 internal-server-error GET pet/findByTags true Ignore all GETs
35716 internal-server-error GET pet/{petId} true Ignore all GETs
35715 internal-server-error POST user false
35714 internal-server-error POST pet false