AsynchronousAndCanonTests.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  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>Asynchronous vs. Canon 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="Integration with Selenium Grid V4" href="SeleniumGridV4WithBaangt.html" />
  21. <link rel="prev" title="Why On Earth Do We Have Bugs In Production?" href="BugSoup.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"><a class="reference internal" href="StopTesting.html"> Stop testing!</a></li>
  71. <li class="toctree-l2"><a class="reference internal" href="AgileWorkflowIntegration.html"> bAanGtILE</a></li>
  72. <li class="toctree-l2"><a class="reference internal" href="BugSoup.html"> BugSoup</a></li>
  73. <li class="toctree-l2 current"><a class="current reference internal" href="#"> Canons, that are not DSLR nor music</a><ul>
  74. <li class="toctree-l3"><a class="reference internal" href="#abstract">Abstract</a></li>
  75. <li class="toctree-l3"><a class="reference internal" href="#isn-t-everything-asynchronous">Isn’t everything asynchronous?</a><ul>
  76. <li class="toctree-l4"><a class="reference internal" href="#polling-vs-events">Polling vs. Events</a></li>
  77. </ul>
  78. </li>
  79. <li class="toctree-l3"><a class="reference internal" href="#deep-dive-on-test-canons">Deep dive on test Canons</a><ul>
  80. <li class="toctree-l4"><a class="reference internal" href="#how-does-it-apply-to-testing-processes">How does it apply to testing processes?</a></li>
  81. <li class="toctree-l4"><a class="reference internal" href="#how-the-test-canon-works">How the test Canon works</a></li>
  82. </ul>
  83. </li>
  84. <li class="toctree-l3"><a class="reference internal" href="#how-it-fits-all-together">How it fits all together</a><ul>
  85. <li class="toctree-l4"><a class="reference internal" href="#prerequisites-to-run-test-canons-in-baangt">Prerequisites to run test canons in <code class="docutils literal notranslate"><span class="pre">baangt</span></code></a></li>
  86. </ul>
  87. </li>
  88. </ul>
  89. </li>
  90. <li class="toctree-l2"><a class="reference internal" href="SeleniumGridV4WithBaangt.html"> SeleniumGridV4</a></li>
  91. </ul>
  92. </li>
  93. <li class="toctree-l1"><a class="reference external" href="http://www.baangt.org"> Web</a></li>
  94. </ul>
  95. <p class="caption"><span class="caption-text">Autodocs:</span></p>
  96. <ul>
  97. <li class="toctree-l1"><a class="reference internal" href="../docs/baangt.base.html">Autodocs</a></li>
  98. <li class="toctree-l1"><a class="reference internal" href="../docs/modules.html">Modules</a></li>
  99. </ul>
  100. </div>
  101. </div>
  102. </nav>
  103. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  104. <nav class="wy-nav-top" aria-label="top navigation">
  105. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  106. <a href="../index.html">baangt</a>
  107. </nav>
  108. <div class="wy-nav-content">
  109. <div class="rst-content">
  110. <div role="navigation" aria-label="breadcrumbs navigation">
  111. <ul class="wy-breadcrumbs">
  112. <li><a href="../index.html">Docs</a> &raquo;</li>
  113. <li><a href="Articles.html">Not Exactly Documentation</a> &raquo;</li>
  114. <li>Asynchronous vs. Canon tests</li>
  115. <li class="wy-breadcrumbs-aside">
  116. <a href="../_sources/articles/AsynchronousAndCanonTests.rst.txt" rel="nofollow"> View page source</a>
  117. </li>
  118. </ul>
  119. <hr/>
  120. </div>
  121. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  122. <div itemprop="articleBody">
  123. <div class="section" id="asynchronous-vs-canon-tests">
  124. <h1>Asynchronous vs. Canon tests<a class="headerlink" href="#asynchronous-vs-canon-tests" title="Permalink to this headline">¶</a></h1>
  125. <div class="section" id="abstract">
  126. <h2>Abstract<a class="headerlink" href="#abstract" title="Permalink to this headline">¶</a></h2>
  127. <p>Whenever you can’t grab the verification of your test assumption right away, you’re in an <strong>asynchronous</strong> scenario. When
  128. you have an End2End-Scenario where this happens in more than one steps, you could consider setting up a test Canon.
  129. Borrowed from music, a test canon will start with one test case until the halt condition is reached. Once the case can
  130. continue (e.g. because a trigger arrived), the canon will not only continue to run the first test case in it’s second
  131. step but also start a new initial sequence of the same test case.</p>
  132. </div>
  133. <hr class="docutils" />
  134. <div class="section" id="isn-t-everything-asynchronous">
  135. <h2>Isn’t everything asynchronous?<a class="headerlink" href="#isn-t-everything-asynchronous" title="Permalink to this headline">¶</a></h2>
  136. <p>By nature basically every test is asynchronous, because we always wait for a reaction of the System under test. In most
  137. cases, we’re talking about Microseconds up to a few seconds. You’ll not do anything special with waiting times up to
  138. a few seconds. As you run anyway 50 or 500 parallel sessions, it doesn’t really matter. But what if we need to wait
  139. for e.g. 10 Minutes, 30 Minutes, 8 hours? We shouldn’t waste resources (like CPU-Time and blocked processes) to wait for
  140. extended times.</p>
  141. <div class="section" id="polling-vs-events">
  142. <h3>Polling vs. Events<a class="headerlink" href="#polling-vs-events" title="Permalink to this headline">¶</a></h3>
  143. <p><strong>Polling</strong> means to have your currently active test case poll repeatedly for an event in a more or less fixed timely
  144. interval. That’s nice for smaller waiting periods and smaller installations. When you run with 500 parallel sessions and
  145. you query a service every 500 ms for a specific answer you may create a unrealistic load to that service. You also
  146. consume resources of your test environment, which are then not available for other tasks. For <code class="docutils literal notranslate"><span class="pre">baangt</span></code> we recommend
  147. to use polling for expected short waiting times (several seconds up to minutes) - but that’s not a hard rule. YMMV.</p>
  148. <p><strong>Events</strong> (aka Callbacks) are the opposite. Your test case pauses and doesn’t do anything until an external trigger
  149. appears. Of course callbacks are more difficult to implement as you not only need to query a service repeatedly, but first
  150. implement a callback service as well as the call to the callback service (even when it’s done via Kafka or Redis).</p>
  151. <p>These callbacks are additional components of your system landscape, that need to be developed, tested and maintained.</p>
  152. </div>
  153. </div>
  154. <div class="section" id="deep-dive-on-test-canons">
  155. <h2>Deep dive on test Canons<a class="headerlink" href="#deep-dive-on-test-canons" title="Permalink to this headline">¶</a></h2>
  156. <p>What is a test Canon? It is basically the same concept as a canon in music for a combination of asynchronously executed
  157. test steps over and over again in order to have one test result for each test step at any given time slice.</p>
  158. <blockquote>
  159. <div><p>From <a class="reference external" href="https://en.wikipedia.org/wiki/Canon_(music)">Wikipedia</a>:</p>
  160. <p>In music, a canon is a contrapuntal (counterpoint-based) compositional technique that employs a melody with <strong>one or</strong>
  161. <strong>more imitations</strong> of the melody played after a given duration (e.g., quarter rest, one measure, etc.).</p>
  162. </div></blockquote>
  163. <p>See the music canon in action on <a class="reference external" href="https://www.youtube.com/watch?v=S9MN2WeqFY8">Youtube</a></p>
  164. <div class="section" id="how-does-it-apply-to-testing-processes">
  165. <h3>How does it apply to testing processes?<a class="headerlink" href="#how-does-it-apply-to-testing-processes" title="Permalink to this headline">¶</a></h3>
  166. <p>Imagine the following (simplified) test case sequence (in combination with a mainframe or SAP-System):</p>
  167. <ol class="arabic simple">
  168. <li><p>Create material master data in Backend. Validate: Material available in online shop (asynchronous)</p></li>
  169. <li><p>Create sales order. Validate: Increased demand in material resource planning (batch)</p></li>
  170. <li><p>Create delivery and shipping. Validate: Reduced stock of materials (asynchronous)</p></li>
  171. <li><p>Create invoice. Validate: Invoice amount posted to A/R (batch)</p></li>
  172. <li><p>Create payment. Validate: Open item closed (batch)</p></li>
  173. <li><p>Create goods return. Validate: Special quality stock increased (asynchronous)</p></li>
  174. <li><p>Create credit note. Validate: Amount of credit note in A/P (batch)</p></li>
  175. <li><p>Create outgoing payment. Validate: Open item closed</p></li>
  176. </ol>
  177. <p>In this example there are 4 batch processes, that we need to wait for before we can tell, whether the whole E2E-Scenario
  178. works or not. Without any measures this means to wait for 5 days until we have a test result. Real use cases are not that simple and would
  179. take longer. Back in the days when there was a month of User acceptance test (UAT) this was fine. Now with always shorter
  180. release cycles you can’t survive without new approaches.</p>
  181. </div>
  182. <div class="section" id="how-the-test-canon-works">
  183. <h3>How the test Canon works<a class="headerlink" href="#how-the-test-canon-works" title="Permalink to this headline">¶</a></h3>
  184. <table class="docutils align-default">
  185. <colgroup>
  186. <col style="width: 73%" />
  187. <col style="width: 3%" />
  188. <col style="width: 3%" />
  189. <col style="width: 3%" />
  190. <col style="width: 3%" />
  191. <col style="width: 3%" />
  192. <col style="width: 3%" />
  193. <col style="width: 3%" />
  194. <col style="width: 3%" />
  195. <col style="width: 3%" />
  196. </colgroup>
  197. <thead>
  198. <tr class="row-odd"><th class="head"><p>Canons and</p></th>
  199. <th class="head"><p>D</p></th>
  200. <th class="head"><p>A</p></th>
  201. <th class="head"><p>Y</p></th>
  202. <th class="head"><p>S</p></th>
  203. <th class="head"><p>/</p></th>
  204. <th class="head"><p>E</p></th>
  205. <th class="head"><p>X</p></th>
  206. <th class="head"><p>E</p></th>
  207. <th class="head"><p>C</p></th>
  208. </tr>
  209. <tr class="row-even"><th class="head"><p>Teststeps</p></th>
  210. <th class="head"><p>1</p></th>
  211. <th class="head"><p>2</p></th>
  212. <th class="head"><p>3</p></th>
  213. <th class="head"><p>4</p></th>
  214. <th class="head"><p>5</p></th>
  215. <th class="head"><p>6</p></th>
  216. <th class="head"><p>7</p></th>
  217. <th class="head"><p>8</p></th>
  218. <th class="head"><p>9</p></th>
  219. </tr>
  220. </thead>
  221. <tbody>
  222. <tr class="row-odd"><td><p>Canon 1 - Teststep 1 + 2</p></td>
  223. <td><p>X</p></td>
  224. <td></td>
  225. <td></td>
  226. <td></td>
  227. <td></td>
  228. <td></td>
  229. <td></td>
  230. <td></td>
  231. <td></td>
  232. </tr>
  233. <tr class="row-even"><td><p>Canon 1 - Teststep 3 + 4</p></td>
  234. <td></td>
  235. <td><p>X</p></td>
  236. <td></td>
  237. <td></td>
  238. <td></td>
  239. <td></td>
  240. <td></td>
  241. <td></td>
  242. <td></td>
  243. </tr>
  244. <tr class="row-odd"><td><p>Canon 2 - Teststep 1 + 2</p></td>
  245. <td></td>
  246. <td><p>X</p></td>
  247. <td></td>
  248. <td></td>
  249. <td></td>
  250. <td></td>
  251. <td></td>
  252. <td></td>
  253. <td></td>
  254. </tr>
  255. <tr class="row-even"><td><p>Canon 1 - Teststep 5</p></td>
  256. <td></td>
  257. <td></td>
  258. <td><p>X</p></td>
  259. <td></td>
  260. <td></td>
  261. <td></td>
  262. <td></td>
  263. <td></td>
  264. <td></td>
  265. </tr>
  266. <tr class="row-odd"><td><p>Canon 2 - Teststep 3 + 4</p></td>
  267. <td></td>
  268. <td></td>
  269. <td><p>X</p></td>
  270. <td></td>
  271. <td></td>
  272. <td></td>
  273. <td></td>
  274. <td></td>
  275. <td></td>
  276. </tr>
  277. <tr class="row-even"><td><p>Canon 3 - Teststep 1 + 2</p></td>
  278. <td></td>
  279. <td></td>
  280. <td><p>X</p></td>
  281. <td></td>
  282. <td></td>
  283. <td></td>
  284. <td></td>
  285. <td></td>
  286. <td></td>
  287. </tr>
  288. <tr class="row-odd"><td><p>Canon 1 - Teststep 6 + 7</p></td>
  289. <td></td>
  290. <td></td>
  291. <td></td>
  292. <td><p>X</p></td>
  293. <td></td>
  294. <td></td>
  295. <td></td>
  296. <td></td>
  297. <td></td>
  298. </tr>
  299. <tr class="row-even"><td><p>Canon 2 - Teststep 5</p></td>
  300. <td></td>
  301. <td></td>
  302. <td></td>
  303. <td><p>X</p></td>
  304. <td></td>
  305. <td></td>
  306. <td></td>
  307. <td></td>
  308. <td></td>
  309. </tr>
  310. <tr class="row-odd"><td><p>Canon 3 - Teststep 3 + 4</p></td>
  311. <td></td>
  312. <td></td>
  313. <td></td>
  314. <td><p>X</p></td>
  315. <td></td>
  316. <td></td>
  317. <td></td>
  318. <td></td>
  319. <td></td>
  320. </tr>
  321. <tr class="row-even"><td><p>Canon 4 - Teststep 1 + 2</p></td>
  322. <td></td>
  323. <td></td>
  324. <td></td>
  325. <td><p>X</p></td>
  326. <td></td>
  327. <td></td>
  328. <td></td>
  329. <td></td>
  330. <td></td>
  331. </tr>
  332. <tr class="row-odd"><td><p>Canon 1 - Teststep 8</p></td>
  333. <td></td>
  334. <td></td>
  335. <td></td>
  336. <td></td>
  337. <td><p>X</p></td>
  338. <td></td>
  339. <td></td>
  340. <td></td>
  341. <td></td>
  342. </tr>
  343. <tr class="row-even"><td><p>Canon 2 - Teststep 6 + 7</p></td>
  344. <td></td>
  345. <td></td>
  346. <td></td>
  347. <td></td>
  348. <td><p>X</p></td>
  349. <td></td>
  350. <td></td>
  351. <td></td>
  352. <td></td>
  353. </tr>
  354. <tr class="row-odd"><td><p>Canon 3 - Teststep 5</p></td>
  355. <td></td>
  356. <td></td>
  357. <td></td>
  358. <td></td>
  359. <td><p>X</p></td>
  360. <td></td>
  361. <td></td>
  362. <td></td>
  363. <td></td>
  364. </tr>
  365. <tr class="row-even"><td><p>Canon 4 - Teststep 3 + 4</p></td>
  366. <td></td>
  367. <td></td>
  368. <td></td>
  369. <td></td>
  370. <td><p>X</p></td>
  371. <td></td>
  372. <td></td>
  373. <td></td>
  374. <td></td>
  375. </tr>
  376. <tr class="row-odd"><td><p>Canon 5 - Teststep 1 + 2</p></td>
  377. <td></td>
  378. <td></td>
  379. <td></td>
  380. <td></td>
  381. <td><p>X</p></td>
  382. <td></td>
  383. <td></td>
  384. <td></td>
  385. <td></td>
  386. </tr>
  387. <tr class="row-even"><td><p>Canon 2 - Teststep 8</p></td>
  388. <td></td>
  389. <td></td>
  390. <td></td>
  391. <td></td>
  392. <td></td>
  393. <td><p>X</p></td>
  394. <td></td>
  395. <td></td>
  396. <td></td>
  397. </tr>
  398. <tr class="row-odd"><td><p>Canon 3 - Teststep 6 + 7</p></td>
  399. <td></td>
  400. <td></td>
  401. <td></td>
  402. <td></td>
  403. <td></td>
  404. <td><p>X</p></td>
  405. <td></td>
  406. <td></td>
  407. <td></td>
  408. </tr>
  409. <tr class="row-even"><td><p>Canon 4 - Teststep 5</p></td>
  410. <td></td>
  411. <td></td>
  412. <td></td>
  413. <td></td>
  414. <td></td>
  415. <td><p>X</p></td>
  416. <td></td>
  417. <td></td>
  418. <td></td>
  419. </tr>
  420. <tr class="row-odd"><td><p>Canon 5 - Teststep 3 + 4</p></td>
  421. <td></td>
  422. <td></td>
  423. <td></td>
  424. <td></td>
  425. <td></td>
  426. <td><p>X</p></td>
  427. <td></td>
  428. <td></td>
  429. <td></td>
  430. </tr>
  431. <tr class="row-even"><td><p>Canon 6 - Teststep 1 + 2</p></td>
  432. <td></td>
  433. <td></td>
  434. <td></td>
  435. <td></td>
  436. <td></td>
  437. <td><p>X</p></td>
  438. <td></td>
  439. <td></td>
  440. <td></td>
  441. </tr>
  442. <tr class="row-odd"><td><p>Canon 3 - Teststep 8</p></td>
  443. <td></td>
  444. <td></td>
  445. <td></td>
  446. <td></td>
  447. <td></td>
  448. <td></td>
  449. <td><p>X</p></td>
  450. <td></td>
  451. <td></td>
  452. </tr>
  453. <tr class="row-even"><td><p>Canon 4 - Teststep 6 + 7</p></td>
  454. <td></td>
  455. <td></td>
  456. <td></td>
  457. <td></td>
  458. <td></td>
  459. <td></td>
  460. <td><p>X</p></td>
  461. <td></td>
  462. <td></td>
  463. </tr>
  464. <tr class="row-odd"><td><p>Canon 5 - Teststep 5</p></td>
  465. <td></td>
  466. <td></td>
  467. <td></td>
  468. <td></td>
  469. <td></td>
  470. <td></td>
  471. <td><p>X</p></td>
  472. <td></td>
  473. <td></td>
  474. </tr>
  475. <tr class="row-even"><td><p>Canon 6 - Teststep 3 + 4</p></td>
  476. <td></td>
  477. <td></td>
  478. <td></td>
  479. <td></td>
  480. <td></td>
  481. <td></td>
  482. <td><p>X</p></td>
  483. <td></td>
  484. <td></td>
  485. </tr>
  486. <tr class="row-odd"><td><p>Canon 7 - Teststep 1 + 2</p></td>
  487. <td></td>
  488. <td></td>
  489. <td></td>
  490. <td></td>
  491. <td></td>
  492. <td></td>
  493. <td><p>X</p></td>
  494. <td></td>
  495. <td></td>
  496. </tr>
  497. <tr class="row-even"><td><p>Canon 4 - Teststep 8</p></td>
  498. <td></td>
  499. <td></td>
  500. <td></td>
  501. <td></td>
  502. <td></td>
  503. <td></td>
  504. <td></td>
  505. <td><p>X</p></td>
  506. <td></td>
  507. </tr>
  508. <tr class="row-odd"><td><p>Canon 5 - Teststep 6 + 7</p></td>
  509. <td></td>
  510. <td></td>
  511. <td></td>
  512. <td></td>
  513. <td></td>
  514. <td></td>
  515. <td></td>
  516. <td><p>X</p></td>
  517. <td></td>
  518. </tr>
  519. <tr class="row-even"><td><p>Canon 6 - Teststep 5</p></td>
  520. <td></td>
  521. <td></td>
  522. <td></td>
  523. <td></td>
  524. <td></td>
  525. <td></td>
  526. <td></td>
  527. <td><p>X</p></td>
  528. <td></td>
  529. </tr>
  530. <tr class="row-odd"><td><p>Canon 7 - Teststep 3 + 4</p></td>
  531. <td></td>
  532. <td></td>
  533. <td></td>
  534. <td></td>
  535. <td></td>
  536. <td></td>
  537. <td></td>
  538. <td><p>X</p></td>
  539. <td></td>
  540. </tr>
  541. <tr class="row-even"><td><p>Canon 8 - Teststep 1 + 2</p></td>
  542. <td></td>
  543. <td></td>
  544. <td></td>
  545. <td></td>
  546. <td></td>
  547. <td></td>
  548. <td></td>
  549. <td><p>X</p></td>
  550. <td></td>
  551. </tr>
  552. <tr class="row-odd"><td><p>Canon 5 - Teststep 8</p></td>
  553. <td></td>
  554. <td></td>
  555. <td></td>
  556. <td></td>
  557. <td></td>
  558. <td></td>
  559. <td></td>
  560. <td></td>
  561. <td><p>X</p></td>
  562. </tr>
  563. <tr class="row-even"><td><p>Canon 6 - Teststep 6 + 7</p></td>
  564. <td></td>
  565. <td></td>
  566. <td></td>
  567. <td></td>
  568. <td></td>
  569. <td></td>
  570. <td></td>
  571. <td></td>
  572. <td><p>X</p></td>
  573. </tr>
  574. <tr class="row-odd"><td><p>Canon 7 - Teststep 5</p></td>
  575. <td></td>
  576. <td></td>
  577. <td></td>
  578. <td></td>
  579. <td></td>
  580. <td></td>
  581. <td></td>
  582. <td></td>
  583. <td><p>X</p></td>
  584. </tr>
  585. <tr class="row-even"><td><p>Canon 8 - Teststep 3 + 4</p></td>
  586. <td></td>
  587. <td></td>
  588. <td></td>
  589. <td></td>
  590. <td></td>
  591. <td></td>
  592. <td></td>
  593. <td></td>
  594. <td><p>X</p></td>
  595. </tr>
  596. <tr class="row-odd"><td><p>Canon 9 - Teststep 1 + 2</p></td>
  597. <td></td>
  598. <td></td>
  599. <td></td>
  600. <td></td>
  601. <td></td>
  602. <td></td>
  603. <td></td>
  604. <td></td>
  605. <td><p>X</p></td>
  606. </tr>
  607. </tbody>
  608. </table>
  609. </div>
  610. </div>
  611. <div class="section" id="how-it-fits-all-together">
  612. <h2>How it fits all together<a class="headerlink" href="#how-it-fits-all-together" title="Permalink to this headline">¶</a></h2>
  613. <p>In <code class="docutils literal notranslate"><span class="pre">baangt</span></code> we have test case status <code class="docutils literal notranslate"><span class="pre">paused</span></code> for conditions of longer asynchronous waiting times. Each test case has
  614. a unique identifier, that enables external callbacks or triggers to resume a certain test case after it was paused and
  615. the precondition for continuation was met.</p>
  616. <div class="section" id="prerequisites-to-run-test-canons-in-baangt">
  617. <h3>Prerequisites to run test canons in <code class="docutils literal notranslate"><span class="pre">baangt</span></code><a class="headerlink" href="#prerequisites-to-run-test-canons-in-baangt" title="Permalink to this headline">¶</a></h3>
  618. <ul class="simple">
  619. <li><p>implement the triggers which will call <code class="docutils literal notranslate"><span class="pre">baangt</span></code> service “resumeTestCase” with the unique ID of a test case</p></li>
  620. <li><p>baangtDB (onsite, in the cloud or serverless)</p></li>
  621. </ul>
  622. </div>
  623. </div>
  624. </div>
  625. </div>
  626. </div>
  627. <footer>
  628. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  629. <a href="SeleniumGridV4WithBaangt.html" class="btn btn-neutral float-right" title="Integration with Selenium Grid V4" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
  630. <a href="BugSoup.html" class="btn btn-neutral float-left" title="Why On Earth Do We Have Bugs In Production?" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
  631. </div>
  632. <hr/>
  633. <div role="contentinfo">
  634. <p>
  635. &copy; Copyright 2020, Bernhard Buhl
  636. </p>
  637. </div>
  638. 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>.
  639. </footer>
  640. </div>
  641. </div>
  642. </section>
  643. </div>
  644. <script type="text/javascript">
  645. jQuery(function () {
  646. SphinxRtdTheme.Navigation.enable(true);
  647. });
  648. </script>
  649. </body>
  650. </html>