Home > Web Front-end > JS Tutorial > How to integrate kith Xray/Jira

How to integrate kith Xray/Jira

WBOY
Release: 2024-09-10 11:30:51
Original
497 people have browsed it

In this article, I shall demonstrate a simple way we can integrate k6 with XRAY/Jira.

Sometime back I was assigned a task to write a performance test for an API that was expected to handle quite a number of requests. For this reason we needed a good tool which will be faster to pickup and easier for any QA engineer to contribute.
Having used load impact in the past, I was quite familiar with K6. These are the main reasons why we chose k6 over the other performance testing tools:

  • Uses Javascript: Most of the QA/Developers in my team were familiar with javascript, therefor which made it as there was no need to learn a new language

  • Open-source: This means, no payments are required to use the tool, and the community is active

  • CI/CD: Integrating k6 with our CI/CD pipelines was straightforward

I can continue with the advantages of choosing k6, but I shall write a new post to talk about that specifically.

After completing our test framework, we wanted to have our test results on Jira. Since we were already using XRAY, we needed a solution to convert the k6 JSON report to x-ray format. I couldn't get any solution that worked with our case.

K6 handleSummary()

K6 has an essential feature that can be used to get all the metrics. These options are stdout, XML, and JSON.

For this, we only needed to create a script to take in the data object from the handleSummary function.

Below is the script to convert the data object from k6 to a simple XRAY format report:

k6-XRAY-script

How to Setup the generator Helper Script for k6 and Xray Integration

Clone the repo to your desired location:
Preferably, create a folder inside the main project.

Example:
helper, src, report

This will help you manage the imports well without issues:

Prerequisites

Before you begin, ensure you have the following installed on your machine:

  • Node.js
  • npm
  • k6

Usage

If your k6 tests are organized in groups, and each group title corresponds to a test case on Xray, you can use the generator script to create a JSON file compatible with Xray.

Example

The image below from Xray docs shows test cases with keys CALC-01 and CALC-02.

How to integrate kith Xray/Jira

In your k6 test script, you can name the group titles as CALC-01 and CALC-02. The script will search for these group names and assign the test results to the respective test cases on Xray.

group('CALC-01', function() {
  // test code
});
group('CALC-02', function() {
  // test code
});
Copy after login

Output

The script generates a JSON file compatible with Xray, saved in the same directory as the script.

Clone the repo

git clone https://github.com/skingori/k6-json-xray.git
Copy after login

How to Setup the Script

We will use the handleSummary function provided by k6 and textSummary from our generator.js script to generate the JSON file. The handleSummary function takes in a data object, which we pass to getSummary to modify it into an Xray-compatible format.

Read more about k6 HandleSummary here

Change open your execution script and add the following lines:

import { getSummary } from "./generator.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";
Copy after login

I am using the ./generator.js directly as it was in the same folder as my script. Let's assume you were using helper this should be:

import { getSummary } from "./helper/generator.js";
Copy after login

Add the end of your code add the handleSummary function:

export function handleSummary(data) {
    return {
        stdout: textSummary(data, { indent: " ", enableColors: true }),
        "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2)
    };
}
Copy after login

Our function getSummary will convert the data object to x-ray expected format and save the output to summary.json file

Why are we using textSummary?

To have a printed output on the console, we need to import textSummary from k6 JS utilities library

But this may not apply to everyone if you don't need any stdout report, you don't have to import the textSummary

Example
import http from 'k6/http';
import { sleep, group, check } from 'k6';
import { getSummary } from "./generator.js";
import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";

export const options = {
    vus: 10,
    duration: '30s',
};

export default function() {
    group('CALC-01', function() {
        const resp = http.get('http://test.k6.io');
        check(resp, {
            'status is 200': (r) => r.status === 200,
        });
        sleep(1);
    });

    group('CALC-02', function() {
        const resp = http.get('http://test.k6.io');
        check(resp, {
            'status is 200': (r) => r.status === 200,
        });
        sleep(1);
    });
};

export function handleSummary(data) {
    return {
        stdout: textSummary(data, { indent: " ", enableColors: true }),
        "summary.json": JSON.stringify(getSummary(data, "CALC-2062", "CALC"), null, 2)
    };
}
Copy after login

Note: You can eliminate stdout: textSummary(data, { indent: " ", enableColors: true }), line if you don't want to import textSummary

handleSummary works by default and it's usually called at the end of the test lifecycle.

Running the Script

To run the script, use the following command:

k6 run script.js -e TEST_PLAN_KEY="CALC-2345" -e TEST_EXEC_KEY="CALC-0009"
Copy after login

The TEST_PLAN_KEY and TEST_EXEC_KEY are used to identify the test plan and test execution on Xray.

Read more about test plan and test execution keys here

Output

The above script will produce the following report under summary.json

{
  "info": {
    "summary": "K6 Test execution - Mon Sep 09 2024 21:20:16 GMT+0300 (EAT)",
    "description": "This is k6 test with maximum iteration duration of 4.95s, 198 passed requests and 0 failures on checks",
    "user": "k6-user",
    "startDate": "2024-09-09T18:20:16.000Z",
    "finishDate": "2024-09-09T18:20:16.000Z",
    "testPlanKey": "CALC-2345"
  },
  "testExecutionKey": "CALC-0009",
  "tests": [
    {
      "testKey": "CALC-01",
      "start": "2024-09-09T18:20:16.000Z",
      "finish": "2024-09-09T18:20:16.000Z",
      "comment": "Test execution passed",
      "status": "PASSED"
    },
    {
      "testKey": "CALC-02",
      "start": "2024-09-09T18:20:16.000Z",
      "finish": "2024-09-09T18:20:16.000Z",
      "comment": "Test execution passed",
      "status": "PASSED"
    }
  ]
}
Copy after login

To get more details about k6 and X-ray kindly reach out to their documentation:
K6 Document
XRAY Document

Lihat ini juga - Cara mencipta dan mengurus kes ujian dengan Xray dan Jira artikel hebat yang ditulis oleh Sérgio Freire

Dan seperti biasa, sila hubungi saya!

LinkedIn
E-mel
Github

The above is the detailed content of How to integrate kith Xray/Jira. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template