StopTesting.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <!DOCTYPE html>
  2. <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
  3. <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
  4. <head>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Stop testing software… &mdash; baangt 1.1.1 documentation</title>
  8. <script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
  9. <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
  10. <script type="text/javascript" src="../_static/jquery.js"></script>
  11. <script type="text/javascript" src="../_static/underscore.js"></script>
  12. <script type="text/javascript" src="../_static/doctools.js"></script>
  13. <script type="text/javascript" src="../_static/language_data.js"></script>
  14. <script type="text/javascript" src="../_static/js/theme.js"></script>
  15. <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  16. <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
  17. <link rel="stylesheet" href="../_static/theme_overrides.css" type="text/css" />
  18. <link rel="index" title="Index" href="../genindex.html" />
  19. <link rel="search" title="Search" href="../search.html" />
  20. <link rel="next" title="Agile: Where does baangt fit in?" href="AgileWorkflowIntegration.html" />
  21. <link rel="prev" title="baangt In Industries" href="BaangtIndustries.html" />
  22. </head>
  23. <body class="wy-body-for-nav">
  24. <div class="wy-grid-for-nav">
  25. <nav data-toggle="wy-nav-shift" class="wy-nav-side">
  26. <div class="wy-side-scroll">
  27. <div class="wy-side-nav-search" >
  28. <a href="../index.html" class="icon icon-home"> baangt
  29. </a>
  30. <div role="search">
  31. <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
  32. <input type="text" name="q" placeholder="Search docs" />
  33. <input type="hidden" name="check_keywords" value="yes" />
  34. <input type="hidden" name="area" value="default" />
  35. </form>
  36. </div>
  37. </div>
  38. <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
  39. <p class="caption"><span class="caption-text">Contents:</span></p>
  40. <ul class="current">
  41. <li class="toctree-l1"><a class="reference internal" href="../Installation.html"> Installation</a></li>
  42. <li class="toctree-l1"><a class="reference internal" href="../OverviewUsage.html"> Overview</a></li>
  43. <li class="toctree-l1"><a class="reference internal" href="../simpleExample.html"> First Steps</a></li>
  44. <li class="toctree-l1"><a class="reference internal" href="../Structure.html"> Structure</a></li>
  45. <li class="toctree-l1"><a class="reference internal" href="../ParametersConfigFile.html"> Parameters</a></li>
  46. <li class="toctree-l1"><a class="reference internal" href="../SimpleAPI.html"> First API Test</a></li>
  47. <li class="toctree-l1"><a class="reference internal" href="../TestTypes.html"> Types of Tests</a></li>
  48. <li class="toctree-l1"><a class="reference internal" href="../DataFile.html"> Data file</a></li>
  49. <li class="toctree-l1"><a class="reference internal" href="../SaveResults2Database.html"> Results in Database</a></li>
  50. <li class="toctree-l1"><a class="reference internal" href="../HistoryAndReasons.html"> History</a></li>
  51. <li class="toctree-l1"><a class="reference internal" href="../contributors.html"> Contributions</a></li>
  52. <li class="toctree-l1"><a class="reference internal" href="../changelog.html"> Changelog</a></li>
  53. <li class="toctree-l1"><a class="reference internal" href="../PlannedFeatures.html"> Planned Features</a></li>
  54. <li class="toctree-l1"><a class="reference internal" href="../BrowserDrivers.html"> Browser Drivers</a></li>
  55. <li class="toctree-l1"><a class="reference internal" href="../Variables.html"> Variables</a></li>
  56. <li class="toctree-l1"><a class="reference internal" href="../SendStatistics.html"> Results</a></li>
  57. <li class="toctree-l1"><a class="reference internal" href="../Datagenerator.html">DataGenerator</a></li>
  58. <li class="toctree-l1"><a class="reference internal" href="../Datagenerator.html#input-file">Input File</a></li>
  59. <li class="toctree-l1"><a class="reference internal" href="../Datagenerator.html#data-type">Data Type</a></li>
  60. <li class="toctree-l1"><a class="reference internal" href="../Datagenerator.html#all-data-types-format">All Data Types Format</a></li>
  61. <li class="toctree-l1"><a class="reference internal" href="../Developer.html"> For Developers</a></li>
  62. <li class="toctree-l1"><a class="reference internal" href="../baangt-Plugin.html">What is a baangt-plugin</a></li>
  63. <li class="toctree-l1"><a class="reference internal" href="../baangt-Plugin.html#how-to-make-a-baangt-plugin">how to make a baangt-plugin</a></li>
  64. <li class="toctree-l1"><a class="reference internal" href="../baangt-Plugin.html#how-the-baangt-plugin-work">how the baangt-plugin work</a></li>
  65. <li class="toctree-l1"><a class="reference internal" href="../baangt-Plugin.html#how-to-replace-the-existing-plugin-by-your-own-one">how to replace the existing plugin by your own one</a></li>
  66. <li class="toctree-l1 current"><a class="reference internal" href="Articles.html"> :subheader: Articles</a><ul class="current">
  67. <li class="toctree-l2"><a class="reference internal" href="ProductionSucks.html"> Production sucks</a></li>
  68. <li class="toctree-l2"><a class="reference internal" href="DataDoctor.html"> Test data rulez</a></li>
  69. <li class="toctree-l2"><a class="reference internal" href="BaangtIndustries.html"> Industries 4 baangt</a></li>
  70. <li class="toctree-l2 current"><a class="current reference internal" href="#"> Stop testing!</a><ul>
  71. <li class="toctree-l3"><a class="reference internal" href="#how-to-improve-the-situation">How to improve the situation</a></li>
  72. <li class="toctree-l3"><a class="reference internal" href="#it-s-raining-soup-with-bugs">It’s raining soup - with bugs</a></li>
  73. </ul>
  74. </li>
  75. <li class="toctree-l2"><a class="reference internal" href="AgileWorkflowIntegration.html"> bAanGtILE</a></li>
  76. <li class="toctree-l2"><a class="reference internal" href="BugSoup.html"> BugSoup</a></li>
  77. <li class="toctree-l2"><a class="reference internal" href="AsynchronousAndCanonTests.html"> Canons, that are not DSLR nor music</a></li>
  78. <li class="toctree-l2"><a class="reference internal" href="SeleniumGridV4WithBaangt.html"> SeleniumGridV4</a></li>
  79. </ul>
  80. </li>
  81. <li class="toctree-l1"><a class="reference external" href="http://www.baangt.org"> Web</a></li>
  82. </ul>
  83. <p class="caption"><span class="caption-text">Autodocs:</span></p>
  84. <ul>
  85. <li class="toctree-l1"><a class="reference internal" href="../docs/baangt.base.html">Autodocs</a></li>
  86. <li class="toctree-l1"><a class="reference internal" href="../docs/modules.html">Modules</a></li>
  87. </ul>
  88. </div>
  89. </div>
  90. </nav>
  91. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  92. <nav class="wy-nav-top" aria-label="top navigation">
  93. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  94. <a href="../index.html">baangt</a>
  95. </nav>
  96. <div class="wy-nav-content">
  97. <div class="rst-content">
  98. <div role="navigation" aria-label="breadcrumbs navigation">
  99. <ul class="wy-breadcrumbs">
  100. <li><a href="../index.html">Docs</a> &raquo;</li>
  101. <li><a href="Articles.html">Not Exactly Documentation</a> &raquo;</li>
  102. <li>Stop testing software…</li>
  103. <li class="wy-breadcrumbs-aside">
  104. <a href="../_sources/articles/StopTesting.rst.txt" rel="nofollow"> View page source</a>
  105. </li>
  106. </ul>
  107. <hr/>
  108. </div>
  109. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  110. <div itemprop="articleBody">
  111. <div class="section" id="stop-testing-software">
  112. <h1>Stop testing software…<a class="headerlink" href="#stop-testing-software" title="Permalink to this headline">¶</a></h1>
  113. <p>… only. Also and foremost test business functionality. In today’s semi-agile and agile environments we fortunately improved testing
  114. in all stages of the development process. Nobody would dream to deliver software without unit-tests, service tests and
  115. consumer driven contract testing is hip and most companies even have (more or less) End-2-End (E2E) tests. Nevertheless
  116. we still see loads of bugs once the software reaches production.</p>
  117. <p>These bugs slow us down. They cost millions of hours every day, that could be spent on more productive things. A bug,
  118. that is found in production is much more harmful to an organization than a bug found (ideally) in DEV-Environment or
  119. in QA/Final QA-Stages. I’m not talking about the reputation of the organization - that’s a different story alltogether. No,
  120. I’m talking about the fixing cost.</p>
  121. <p>Chances are, the bug was created longer than 3 months ago. Maybe the developer isn’t here anymore, even if he is, he won’t
  122. know the faulty code by heart, meaning he’ll have to spend some time figuring out, what’s wrong. These switching costs are
  123. one of the main effort drivers for bug fixing costs.</p>
  124. <p>Secondly - a production bug needs to be treated with priority. The assigned Developer will stash his current work, checkout
  125. production code, reconfigure Dev-Environment. Depending on the IDE and the overall complexity, this might take only
  126. a few minutes, but it adds to the overall costs.</p>
  127. <p>Another important factor, that can cost days, weeks or months of additional effort is when fixing the bug needs
  128. migrations for instance in already posted data. Separate functionalities need to be written to identify the effected
  129. records, determine the correct values, the wrong value and decide, how to cope with the delta between those two. Such
  130. situations can get messy and you wish you had chosen another career path, when in the middle of this.</p>
  131. <div class="section" id="how-to-improve-the-situation">
  132. <h2>How to improve the situation<a class="headerlink" href="#how-to-improve-the-situation" title="Permalink to this headline">¶</a></h2>
  133. <p>Even when you have simple and easy to solve bugs from production, they still cost you more than when you had found them
  134. in earlier stages. And there’s still this reputation thing with your users or customers.</p>
  135. <p>To improve the situation you’ll definitely want to use realistic test data, if possible cases from production for your
  136. regression tests and in most cases also for your progression tests. You’ll also move your focus from technichal aspects
  137. of testing to pure business functionality. You’ll create many realistic test data combinations and let them run.</p>
  138. <p>We once searched for quite some time for performance optimization possibilities until we found out, that the test case
  139. itself was flawed. It produced a demand situation for a specific material that would never happen in a productive
  140. system, because all the customer order tests were mainly ordering this one material number, when in reality the customer
  141. had 10.000s of materials. Don’t be like our past. Be better.</p>
  142. <p>Realistic testdata combinations might also mean, that you have to create multiple sets of realistic master data for your
  143. test cases. Sometimes that’s hard, because masterdata might be maintained on a remote master system and you might not
  144. have access to that. But it’s so worth the trouble in the long run.</p>
  145. </div>
  146. <div class="section" id="it-s-raining-soup-with-bugs">
  147. <h2>It’s raining soup - with bugs<a class="headerlink" href="#it-s-raining-soup-with-bugs" title="Permalink to this headline">¶</a></h2>
  148. <p>Once you’re in production your bug tickets are an invaluable source of wisdom, on how to improve testing. Majority of the
  149. tickets will hopefully be about user errors, wrong passwords, unknown “Works as designed”-Situations, and things like that.</p>
  150. <p>The remaining tickets are the gold. Dig them up (usually we’d have a JIRA-Filter and a classification in the defects),
  151. look what came in since your last release and once fixed, analyse, how you can adjust your test set in order to avoid the
  152. current and similar error situations. Look deep into the root cause of why this defect or error wasn’t discovered before.
  153. Once you’re clear on the reasons (multiple reasons are very common, once you have a mature test set) add test data
  154. combinations, that will detect those problems upfront.</p>
  155. <p>If you follow this procedure I guarantee, that in 1-4 months you’ll see a sharp decline in production defects as
  156. day by day and week by week you’ll catch more problems in previous stages and your production will become rock-stable.</p>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <footer>
  162. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  163. <a href="AgileWorkflowIntegration.html" class="btn btn-neutral float-right" title="Agile: Where does baangt fit in?" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
  164. <a href="BaangtIndustries.html" class="btn btn-neutral float-left" title="baangt In Industries" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
  165. </div>
  166. <hr/>
  167. <div role="contentinfo">
  168. <p>
  169. &copy; Copyright 2020, Bernhard Buhl
  170. </p>
  171. </div>
  172. Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
  173. </footer>
  174. </div>
  175. </div>
  176. </section>
  177. </div>
  178. <script type="text/javascript">
  179. jQuery(function () {
  180. SphinxRtdTheme.Navigation.enable(true);
  181. });
  182. </script>
  183. </body>
  184. </html>