Loadbudget

TEST_RESULTS

How does a person read the stability and the timing of the tests of an app?

Binds: code

xcloud.stability and xcloud.timing read the result bundles that the caller saves after each Deliver build. Each bundle answers one row for each test, destination and build. tools/apple-app-delivery/docs/README.md, section “Each application keeps its own cache of result bundles”, states where the rows come from.

A report reads the newest build alone. xcloud.prune deletes the artifacts of each build older than the newest one. So a report reads no older build.

Stability puts a warning rate beside the failure rate

xcloud.stability ranks the rows by failure rate. A test can also carry a warning and still pass. xcresulttool reports such a warning as a Runtime Warning child of the node it happened on. It changes nothing about the Passed result of that node. So the ranking puts a warning rate beside the failure rate. A test that always recovers on a retry then stays visible.

The two rates count different attempts. A failure rate reads every attempt, because every build can fail. A warning rate reads the attempts of a build that carries the code that records the warning. first_warning_build in Settings names the first such build. The wruns column states how many attempts the warning rate rests on.

xcloud.stability reads no month, because a failure rate carries no month.

Timing compares a month with the month before it

xcloud.timing reports a median and a slowest run for each test on each destination. It also reports one number for a whole run. That number is the sum of the test durations of one build. The report takes the median of that sum across the builds of a month, per destination. The median stops a month with more builds from reading as a slower month. The comparison of a month with the month before it says whether the suite grows.

An artifact carries the month. A build number carries none. GitHub answers created_at on each artifact. xcloud.timing groups by the calendar month of that field.

A duration in the xcloud.timing report covers the test, and not the time before it. xcresulttool answers durationInSeconds on each test. That field counts the app launch. It counts the time after Tear Down starts too. It leaves out the time before the test starts. So the total reads lower than a stopwatch on the same suite, and the two never match.

Every number in the xcloud.timing report comes from Xcode Cloud. A run on a Mac at a desk saves no artifact, and the report reads nothing of it. So the report says nothing about a laptop.