{"id":53,"date":"2016-04-21T10:32:19","date_gmt":"2016-04-21T14:32:19","guid":{"rendered":"https:\/\/blog.sixages.com\/?p=53"},"modified":"2016-04-21T10:32:19","modified_gmt":"2016-04-21T14:32:19","slug":"testing-in-bulk","status":"publish","type":"post","link":"https:\/\/blog.sixages.com\/index.php\/2016\/04\/21\/testing-in-bulk\/","title":{"rendered":"Testing In Bulk"},"content":{"rendered":"<p>Like King of Dragon Pass, Six Ages is a large, complex game. That means that during development, there will be a lot of bugs.<\/p>\n<p><img loading=\"lazy\" class=\"size-medium wp-image-56 alignright\" src=\"https:\/\/blog.sixages.com\/wp-content\/uploads\/2016\/04\/sceneProgress-300x238.png\" alt=\"Graph of scenes written, coded, tested\" width=\"300\" height=\"238\" srcset=\"https:\/\/blog.sixages.com\/wp-content\/uploads\/2016\/04\/sceneProgress-300x238.png 300w, https:\/\/blog.sixages.com\/wp-content\/uploads\/2016\/04\/sceneProgress.png 442w\" sizes=\"(max-width: 300px) 85vw, 300px\" \/>The best way to find them is to start testing early. I like to start QA as early as possible, once\u00a0there\u2019s a runnable\u00a0game. For example, we can start the process of making sure every interactive scene works.<\/p>\n<p>We have a really good QA tester, but like KoDP, there are a lot of scenes, with a lot of branches.\u00a0One of the process improvements over KoDP is that we have a way to <a href=\"http:\/\/sixages.blogspot.com\/2015\/07\/script-testing.html\">brute force test every response<\/a> of every scene. This is only a supplement to human testing. It can make sure nothing crashes, but can\u2019t find typos or situations where the wrong person is mentioned. But it does mean we don\u2019t waste QA\u2019s time with testing something that isn\u2019t fully implemented.<\/p>\n<p>Some bugs have patterns. If one scene has a problem after the player has made a major story choice, it\u2019s likely that others will too. I usually track these in our bug database as a \u201csweep,\u201d meaning once all the scenes are coded, we will have to search the code for possible occurrences. We still report fix bugs as we go, and when this situation came up again in a scene, I decided to try out an idea: change the brute-force testing to set up the story situation, and then run the brute-force test. Bingo! Ten failures. Or, ten places that a person doesn\u2019t have to either read code and see what\u2019s going on (in a code sweep), or write up a bug report (manual testing).<\/p>\n<p>Last night I got a bug report about a scene failing when there was no chief. So I decided to do another brute-force test. This found a lot of problems in scenes that had not yet been tested.<\/p>\n<p>Unfortunately, the brute-force testing of every branch of every scene takes about two minutes (and getting worse, as we code more scenes). So while I probably should run each brute-force variant, for now I\u2019m relegating them to occasional situations. But I\u2019m definitely going to look for more places to do this.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Like King of Dragon Pass, Six Ages is a large, complex game. That means that during development, there will be a lot of bugs. The best way to find them is to start testing early. I like to start QA as early as possible, once\u00a0there\u2019s a runnable\u00a0game. For example, we can start the process of &hellip; <a href=\"https:\/\/blog.sixages.com\/index.php\/2016\/04\/21\/testing-in-bulk\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Testing In Bulk&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/posts\/53"}],"collection":[{"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/comments?post=53"}],"version-history":[{"count":6,"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/posts\/53\/revisions"}],"predecessor-version":[{"id":60,"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/posts\/53\/revisions\/60"}],"wp:attachment":[{"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/media?parent=53"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/categories?post=53"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.sixages.com\/index.php\/wp-json\/wp\/v2\/tags?post=53"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}