TestTypes.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  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>Types of tests &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="Special functions in datafiles" href="DataFile.html" />
  21. <link rel="prev" title="How to create a simple API Test" href="SimpleAPI.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 current"><a class="current reference internal" href="#"> Types of Tests</a><ul>
  48. <li class="toctree-l2"><a class="reference internal" href="#increment-testing">Increment testing</a></li>
  49. <li class="toctree-l2"><a class="reference internal" href="#heartbeat-and-alive-testing">Heartbeat and Alive-Testing</a></li>
  50. <li class="toctree-l2"><a class="reference internal" href="#regression-testing">Regression testing</a></li>
  51. <li class="toctree-l2"><a class="reference internal" href="#performance-testing">Performance testing</a></li>
  52. <li class="toctree-l2"><a class="reference internal" href="#end-to-end-e2e-testing">End to End (E2E) Testing</a></li>
  53. <li class="toctree-l2"><a class="reference internal" href="#lifecycle-tests-of-business-objects">Lifecycle tests of business objects</a><ul>
  54. <li class="toctree-l3"><a class="reference internal" href="#time-travel-tests">Time travel tests</a></li>
  55. <li class="toctree-l3"><a class="reference internal" href="#cradle-to-the-grave">Cradle to the grave</a></li>
  56. </ul>
  57. </li>
  58. <li class="toctree-l2"><a class="reference internal" href="#no-oversimplification">No oversimplification</a></li>
  59. </ul>
  60. </li>
  61. <li class="toctree-l1"><a class="reference internal" href="DataFile.html"> Data file</a></li>
  62. <li class="toctree-l1"><a class="reference internal" href="SaveResults2Database.html"> Results in Database</a></li>
  63. <li class="toctree-l1"><a class="reference internal" href="HistoryAndReasons.html"> History</a></li>
  64. <li class="toctree-l1"><a class="reference internal" href="contributors.html"> Contributions</a></li>
  65. <li class="toctree-l1"><a class="reference internal" href="changelog.html"> Changelog</a></li>
  66. <li class="toctree-l1"><a class="reference internal" href="PlannedFeatures.html"> Planned Features</a></li>
  67. <li class="toctree-l1"><a class="reference internal" href="BrowserDrivers.html"> Browser Drivers</a></li>
  68. <li class="toctree-l1"><a class="reference internal" href="Variables.html"> Variables</a></li>
  69. <li class="toctree-l1"><a class="reference internal" href="SendStatistics.html"> Results</a></li>
  70. <li class="toctree-l1"><a class="reference internal" href="Datagenerator.html">DataGenerator</a></li>
  71. <li class="toctree-l1"><a class="reference internal" href="Datagenerator.html#input-file">Input File</a></li>
  72. <li class="toctree-l1"><a class="reference internal" href="Datagenerator.html#data-type">Data Type</a></li>
  73. <li class="toctree-l1"><a class="reference internal" href="Datagenerator.html#all-data-types-format">All Data Types Format</a></li>
  74. <li class="toctree-l1"><a class="reference internal" href="Developer.html"> For Developers</a></li>
  75. <li class="toctree-l1"><a class="reference internal" href="baangt-Plugin.html">What is a baangt-plugin</a></li>
  76. <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>
  77. <li class="toctree-l1"><a class="reference internal" href="baangt-Plugin.html#how-the-baangt-plugin-work">how the baangt-plugin work</a></li>
  78. <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>
  79. <li class="toctree-l1"><a class="reference internal" href="articles/Articles.html"> :subheader: Articles</a></li>
  80. <li class="toctree-l1"><a class="reference external" href="http://www.baangt.org"> Web</a></li>
  81. </ul>
  82. <p class="caption"><span class="caption-text">Autodocs:</span></p>
  83. <ul>
  84. <li class="toctree-l1"><a class="reference internal" href="docs/baangt.base.html">Autodocs</a></li>
  85. <li class="toctree-l1"><a class="reference internal" href="docs/modules.html">Modules</a></li>
  86. </ul>
  87. </div>
  88. </div>
  89. </nav>
  90. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  91. <nav class="wy-nav-top" aria-label="top navigation">
  92. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  93. <a href="index.html">baangt</a>
  94. </nav>
  95. <div class="wy-nav-content">
  96. <div class="rst-content">
  97. <div role="navigation" aria-label="breadcrumbs navigation">
  98. <ul class="wy-breadcrumbs">
  99. <li><a href="index.html">Docs</a> &raquo;</li>
  100. <li>Types of tests</li>
  101. <li class="wy-breadcrumbs-aside">
  102. <a href="_sources/TestTypes.rst.txt" rel="nofollow"> View page source</a>
  103. </li>
  104. </ul>
  105. <hr/>
  106. </div>
  107. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  108. <div itemprop="articleBody">
  109. <div class="section" id="types-of-tests">
  110. <h1>Types of tests<a class="headerlink" href="#types-of-tests" title="Permalink to this headline">¶</a></h1>
  111. <p>No matter if your organization is agile or waterfall oriented or follows one of the many hybrid variants. Sooner or later
  112. you’ll have an increment - an outcome from your software developers or customizers. You paid for it. You want it in production.
  113. But will it work? Will there be any unwanted side effects to existing functionality?</p>
  114. <div class="section" id="increment-testing">
  115. <h2>Increment testing<a class="headerlink" href="#increment-testing" title="Permalink to this headline">¶</a></h2>
  116. <p>Usually an increment is tested manually by human testers who are not identical with the developers.</p>
  117. <p>Depending on maturatiy of your organization and many other factors, the testers will be more or less clearly instructed,
  118. what to test. They might have written business requirements and deduct the test cases themselves. In ideal setups they
  119. were part of the development lifecycle, know the deviations from original requirements, pitfalls and workarounds and can
  120. adjust their test expectation accordingly.</p>
  121. <p>Unless you’re in a greenfield situation where the whole system landscape needs to be tested and retested for months or years
  122. your Testers will focus on testing the increment - not so much the existing functionality, which used to work fine already.</p>
  123. <p>Use <code class="docutils literal notranslate"><span class="pre">baangt</span></code> already in preparation of this test phase. Create all the test cases, that you plan to execute. Create all
  124. the data combinations, that you’ll want to have tested. Once the functionality is there, record the most complex scenario
  125. in the recorder. Instead of testing 100s of cases manually, you’ll need only one recording and the prepared dataset. Start
  126. the TestRunExecution, sit back and wait for the results. Simple like that.</p>
  127. </div>
  128. <div class="section" id="heartbeat-and-alive-testing">
  129. <h2>Heartbeat and Alive-Testing<a class="headerlink" href="#heartbeat-and-alive-testing" title="Permalink to this headline">¶</a></h2>
  130. <p>Alive-Testing is usually done with just one quick test case in all stages (Dev, Pre-Quality and Quality-System). It will
  131. show general availability of the landscape and applications running on it. Alive-Tests with some APIs could run for instance
  132. every 5 minutes.</p>
  133. <p>Heartbeat tests are a smaller subset of regression tests. E.g. if you have 10.000 testcases in regression tests, you’d
  134. use a few hundred for heartbeat tests. They’d usually run a few times per day on Pre-Quality- and once per day on
  135. Quality-System) and of course in the build pipeline.</p>
  136. </div>
  137. <div class="section" id="regression-testing">
  138. <h2>Regression testing<a class="headerlink" href="#regression-testing" title="Permalink to this headline">¶</a></h2>
  139. <p>If you followed through on Increment testing imagine the joy of the next release! You’ll have the increment tested and run
  140. all test cases of previous increments as well. That’s called regression testing. If you did everything well use the results
  141. of regression tests and increment tests as rock-solid base for your decision whether to move on to production or not.</p>
  142. </div>
  143. <div class="section" id="performance-testing">
  144. <h2>Performance testing<a class="headerlink" href="#performance-testing" title="Permalink to this headline">¶</a></h2>
  145. <p>So you did regression and increment tests, moved to production and receive countless complaints from users, that the
  146. performance of the system is too slow. Additionally there are now bugs that appear due to timeout situations. Damn.</p>
  147. <blockquote>
  148. <div><p><strong>What happened?</strong></p>
  149. </div></blockquote>
  150. <p>You tested only for functionality, but not for load. With a few simple adoptions to your test cases you can simulate any
  151. number of users. To achieve realistic performance testing you’ll need more hardware for testing than for regression and
  152. increments. But you’ll use the same tool: <code class="docutils literal notranslate"><span class="pre">baangt</span></code>.</p>
  153. <p>As of today (Jan 2020) <code class="docutils literal notranslate"><span class="pre">baangt</span></code> does not provide infrastructure monitoring. In order to analyze the results of your
  154. performance tests you’ll need additional tools, but <code class="docutils literal notranslate"><span class="pre">baangt</span></code> will give indications, which components or which functionalities
  155. need a closer look by your experts.</p>
  156. </div>
  157. <div class="section" id="end-to-end-e2e-testing">
  158. <h2>End to End (E2E) Testing<a class="headerlink" href="#end-to-end-e2e-testing" title="Permalink to this headline">¶</a></h2>
  159. <p>Whenever you have more than one system/microservice dealing with a process, you’ll need E2E-Testing. Of course E2E-Tests
  160. are more complex than just running test cases against one functionality and compare results to the expected values and
  161. behaviour. In larger organizations you’ll want to have E2E-Regression tests before you release increments to production.
  162. <code class="docutils literal notranslate"><span class="pre">baangt</span></code> follows a structure of TestCaseSequences where you combine multiple single Testcases into one Sequence, which
  163. is exactly tailored to run E2E Tests.</p>
  164. </div>
  165. <div class="section" id="lifecycle-tests-of-business-objects">
  166. <h2>Lifecycle tests of business objects<a class="headerlink" href="#lifecycle-tests-of-business-objects" title="Permalink to this headline">¶</a></h2>
  167. <p>Lifecycle tests come in basically two variations, but can be combined - depending on the requirements of the business.
  168. Many industries deal with objects, that follow a certain (long) life cycle. The life cycle can go over years or decades.
  169. These tests are complex and cost a lot of time and effort.</p>
  170. <div class="section" id="time-travel-tests">
  171. <h3>Time travel tests<a class="headerlink" href="#time-travel-tests" title="Permalink to this headline">¶</a></h3>
  172. <p>Often companies have “Time travel” system landscapes, where they
  173. create copies of the whole system landscape (or large parts of the core systems), change the system time on all servers
  174. and run tests subsequently with different dates. <code class="docutils literal notranslate"><span class="pre">baangt</span></code> does not support this type of testing out of the box. But
  175. we provide a functionality to “Pause” Testcase and TestCaseSequence execution. You can easily subclass the corresponding
  176. master classes and create your own mechanism, when to pause a Testcase or TestCaseSequence.</p>
  177. </div>
  178. <div class="section" id="cradle-to-the-grave">
  179. <h3>Cradle to the grave<a class="headerlink" href="#cradle-to-the-grave" title="Permalink to this headline">¶</a></h3>
  180. <p>Another common form of lifecycle tests. In this case the system time remains basically the same, but the test cases are
  181. created in a sequence to follow the birth of an object until it’s deletion. This might be a material, which get’s created,
  182. production recipe created, work planned, sales contract and order created, produced, delivered, invoiced, paid and
  183. revenue calculated. In service industries C2G-Tests are designed around a customer. <code class="docutils literal notranslate"><span class="pre">baangt</span></code> fully supports complex
  184. testcaseSequences running on multiple technologies (Web, API, etc.) also in asynchronous scenarios, for instance if you
  185. need to wait for nightly batch processing of a mainframe.</p>
  186. </div>
  187. </div>
  188. <div class="section" id="no-oversimplification">
  189. <h2>No oversimplification<a class="headerlink" href="#no-oversimplification" title="Permalink to this headline">¶</a></h2>
  190. <p>Please don’t get me wrong. Just because we have a great tool, it doesn’t mean that testing will happen by itself. There’s
  191. still a lot of expert work needed for Testdesign, Stagedesign, Creation and maintenance of Testsets, creation and
  192. maintenance of test data sets, deployment strategies. <code class="docutils literal notranslate"><span class="pre">baangt</span></code> provides efficient ways to work, but work still needs
  193. to be done.</p>
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. <footer>
  199. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  200. <a href="DataFile.html" class="btn btn-neutral float-right" title="Special functions in datafiles" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
  201. <a href="SimpleAPI.html" class="btn btn-neutral float-left" title="How to create a simple API Test" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
  202. </div>
  203. <hr/>
  204. <div role="contentinfo">
  205. <p>
  206. &copy; Copyright 2020, Bernhard Buhl
  207. </p>
  208. </div>
  209. 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>.
  210. </footer>
  211. </div>
  212. </div>
  213. </section>
  214. </div>
  215. <script type="text/javascript">
  216. jQuery(function () {
  217. SphinxRtdTheme.Navigation.enable(true);
  218. });
  219. </script>
  220. </body>
  221. </html>