medic / care-teams

For Product Management
0 stars 0 forks source link

contact_detail apdex: Establish baseline #73

Closed michaelkohn closed 5 months ago

michaelkohn commented 6 months ago

Given the scenario defined in #72, run tests and establish baseline score(s)

latin-panda commented 6 months ago

This work: Only last 50 reports for contact are provided to contact-summary calculation affects the performance of this page, we need to consider it for the baseline.

latin-panda commented 5 months ago

Apdex Score = ((Satisfied Count) + (Tolerating Count / 2)) / Total Count

Kenya - Phone Tecno 6 - Manual test: Apdex Score: 0.48 (only households) ```json "contact_detail:e_household:load": { "sum": 339242, "min": 1741, "max": 214910, "count": 27, "sumsqr": 47180743606 }, "contact_detail:e_household:load:apdex:frustrated": { "sum": 239151, "min": 24241, "max": 214910, "count": 2, "sumsqr": 46773934181 }, "contact_detail:e_household:load:apdex:satisfied": { "sum": 1741, "min": 1741, "max": 1741, "count": 1, "sumsqr": 3031081 }, "contact_detail:e_household:load:apdex:tolerable": { "sum": 98350, "min": 3801, "max": 4468, "count": 24, "sumsqr": 403778344 }, "contact_detail:e_household:load:contact_data": { "sum": 5492, "min": 141, "max": 547, "count": 27, "sumsqr": 1250328 }, "contact_detail:e_household:load:load_contact_summary": { "sum": 12014, "min": 89, "max": 6821, "count": 27, "sumsqr": 47581902 }, "contact_detail:e_household:load:load_descendants": { "sum": 63161, "min": 198, "max": 36591, "count": 27, "sumsqr": 1556031009 }, "contact_detail:e_household:load:load_reports": { "sum": 214584, "min": 539, "max": 169822, "count": 27, "sumsqr": 28951291952 }, "contact_detail:e_household:load:load_targets": { "sum": 13203, "min": 423, "max": 726, "count": 27, "sumsqr": 6534979 }, "contact_detail:e_household:load:load_tasks": { "sum": 30517, "min": 299, "max": 1428, "count": 27, "sumsqr": 35787127 }, ```
Mali - Safari Neon - Automated test: Apdex Score: 0.85 (all contacts) ``` select user_name , metric, min, max, count FROM useview_telemetry_metrics WHERE (metric LIKE 'contact_detail:%:apdex%' or metric like 'contact_detail:%:load') AND period_start = '2024-04-17' ``` Screenshot 2024-04-26 at 6 53 37 PM
Nepal - Safari Neon - Manual test: Apdex Score: 0.97 (all contacts) ```json "contact_detail:c70_fchv_area:load": { "sum": 190598, "min": 473, "max": 169251, "count": 33, "sumsqr": 28661583558 }, "contact_detail:c70_fchv_area:load:apdex:frustrated": { "sum": 169251, "min": 169251, "max": 169251, "count": 1, "sumsqr": 28645901001 }, "contact_detail:c70_fchv_area:load:apdex:satisfied": { "sum": 21347, "min": 473, "max": 1726, "count": 32, "sumsqr": 15682557 }, "contact_detail:c70_fchv_area:load:contact_data": { "sum": 88426, "min": 95, "max": 83513, "count": 33, "sumsqr": 6975278486 }, "contact_detail:c70_fchv_area:load:load_contact_summary": { "sum": 664, "min": 9, "max": 108, "count": 33, "sumsqr": 22082 }, "contact_detail:c70_fchv_area:load:load_descendants": { "sum": 80845, "min": 153, "max": 72860, "count": 33, "sumsqr": 5310898841 }, "contact_detail:c70_fchv_area:load:load_reports": { "sum": 18767, "min": 101, "max": 12670, "count": 33, "sumsqr": 161808153 }, "contact_detail:c70_fchv_area:load:load_targets": { "sum": 1519, "min": 25, "max": 105, "count": 33, "sumsqr": 79151 }, "contact_detail:c70_fchv_area:load:load_tasks": { "sum": 94, "min": 1, "max": 7, "count": 33, "sumsqr": 386 }, "contact_detail:c72_fchv_area_contact:load": { "sum": 1880, "min": 473, "max": 739, "count": 3, "sumsqr": 1216074 }, "contact_detail:c72_fchv_area_contact:load:apdex:satisfied": { "sum": 1880, "min": 473, "max": 739, "count": 3, "sumsqr": 1216074 }, "contact_detail:c72_fchv_area_contact:load:contact_data": { "sum": 365, "min": 111, "max": 142, "count": 3, "sumsqr": 45029 }, "contact_detail:c72_fchv_area_contact:load:load_contact_summary": { "sum": 30, "min": 9, "max": 11, "count": 3, "sumsqr": 302 }, "contact_detail:c72_fchv_area_contact:load:load_descendants": { "sum": 596, "min": 122, "max": 260, "count": 3, "sumsqr": 128280 }, "contact_detail:c72_fchv_area_contact:load:load_reports": { "sum": 241, "min": 68, "max": 92, "count": 3, "sumsqr": 19649 }, "contact_detail:c72_fchv_area_contact:load:load_targets": { "sum": 324, "min": 53, "max": 148, "count": 3, "sumsqr": 39842 }, "contact_detail:c72_fchv_area_contact:load:load_tasks": { "sum": 312, "min": 101, "max": 106, "count": 3, "sumsqr": 32462 }, "contact_detail:c80_household:load": { "sum": 95836, "min": 1482, "max": 32914, "count": 31, "sumsqr": 1247097270 }, "contact_detail:c80_household:load:apdex:frustrated": { "sum": 32914, "min": 32914, "max": 32914, "count": 1, "sumsqr": 1083331396 }, "contact_detail:c80_household:load:apdex:satisfied": { "sum": 55551, "min": 1482, "max": 2945, "count": 29, "sumsqr": 109434233 }, "contact_detail:c80_household:load:apdex:tolerable": { "sum": 7371, "min": 7371, "max": 7371, "count": 1, "sumsqr": 54331641 }, "contact_detail:c80_household:load:contact_data": { "sum": 4916, "min": 87, "max": 874, "count": 31, "sumsqr": 1331648 }, "contact_detail:c80_household:load:load_contact_summary": { "sum": 443, "min": 7, "max": 98, "count": 19, "sumsqr": 17563 }, "contact_detail:c80_household:load:load_descendants": { "sum": 11261, "min": 177, "max": 2682, "count": 31, "sumsqr": 9798837 }, "contact_detail:c80_household:load:load_reports": { "sum": 55764, "min": 490, "max": 30917, "count": 31, "sumsqr": 981719078 }, "contact_detail:c80_household:load:load_targets": { "sum": 17591, "min": 382, "max": 990, "count": 29, "sumsqr": 11528339 }, "contact_detail:c80_household:load:load_tasks": { "sum": 5632, "min": 200, "max": 663, "count": 19, "sumsqr": 1894836 }, "contact_detail:c82_person:load": { "sum": 37470, "min": 903, "max": 3229, "count": 29, "sumsqr": 57055062 }, "contact_detail:c82_person:load:apdex:satisfied": { "sum": 34241, "min": 903, "max": 2974, "count": 28, "sumsqr": 46628621 }, "contact_detail:c82_person:load:apdex:tolerable": { "sum": 3229, "min": 3229, "max": 3229, "count": 1, "sumsqr": 10426441 }, "contact_detail:c82_person:load:contact_data": { "sum": 9924, "min": 198, "max": 910, "count": 29, "sumsqr": 4179760 }, "contact_detail:c82_person:load:load_contact_summary": { "sum": 709, "min": 12, "max": 85, "count": 28, "sumsqr": 25455 }, "contact_detail:c82_person:load:load_descendants": { "sum": 6541, "min": 133, "max": 711, "count": 29, "sumsqr": 1798433 }, "contact_detail:c82_person:load:load_reports": { "sum": 9566, "min": 221, "max": 1380, "count": 29, "sumsqr": 4404156 }, "contact_detail:c82_person:load:load_targets": { "sum": 3435, "min": 64, "max": 405, "count": 29, "sumsqr": 528927 }, "contact_detail:c82_person:load:load_tasks": { "sum": 7046, "min": 167, "max": 1380, "count": 28, "sumsqr": 3158378 }, ```
latin-panda commented 5 months ago

@michaelkohn The contact details baseline is 0.88 (Apdex Score) when using real low-end devices.

Screenshot 2024-04-26 at 7 21 30 PM
michaelkohn commented 5 months ago

Thanks @latin-panda . The goal of the baseline was to have a repeatable experiment (ie our suite of tests) and compare before and after we make changes. If the experiments we run before and after are not the same, our results will not have the same level of credibility. That was the benefit of having the automated tests.... the experiments are scripted and the same scenarios are run every time. I'm not opposed to using some manual tests for this, but only if we can recreate them exactly when we are testing the "after" (ie with the changes).

Also, I think we should be baselining/measuring/evaluating our goal relative to one project's config only, we don't need to add them up across multiple projects. We might end up choosing more than one config to experiment on, but I still think we should report on them individually. Part of this is that it's just more clear to report on it this way, but also... if the app is slow for a Kenyan CHW, it doesn't matter how fast it is for a Ugandan CHW, that Kenyan user still has a poor experience.

Also, I'm also OK with being even more narrow in our measurement. For example.. technically contact_detail is all the same "page", but if we find that it's always extra slow when loading a certain contact type (like a person, for example), i'd suggest we work on and evaluate that scenario individually. Again... if that one contact_type is bad but all other contact_types are fast, the apdex score for the overall page might be high, but it's really annoying every time they view a person contact so I'd want to work on making it faster.