{"id":24527,"date":"2023-10-05T05:00:00","date_gmt":"2023-10-05T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=24527&#038;category=hard-development"},"modified":"2023-10-05T08:50:44","modified_gmt":"2023-10-05T06:50:44","slug":"performance-under-control-with-k6-metrics-quality-thresholds-tagging","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/en\/performance-under-control-with-k6-metrics-quality-thresholds-tagging\/","title":{"rendered":"Performance under control with k6 \u2013 metrics, quality thresholds, tagging"},"content":{"rendered":"\n<p>The development of applications in recent years is undeniable. Applications have become more advanced and complex, offering users more features and interactions. However, the increasing complexity of applications brings new challenges that require innovative solutions, such as Continuous Integration\/Continuous Deployment (CI\/CD).<\/p>\n\n\n\n<p>To implement them, it is necessary to use tools tailored to our times. One such tool is k6, which introduces capabilities not present in other performance testing tools.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Testy wydajno\u015bciowe z k6: Metryki, progi jako\u015bci i tagowanie | cz\u0119\u015b\u0107 3\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/I-XRUTUHu58?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Metrics<\/strong><\/h2>\n\n\n\n<p>In k6, metrics are numerical values or statistics that help analyze and monitor the performance of applications and the behavior of test scenarios. K6 offers two types of metrics \u2013 built-in metrics and user-defined metrics.<\/p>\n\n\n\n<p>All metrics have one of the four available types:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Counters \u2013 summing up data values (e.g., the number of detected errors),<\/li>\n\n\n\n<li>Gauges \u2013 minimum, maximum, and latest values (e.g., the number of users used in the test),<\/li>\n\n\n\n<li>Rates \u2013 frequency of non-zero values (e.g., the number of successful assertions),<\/li>\n\n\n\n<li>Trends \u2013 statistics for multiple values, such as average times, percentiles, medians, or average response times (e.g., server response times).<\/li>\n<\/ul>\n\n\n\n<p>These metrics are useful not only for summaries but also for visualization using external tools like Grafana.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01.png\"><img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01-1024x572.png\" alt=\"Visualization of metrics\" class=\"wp-image-24496\" width=\"840\" height=\"469\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01-1024x572.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01-300x168.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01-768x429.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01-1536x859.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-01-2048x1145.png 2048w\" sizes=\"(max-width: 840px) 100vw, 840px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 1 Visualization of metrics<\/figcaption><\/figure>\n\n\n\n<p>To define custom metrics, you need to create an instance of the appropriate class and then add sample values to it.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"741\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-02-1024x741.png\" alt=\"Defining custom metrics\" class=\"wp-image-24499\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-02-1024x741.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-02-300x217.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-02-768x556.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-02.png 1290w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Fig. 2 Defining costom metrics<\/figcaption><\/figure>\n\n\n\n<p>During the test execution, we can operate on metrics or send them to databases such as InfluxDB in real time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tagging<\/strong><\/h2>\n\n\n\n<p>K6 has a tagging feature that allows assigning labels or categories to specific elements of the test scenario. Tagging helps categorize individual test elements, making it easier to filter results. Tags are a powerful and flexible mechanism that automatically adds metrics to the relevant elements. Let&#8217;s take a simple example of an HTTP request to illustrate this mechanism.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-03.png\"><img decoding=\"async\" width=\"978\" height=\"1024\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-03-978x1024.png\" alt=\"Defining tags\" class=\"wp-image-24502\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-03-978x1024.png 978w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-03-286x300.png 286w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-03-768x804.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-03.png 1014w\" sizes=\"(max-width: 978px) 100vw, 978px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 3 Defining tags<\/figcaption><\/figure>\n\n\n\n<p>In the above example, we defined a tag named name with the value GET \/ for the homepage request. As a result, a Trend type metric will be automatically created, storing data related to server response times, minimum and maximum values, median, and percentiles.<\/p>\n\n\n\n<p>Based on tags, we can easily filter the collected data and perform advanced operations on it.<\/p>\n\n\n\n<p>Not all tagged data is automatically visible in the test summary. In the open-source version of k6, the only way to display them is by defining appropriate quality gates.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What are Quality Gates?<\/strong><\/h2>\n\n\n\n<p>Quality Gates are checkpoints or criteria that must be met by software during the delivery process to allow its continuation to the next phase. They are used in Continuous Delivery and Continuous Deployment as an automated quality control mechanism in the software development lifecycle.<\/p>\n\n\n\n<p>During the software delivery process, various stages such as build, testing, deployment, and delivery need to be monitored, and the software&#8217;s quality must be constantly checked. Quality Gates are a set of predefined criteria that determine whether a given stage or version of the software is ready to move to the next stage or environment. If any of the conditions are not met, the process can be stopped, and the issue must be fixed before attempting to continue.<\/p>\n\n\n\n<p>In the context of performance testing, quality gates will be used to establish the acceptable values of metrics. These may include server response times, the number of detected errors in the application, or the amount of transmitted data. As we discussed earlier, some of the tags are visible in the test summary.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04.png\"><img decoding=\"async\" width=\"1024\" height=\"786\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04-1024x786.png\" alt=\"Determining the values of metrics\n\" class=\"wp-image-24505\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04-1024x786.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04-300x230.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04-768x590.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04-1536x1179.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-04.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 4 Determining the values of metrics<\/figcaption><\/figure>\n\n\n\n<p>These metrics are a general way of assessing the application&#8217;s performance. In k6, quality gates are defined using the options object. Let&#8217;s create a simple scenario based on which we can visualize the quality gates.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-05.png\"><img decoding=\"async\" width=\"941\" height=\"1024\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-05-941x1024.png\" alt=\"The scenario based on vizualization the Quality Gates\" class=\"wp-image-24508\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-05-941x1024.png 941w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-05-276x300.png 276w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-05-768x836.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-05.png 1014w\" sizes=\"(max-width: 941px) 100vw, 941px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 5 The scenario based on vizualization the Quality Gates<\/figcaption><\/figure>\n\n\n\n<p>In the above example, we assumed that 95% of response times for all requests should be below 200 ms. If the response time exceeds this limit, the test will be considered unsuccessful. The syntax for quality gates is as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-06.png\"><img decoding=\"async\" width=\"980\" height=\"422\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-06.png\" alt=\"the syntax for quality gates\" class=\"wp-image-24511\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-06.png 980w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-06-300x129.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-06-768x331.png 768w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 6 The syntax for Quality Gates<\/figcaption><\/figure>\n\n\n\n<p>As mentioned earlier, metrics have different types, which means that the aggregation method will be different for each type. Below is a list of available metric types along with possible aggregations:<\/p>\n\n\n\n<figure class=\"wp-block-table caption-align-center\"><table><thead><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Metric<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Aggregation Method<\/strong><\/td><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">Counter<\/td><td class=\"has-text-align-center\" data-align=\"center\">count, rate<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Gauge<\/td><td class=\"has-text-align-center\" data-align=\"center\">value<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Rate<\/td><td class=\"has-text-align-center\" data-align=\"center\">rate<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Trend<\/td><td class=\"has-text-align-center\" data-align=\"center\">avg, min, max, med i p(N), gdzie N jest przedzia\u0142em z zakresu od 0.0 do 100, na przyk\u0142ad p(43.12). Dane te s\u0105 w milisekundach<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tab. 1 The list of available metric types<\/figcaption><\/figure>\n\n\n\n<p>Additionally, one metric can have several different thresholds.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-07.png\"><img decoding=\"async\" width=\"1024\" height=\"462\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-07-1024x462.png\" alt=\"Metric threshold\" class=\"wp-image-24516\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-07-1024x462.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-07-300x135.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-07-768x346.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-07.png 1410w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 7 Metric thresholds<\/figcaption><\/figure>\n\n\n\n<p>Additionally, k6 offers the ability to stop the test&#8217;s execution if a metric is deemed unacceptable.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"980\" height=\"1018\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-08.png\" alt=\"Stopping the test's execution\" class=\"wp-image-24530\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-08.png 980w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-08-289x300.png 289w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-08-768x798.png 768w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/><figcaption class=\"wp-element-caption\">Fig. 8 Stopping the test&#8217;s execution<\/figcaption><\/figure>\n\n\n\n<p>Let&#8217;s go back to tagging for a moment. As mentioned earlier, tags are not visible in the basic summary. Let&#8217;s now try to create a quality threshold for HTTP request times marked with the tag name and the value GET \/.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"948\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-09-1024x948.png\" alt=\"The tag name and the value GET \/\" class=\"wp-image-24518\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-09-1024x948.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-09-300x278.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-09-768x711.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-09.png 1238w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Fig. 9 The tag name and the value GET \/<\/figcaption><\/figure>\n\n\n\n<p>This way, after running the test, we will be able to see that our tagged request has been included in the summary.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10.png\"><img decoding=\"async\" width=\"1024\" height=\"807\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10-1024x807.png\" alt=\"the summary\" class=\"wp-image-24520\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10-1024x807.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10-300x236.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10-768x605.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10-1536x1211.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/p3-attachment-10.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 10 The summary<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h2>\n\n\n\n<p>In today&#8217;s third part of the series, we discussed different types of metrics and tagging in k6. Additionally, we learned what quality gates are and how to apply them in tests. In our next post, we will focus on executor types and scenario models.<\/p>\n\n\n\n<p>If you haven&#8217;t had a chance to read the articles in the series yet, you can find them here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sii.pl\/blog\/en\/performance-under-control-with-k6-introduction\/?category=testing&amp;tag=k6-en,pros-and-cons,tools,tosca-en\" target=\"_blank\" aria-label=\"Performance under control with k6 \u2013 introduction (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Performance under control with k6 \u2013 introduction<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/en\/performance-under-control-with-k6-recording-parametrization-and-running-the-first-test-scenario\/?category=testing&amp;tag=k6-en,przeglad-narzedzi-en,scenariusz-testowy-en,test-scenario,tools,tosca-en\" target=\"_blank\" aria-label=\"Performance under control with k6 \u2013 recording, parametrization, and running the first test scenario (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Performance under control with k6 \u2013 recording, parametrization, and running the first test scenario<\/a><\/li>\n<\/ul>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;24527&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( vote: 1)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Performance under control with k6 \u2013 metrics, quality thresholds, tagging&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( vote: 1)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>The development of applications in recent years is undeniable. Applications have become more advanced and complex, offering users more features &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/en\/performance-under-control-with-k6-metrics-quality-thresholds-tagging\/\">Continued<\/a><\/p>\n","protected":false},"author":517,"featured_media":24524,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1321],"tags":[1790,1791,1639,1590],"class_list":["post-24527","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testing","tag-k6-en","tag-tosca-en","tag-przeglad-narzedzi-en","tag-tools"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/09\/Wydajnosc-pod-kontrola-\u2013-co-sklania-mnie-do-wyboru-k6-1.jpg","category_names":["Testing"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/24527"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/users\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/comments?post=24527"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/24527\/revisions"}],"predecessor-version":[{"id":24787,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/posts\/24527\/revisions\/24787"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media\/24524"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/media?parent=24527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/categories?post=24527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/en\/wp-json\/wp\/v2\/tags?post=24527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}