your overview of a simple case is right but you’ve to consider that in real scenarios you probably will get more concurrency making the order not so linear. For example, potentially,
6 could start before
5 have been completed but this really depends on the implementation. For this reason, if you need accurate metrics for your backend components then you need to trace them.
http_req_sending = The time elapsed between the first byte has been sent from k6 and when the latest byte has been declared sent from the Go net library.
http_req_receiving = The time elapsed between the first byte received and when the entire request has been declared completed.
http_req_waiting = The time elapsed between request sending is completed and when the first byte of the response has been received.