{"id":840,"date":"2014-04-10T09:33:13","date_gmt":"2014-04-10T16:33:13","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=840"},"modified":"2014-04-14T10:06:14","modified_gmt":"2014-04-14T17:06:14","slug":"users-usage-usability-and-data","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/users-usage-usability-and-data\/","title":{"rendered":"Users, Usage, Usability, and Data"},"content":{"rendered":"<p>The day job (and a new podcast) have been getting the bulk of my time lately, but I\u2019m way overdue to talk about data and quadrants.<\/p>\n<p>If you need a bit of context or refresher on my stance, <a title=\"http:\/\/angryweasel.com\/blog\/riffing-on-the-quadrants\/\" href=\"http:\/\/angryweasel.com\/blog\/riffing-on-the-quadrants\/\">this post<\/a> talks about my take on Brian Marick\u2019s quadrants (used famously by Gregory and Crispin in their wonderful Agile Testing book); and I assert that the the left side of the quadrant is well suited for programmer ownership, and that the right side is suited for quality \/ test team ownership. I also assert that the right side knowledge can be obtained through data, and that one <em>could <\/em>gather what they need in production \u2013 from actual customer usage.<\/p>\n<p>And that\u2019s where I\u2019ll try to pick up.<\/p>\n<p><a href=\"http:\/\/angryweasel.com\/blog\/wp-content\/uploads\/2014\/04\/image.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: right; padding-top: 0px; padding-left: 0px; margin: 0px 0px 0px 8px; display: inline; padding-right: 0px; border: 0px;\" title=\"image\" alt=\"image\" src=\"http:\/\/angryweasel.com\/blog\/wp-content\/uploads\/2014\/04\/image_thumb.png\" width=\"240\" height=\"395\" align=\"right\" border=\"0\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.amazon.com\/Agile-Testing-Practical-Guide-Testers\/dp\/0321534468\">Agile Testing<\/a> labels Q3 as \u201cManual\u201d, and Q4 as \u201cTools\u201d. This is (or can be) <em>generally<\/em> true, but I claim that it doesn\u2019t <em>have<\/em> to be true. Yes, there are some synthetic tests you want to run locally to ensure performance, reliability, and other Q4 activities, but you can get more actionable data by examining data from customer usage. Your top-notch performance suite doesn\u2019t matter if your biggest slowdown occurs on a combination of graphics card and bus speed that you don\u2019t have in your test lab. Customers use software in ways we can\u2019t imagine \u2013 and on a variety of configurations that are practically impossible to duplicate in labs. Similarly, stress suites are great \u2013 but knowing what crashes your customers are seeing, as well as the error paths they are hitting is far more valuable. Most other \u201cilities\u201d can be detected from customer usage as well.<\/p>\n<p>Evaluating Q3 from data is \u2026interesting. The list of items in the graphic above is from Agile Testing, but note that Q3 is the quadrant labeled (using my labels) Customer Facing \/ Quality Product. You do Alpha and Beta testing in order to get customer feedback (which *is* data, of course), but beyond there, I need to make a bit larger leaps.<\/p>\n<p>To avoid any immediate arguments, I\u2019m <em><span style=\"text-decoration: underline;\">not<\/span><\/em> saying that exploratory testing can be replaced with data, or that exploratory testing is no longer needed. What I <em>will<\/em>\u00a0 say is that <strong><em>not even your very best exploratory tester can represent how a customer uses a product better than the actual customer<\/em><\/strong>.<\/p>\n<p>So let\u2019s move on to scenarios and, to some extent, usability testing. Let\u2019s say that one of the features \/ scenarios of your product is \u201c<strong>Users can use our client app to create a blog post, and post it to their blog<\/strong>\u201d. The \u201ctraditional\u201d way to validate this scenario is to either make a bunch of test cases (either written down in advance(yuck) or discovered through exploration) that create blog entries with different formatting and options, and then make sure it can post to whatever blog services are supported. We would also dissect the crap out of the scenario and ask a lot of questions about every word until all ambiguity is removed. There\u2019s nothing inherently wrong with this approach, but I think we can do better.<\/p>\n<p>Instead of the above, tweak your \u201ctesting\u201d approach. Instead of asking, \u201cDoes this work?\u201d, or \u201cWhat would happen if\u2026?\u201d, ask \u201c<strong>How will I know if the scenario was completed successfully?<\/strong>\u201d For example, if you knew:<\/p>\n<ul>\n<li>How many people started creating a blog post in our client app?<\/li>\n<li>Of the above set, how many post successfully to their blog<\/li>\n<li>What blog providers do they post to<\/li>\n<li>What error paths are being hit?<\/li>\n<li>How long does posting to their blog take?<\/li>\n<li>What sort of internet connection do they have?<\/li>\n<li>How long does it take for the app to load?<\/li>\n<li>After they post, do they edit the blog immediately (is it WYSIWYG)?<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>With the above, you can begin to infer a lot about how people use your application and discover outliers, answer questions; and perhaps, help you discover <em>new<\/em> questions you want to have answered. And to get an idea of whether they may have <em>liked<\/em> the experience, perhaps you could track things like:<\/p>\n<ul>\n<li>How often do people post to their blog from our client app?<\/li>\n<li>When they encounter an error path, what do they do? Try again? Exit? Uninstall?<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>Of course, you can get subjective data as well via <span style=\"text-decoration: underline;\">short<\/span> surveys. These tend to annoy people, but used strategically and sparsely, can help you gauge the <em>true<\/em> customer experience. I know of at least one example at Microsoft where customers were asked to provide a star rating and feedback after using an application \u2013 over time, the team could use available data to accurately <em>predict what star rating customers would give their experience. <\/em>I believe that\u2019s a model that can be reproduced frequently.<\/p>\n<p>Does a data-prominent strategy work everywhere? Of course not. Does it replace the need for testing? Don\u2019t even ask \u2013 of course not. Before taking too much of the above to heart, answer a few questions about your product. If your product is a web site or web service or anything else you can update (or roll back) as frequently as you want, of course you want to rely on data as much as possible for Q3 and Q4. But, even for \u201cthick\u201d apps that run on a device (computer, phone, toaster) that\u2019s always connected, you should also consider how you can use data to answer questions typically asked by test cases.<\/p>\n<p>But look \u2013 don\u2019t go crazy. There are a number of products, where long tests (what I call Q3 and Q4 tests) can be replaced entirely by data. But don\u2019t blindly decide that you no longer need people to write stress suites or do exploratory testing. If you can\u2019t answer your important questions from analyzing data, by all means, use people with brains and skills to help you out. And even if\u00a0 you <em>think <\/em>you can get all your answers with data, use <em>people<\/em> as a safety net while you make the transition. It\u2019s quite possible (probable?) to gather a bunch of data that isn\u2019t actually the data you need, and then mis-analyze it and ship crap people don\u2019t want \u2013 that\u2019s not a trap you want to fall into.<\/p>\n<p>Data is a powerful ally. How many times, as a tester, have you found an issue and had to convince someone it was something that needed to be fixed or customers would rebel? With data, rather than rely on your own interpretation of what customers want, you can make decisions based on what customers are actually doing. For me, that\u2019s powerful, and a strong statement towards the future of software quality.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The day job (and a new podcast) have been getting the bulk of my time lately, but I\u2019m way overdue to talk about data and quadrants. If you need a bit of context or refresher on my stance, this post talks about my take on Brian Marick\u2019s quadrants (used famously by Gregory and Crispin in&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-840","post","type-post","status-publish","format-standard","hentry","category-allposts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/comments?post=840"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/840\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}