あなたのK 6テストでテスライルを導入すること


あなたのK 6テストでテスライルを導入すること


より賢く働くか、怠惰であることは、我々がものを自動化する理由です.私は、あなたにK 6とのTestrail統合を最適化する私の試みを示すようにしましょう.

ユースケース


私の日々の仕事で、私はazureパイプラインを使用しています.連続積分の過程を説明します.いくつかの部分はプロジェクト特有であるかもしれません、しかし、あなたが異なるテクノロジーを使用しているならば、一般的な考えとアプローチはあまり変わりません.

テッセル


私たちが始める前にあなたがしなければならない前提条件のカップルがあります.
  • プロジェクトに行ってテストスーツを追加してください.

  • その後、テストでスーツを食べたい.そのスーツにいくつかのテストを追加します.誰もがTestXが知っているとしても、誰もがそれを使っていることを覚えておいてください.

  • テストを実行し、テスト結果を更新できるユーザーが必要です.あなたの資格情報を使用することができますが、私はユーザーを使用して(完全な会社、プロジェクトやチームの自動テスト中に使用している)をお勧めします.
  • ユーザがいる場合はAPIトークンを作成する必要があります(必須ではありませんが、代わりにパスワードを使用することもできますが、パスワードは変更される可能性があります).右上隅にユーザーをクリックして“マイ設定”に移動します.そこからトークンを作成します.

  • テスケイルAPI


    ドキュメント全体が見つかります.here , しかし、我々だけに焦点を当てるRuns and Results .

    テスト実行を作成する

  • プロジェクトID(69)は、プロジェクトを表示するときにURLで見つけることができます.テスライルインデックス.PHP ?プロジェクト/概要/69
  • そして、テストスーツID(我々のケースの2137)我々は、ちょうどつくられました:会社.テスライルインデックス.PHP ?スイートビュー2137
  • 演奏


    私はユーザがトークンを持っているのを好む.それで、ヘッダーの「nice」に見えます.ユーザをエンコードしましょうhere . 今カールを送ることができます
    curl -X POST \
      'https://company.testrail.io/index.php?/api/v2/add_run/69' \
      -H 'Authorization: Basic myTokenHere' \
      -H 'Content-Type: application/json' \
      -d '{
        "suite_id": 2137,
        "name": "Performance Test Run",
        "include_all": true
    }'
    
    あなたは、ちょうど新しいテストを作成しました!上記があなたのために働いているならば、我々は次のステップに進むことができます.何が応答だったかを心に留めておいてください.

    フレームワークでのテスト実行の作成


    テストスーツからシナリオを実行するたびにテスト実行を作りたい.私たちは、一度だけそれを作成して、それから、我々のK 6テストがされるとき、そのテスト実行でテストの結果を変えたいだけです.
    私はAzureパイプラインを使用しているので、私のK 6ジョブには次のような手順があります.
    - task: PowerShell@2
      name: CreateTestRun
      inputs:
        targetType: 'filePath'
        filePath: $(System.DefaultWorkingDirectory)/scripts/CreateTestRun.ps1
        arguments: -token $(trtoken)
    
    およびcreateTestunファイルの内容.PS 1 :
    param ($token)
    
    $Uri = "https://company.testrail.io/index.php?/api/v2/add_run/69"
    $Body = @{
            suite_id = 2137
            name = "Performance Test Run: $(Get-Date -Format "dd/MM/yyyy, HH:mm")"
            include_all = true
    } | ConvertTo-Json
    $Headers = @{
            "Authorization" = "Basic $token"
            "Content-Type" = "application/json"
    }
    $Result = Invoke-RestMethod -Uri $Uri -Method 'Post' -Headers $Headers -Body $Body
    $runId = $Result.id
    
    Write-Host "##vso[task.setvariable variable=runId;isOutput=true]$runId"
    
    スクリプトは、作成されたテスト実行のIDをつかんで保存します.
    -e RUNID=$(CreateTestRun.runId)
    -e TRTOKEN=$(trtoken)
    

    K 6における試験結果の更新


    テストを実行した後、IDを持っているので、K 6のテストを開始できます.我々はシナリオのいずれかを終了するたびに、我々はその実行で結果を更新する必要があります.
    それが我々のすべてを通過するならば、K 6シナリオは通過されますthresholds . それで、我々はそれのまわりで働かなければなりません.テストの後、レポートが作成されます.私のシナリオのそれぞれでhandleSummary 機能
    import tools from '../tools/tools.js'
    import { textSummary } from 'https://jslib.k6.io/k6-summary/0.0.1/index.js';
    
    export function handleSummary(data) {
        const success = tools.CheckThresholds(data, 'iteration_duration')
        tools.UpdateTestrail(success, 142927)
        return {
            'logs/DataGridTest2.json': JSON.stringify(data),
            'stdout': textSummary(data, { indent: ' ', enableColors: true}),
        }
    }
    
    今、私が説明しなければならないことがいくつかあります.私たちは私のフレームワークに深く行きません.
    tools.CheckThresholds()
    
    は、私のしきい値の状態をチェックする関数です.それは私が作成し、ツールに格納されているカスタム機能です.jsファイル
    function CheckThresholds(data, metric) {
        const res = data['metrics'][metric]['thresholds'] ? data['metrics'][metric]['thresholds'] : true
        return Object.values(res).every(obj => obj['ok'])
    }
    
    これは、選択したメトリック、いずれかの組み込みまたはカスタムをチェックします.
    ので、テストが合格したか失敗したかを知っています.それを更新する時間!見てみましょう
    tools.UpdateTestrail()
    
    そして、142927の数が意味するmisteryを展開してください.
    function UpdateTestrail(success, caseId) {
        const host = 'https://company.testrail.io'
        let status = 3 //untested
    
        if (success) {
            status = 1
        } else {
            status = 5
        }
    
        let body = {
            "results": [
                {
                    "case_id": caseId,
                    "status_id": status,
                }
            ]
        };
        let params = { 
            headers: {
                Authorization: `Basic ${__ENV.TRTOKEN}`,
                'content-type': 'application/json'
            }
        };
    
        http.post(`${host}/index.php?/api/v2/add_results_for_cases/${__ENV.RUNID}`,JSON.stringify(body),params);
    }
    
    オリジナルテストのテストスーツに戻りましょう.
    番号142927は、単に我々のテストの1つです!

    何が起こるか


    テスト実行を作成し、そのidをつかんだ.
    それから、私たちは、そのIDをK 6に渡し、シナリオを実行します.
    我々のシナリオが失敗したときに知っているので、我々はしきい値を設定している.
    テストが完了した後、我々はTestulilで結果を更新しました.
    今、我々は次のシナリオに進むことができます、そこで、唯一のものは異なるです.そして、私たちの更新されたテスト実行は、以下のようになります.