Test Automation Patterns for Domain Driven Testing

Domain-Driven Testing

Domain-driven testing is part of Design patterns. This pattern is appropriate when testers should be able to write and run automated tests even if they are not adept with the automation tools, or if you want them to start writing test cases for automation before the Software Under Test (SUT) has been completely developed. The pattern is not appropriate for very small-scale or one-off automation efforts.

Testers develop a simple domain-specific language to write their automated test cases. Practically this means that actions particular to the domain are described by appropriate commands, each with some required parameters. As an example let’s imagine that we want to insert a new customer into our system. The domain-command will look something like this –

New_Customer (FirstName, LastName, HouseNo, Street, ZipCode, City, State)

Now testers only have to call New_Customer and provide the relevant data for a customer to be inserted. Once the language has been specified, testers can start writing test cases even before the SUT has been implemented.

What is the Domain-Driven Testing Pattern?

A test automation pattern is a method of taking care of an issue or problem in test automation that has worked for some individuals. In other words, a pattern is an expert knowledge proven by repeated experience.A pattern is a general reusable explanation to a commonly occurring problem within a given context. They widely used in software development.

A pattern is not

  • a finished solution that can “plug in” directly to the situation
  • prescriptive
  • a step-by-step procedure

Patterns are ideas that can adapt and implement in their context and which will hopefully help solve some of the issues.

Classification of Domain-Driven Patterns

Patterns have been divided into categories depending on their scope –

  • Process Patterns
  • Management Patterns
  • Design Patterns
  • Execution Patterns

Process Patterns

Process patterns show how the test automation method should be set up or how it can be improved.

Management Patterns

Management patterns show how to manage test automation pattern both as an independent project or integrated into the development process.

Design Patterns

Design patterns show how to design the test automation testware so that it will be efficient and easy to maintain.

Execution Patterns

Execution patterns tell the best way to take care that test execution is simple and reliable.

Domain-Driven Test Automation Issues

An Issue is a problem that testers and test automation experts experience when attempting to do test automation.

They are things that take longer than expected, that keep you down in what want to automate, or that are too much trouble.

  • Management Issues – Issues that happen when management has not given the necessary support (budget, resources, team).
  • Process Issues – Problems that happen when the test automation process has not reached a certain maturity.
  • Design Issues – Issues that occur when an efficient testware architecture and maintainability are not built in from the very beginning.
  • Execution Issues – Problems that happen when the automated tests are run (unpredictable results etc.).

Problems in Domain-Driven Test Automation Pattern

  • High Maintenance Cost – Maintenance of the test automation scripts takes time and costs more than it’s worth.  When software changes, e.g., window sequence changed, tests fail. More effort to edit the existing criteria than to start again. (Capture/replay used)
  • No Previous Test Automation – First time automating, or automation has failed, and you are beginning once more.
  • Stalled Automation – Automation has been attempted, but it never “got off the ground” or has now fallen into the delay.
  • Unrealistic Expectations – Management has unrealistic expectations about what test automation can & can’t do.

Where did these automation patterns come from?

An Experiences book published in 2012. Seretta contributed Ch 21 is a developer, used to using patterns. When she read the other chapters, she thought: “Patterns! Patterns!” She wrote up test automation patterns as a book & asked Dot to join her.

Implementation

To implement a domain-specific language, scripts or libraries must be written for all the desired domain-commands. This is usually done with a Test Automation Framework that supports Abstraction Levels.

There are both advantages and disadvantages to this solution. The most significant advantage is that testers who are not very adept with the tools can write and maintain automated test cases. The downside is that it needs developers or test automation engineers to implement the commands so that testers are entirely dependent on their “goodwill.” Another negative point is that the domain libraries may be implemented in the script language of the tool so that to change the device may mean to have to start again from scratch.

Testware Architecture in Test Automation Patterns

There are many artifacts in test automation, and all of them need to have a place to “live.” Scripts, data sets, expected results, actual results, utilities, etc. For efficient working, it is important to ensure that testers and automation know where to find artifacts and can access them quickly and easily as they work. For example, a standard structure for testware permits the information of where artifacts are to be found or placed to be made known to the tools, for example, when tests are to be run, or test results are reported. This makes the job of interacting with the tools simpler and less error-prone because the “where to find it” information is already built into your tools or framework.

Whichever tool you use will have some architecture as the default for that tool. One option is to adopt the tool’s architecture. Although this may be the easiest option, in the beginning, it could have long-term negative consequences, as you will then be “tied” to that tool’s current architecture.

It is much better to design the architecture of your tests so that it supports the way you want to use your automation. It is relatively straightforward to adapt the testware to the needs of the tool (e.g., copy a script to the place where the device expects to find it) – and this can and should also be automated.

When you design your architecture, you need to decide where you will store various testware artifacts, i.e., what filing structure will you use, what naming conventions will you use for files and folders, etc.

Distinguishing between the test materials and the test results is essential. The test materials are those artifacts that should be in place before a test is executed, such as the test inputs, expected results, any set-up that needs to be done, required data before a test runs, environment settings, and the description/documentation for that test. Many of these artifacts will be used by more than one test – in this case, they should be accessible to all tests that use them, but there should only be one master copy (except for different legitimate versions). These artifacts must be under configuration control to prevent people from over-writing edits, for example.

The test results include everything that is produced by the system or software when a test is executed, including the actual results, log files, difference files (between actual and expected results), etc. There are usually many sets of these for a given test, at least for a test that is run many times. These need to be stored in a different way to the test materials, since one set of materials (for a single test) will produce a new copy of the test results each time it is run. If tests are run daily or more often, these sets of results will soon build up, and you don’t want them “clogging” the storage of your tests.

It is worth asking whether you need to keep all of the test results each time – you may want to keep the test log, to prove that the test was run, but if the test passes, then the actual results has correctly matched the expected results, so why keep two copies of the same thing?

Your testware architecture should implement ABSTRACTION LEVELS. Make sure that you design the structure of your scripts so that tool-specific scripts are kept to a minimum. To make your automation accessible to a wide variety of testers, including those who are not programmers, make sure that you enable them to write and run automated tests smoothly.

Advantages of Domain Driven Testing

The advantages of Domain Driven testing are given below –

  • Low maintenance cost
  • Improved communication
  • Enhanced code reusability
  • Low maintenance effort and time
  • Increased reliability
  • Single ownership
  • Single point of change
  • Save time & effort
  • Easy to implement, Maintain, debug and scale.

Issues addressed by this Automation pattern

Late Test case design – Automated test cases are designed and written only after the Software Under Test (SUT) has been implemented. There is a common misconception that automation cannot start until the software being tested is “stable.” Although some things may need to wait until you know exactly what the interface is, far more can be done much earlier than many people realize. This pattern works quite well when testers and automation belong to different teams and have different skills.

Manual Mimicry – Automation mimics manual tests without searching for more efficient solutions.

Non-technical testers – Testers aren’t able to write automation test cases if they are not adept with the automation tools. This pattern is the best choice when the testers cannot also do automation.

Obscure tests – Automated tests are very complex and challenging to understand. Use this pattern to enable even non-technical testers to write and review test cases for automation.

Too early automation – Test automation starts too early on an immature application or the wrong aspect of an application, and produces only “noise.” You can devise a way for tests to be written even if the user interface is not yet stable, using.


A Domain-Driven Approach

Nearly all Test Automation Patterns relate to each other and can use each other in a global scheme of things. Object map is a typical execution pattern that is used in various design and management patterns to solve minor issues. There are other Obvious connections. However, choosing the best pattern is a tricky task.Each pattern category contains the number of specific patterns that address various automation issues. We recommend that you commit to massive case studying and analyze your project before choosing the best Test Automation Pattern.To know more about Testing we recommend taking the following tests –

 



Leave a Comment

Name required.
Enter a Valid Email Address.
Comment required.(Min 30 Char)

[wpforms id="8104"]
<div class="wpforms-container wpforms-container-full optin-monster-forms" id="wpforms-8104"><form id="wpforms-form-8104" class="wpforms-validate wpforms-form" data-formid="8104" method="post" enctype="multipart/form-data" action="/blog/domain-driven-testing/"><noscript class="wpforms-error-noscript">Please enable JavaScript in your browser to complete this form.</noscript><div class="wpforms-page-indicator progress" data-indicator="progress" data-indicator-color="#72b239" data-scroll="1"><span class="wpforms-page-indicator-page-title" ></span><span class="wpforms-page-indicator-page-title-sep" style="display:none;"> - </span><span class="wpforms-page-indicator-steps">Step <span class="wpforms-page-indicator-steps-current">1</span> of 2</span><div class="wpforms-page-indicator-page-progress-wrap"><div class="wpforms-page-indicator-page-progress" style="width:50%;background-color:#72b239;"></div></div></div><div class="wpforms-field-container"><div class="wpforms-page wpforms-page-1 "><div id="wpforms-8104-field_10-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="10"></div><div id="wpforms-8104-field_24-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="24"><div id="wpforms-8104-field_24"><div class="form-popup-header"> <h2>Modernise Data Operations with DataOps</h2> </div></div></div><div id="wpforms-8104-field_21-container" class="wpforms-field wpforms-field-radio custom-radio-btn-wrapper wpforms-list-2-columns" data-field-id="21"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-8104-field_21">Sevices <span class="wpforms-required-label">*</span></label><ul id="wpforms-8104-field_21" class="wpforms-field-required wpforms-image-choices wpforms-image-choices-modern"><li class="choice-1 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8104-field_21_1" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/data-catalog-delivery-platform.png" alt="Data Catalog and Discovery Platform" title="Data Catalog and Discovery Platform"></span><input type="radio" id="wpforms-8104-field_21_1" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Data Catalog and Discovery Platform" tabindex="-1" required ><span class="wpforms-image-choices-label">Data Catalog and Discovery Platform</span></label></li><li class="choice-2 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8104-field_21_2" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/real-time-analytics-platform.png" alt="Real Time Analytics Platform" title="Real Time Analytics Platform"></span><input type="radio" id="wpforms-8104-field_21_2" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Real Time Analytics Platform" tabindex="-1" required ><span class="wpforms-image-choices-label">Real Time Analytics Platform</span></label></li><li class="choice-3 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8104-field_21_3" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/migration-delta-lake.png" alt="Migration to Delta Lake" title="Migration to Delta Lake"></span><input type="radio" id="wpforms-8104-field_21_3" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Migration to Delta Lake" tabindex="-1" required ><span class="wpforms-image-choices-label">Migration to Delta Lake</span></label></li><li class="choice-4 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8104-field_21_4" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/cloud-data-warehouse.png" alt="Cloud Data warehouse" title="Cloud Data warehouse"></span><input type="radio" id="wpforms-8104-field_21_4" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Cloud Data warehouse" tabindex="-1" required ><span class="wpforms-image-choices-label">Cloud Data warehouse</span></label></li><li class="choice-5 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8104-field_21_5" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/enterprise-data-strategy.png" alt="Enterprise Data Strategy" title="Enterprise Data Strategy"></span><input type="radio" id="wpforms-8104-field_21_5" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Enterprise Data Strategy" tabindex="-1" required ><span class="wpforms-image-choices-label">Enterprise Data Strategy</span></label></li></ul></div><div id="wpforms-8104-field_23-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="23"><div class="wpforms-clear wpforms-pagebreak-left"><button class="wpforms-page-button wpforms-page-next" data-action="next" data-page="1" data-formid="8104">Next</button></div></div></div><div class="wpforms-page wpforms-page-2 last " style="display:none;"><div id="wpforms-8104-field_25-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="25"><div id="wpforms-8104-field_25"><div class="form-popup-header"> <h2>Lets Discuss and Understand the Requirements</h2> </div></div></div><div id="wpforms-8104-field_20-container" class="wpforms-field wpforms-field-name col-12 col-sm-12 col-md-12 form-group" data-field-id="20"><label class="wpforms-field-label" for="wpforms-8104-field_20">Name <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8104-field_20" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][20]" placeholder="Name" required></div><div id="wpforms-8104-field_2-container" class="wpforms-field wpforms-field-email col-12 col-sm-12 col-md-12 form-group" data-field-id="2"><label class="wpforms-field-label" for="wpforms-8104-field_2">Email <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-8104-field_2" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][2]" placeholder="Email" required></div><div id="wpforms-8104-field_3-container" class="wpforms-field wpforms-field-text col-12 col-sm-12 col-md-12 form-group" data-field-id="3"><label class="wpforms-field-label" for="wpforms-8104-field_3">Organization <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8104-field_3" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][3]" placeholder="Organization" required></div><div id="wpforms-8104-field_11-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="11"><div class="wpforms-clear wpforms-pagebreak-left"></div></div></div></div><div class="wpforms-field wpforms-field-hp"><label for="wpforms-8104-field-hp" class="wpforms-field-label">Email</label><input type="text" name="wpforms[hp]" id="wpforms-8104-field-hp" class="wpforms-field-medium"></div><input type="hidden" name="wpforms[recaptcha]" value=""><div class="wpforms-submit-container" style="display:none;"><input type="hidden" name="wpforms[id]" value="8104"><input type="hidden" name="wpforms[author]" value="3"><input type="hidden" name="wpforms[post_id]" value="2677"><button type="submit" name="wpforms[submit]" class="wpforms-submit om-trigger-conversion mon-btn" id="wpforms-submit-8104" value="wpforms-submit" aria-live="assertive" data-alt-text="Submitting..." data-submit-text="Submit">Submit</button></div></form></div> <!-- .wpforms-container -->
[wpforms id="8095"]
<div class="wpforms-container wpforms-container-full optin-monster-forms" id="wpforms-8095"><form id="wpforms-form-8095" class="wpforms-validate wpforms-form" data-formid="8095" method="post" enctype="multipart/form-data" action="/blog/domain-driven-testing/"><noscript class="wpforms-error-noscript">Please enable JavaScript in your browser to complete this form.</noscript><div class="wpforms-page-indicator progress" data-indicator="progress" data-indicator-color="#72b239" data-scroll="1"><span class="wpforms-page-indicator-page-title" ></span><span class="wpforms-page-indicator-page-title-sep" style="display:none;"> - </span><span class="wpforms-page-indicator-steps">Step <span class="wpforms-page-indicator-steps-current">1</span> of 2</span><div class="wpforms-page-indicator-page-progress-wrap"><div class="wpforms-page-indicator-page-progress" style="width:50%;background-color:#72b239;"></div></div></div><div class="wpforms-field-container"><div class="wpforms-page wpforms-page-1 "><div id="wpforms-8095-field_10-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="10"></div><div id="wpforms-8095-field_24-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="24"><div id="wpforms-8095-field_24"><div class="form-popup-header"> <h2>RPA and Cognitive Automation</h2> <p>Making business processes smarter and more efficient</p> </div></div></div><div id="wpforms-8095-field_21-container" class="wpforms-field wpforms-field-radio custom-radio-btn-wrapper wpforms-list-3-columns" data-field-id="21"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-8095-field_21">Sevices <span class="wpforms-required-label">*</span></label><ul id="wpforms-8095-field_21" class="wpforms-field-required wpforms-image-choices wpforms-image-choices-modern"><li class="choice-1 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8095-field_21_1" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/automation-anywhere.png" alt=""></span><input type="radio" id="wpforms-8095-field_21_1" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Choice 1" tabindex="-1" required ><span class="wpforms-image-choices-label"></span></label></li><li class="choice-2 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8095-field_21_2" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/uipath.png" alt=""></span><input type="radio" id="wpforms-8095-field_21_2" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Choice 2" tabindex="-1" required ><span class="wpforms-image-choices-label"></span></label></li><li class="choice-3 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8095-field_21_3" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/blueprism.png" alt=""></span><input type="radio" id="wpforms-8095-field_21_3" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Choice 3" tabindex="-1" required ><span class="wpforms-image-choices-label"></span></label></li><li class="choice-4 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8095-field_21_4" tabindex="0"><input type="radio" id="wpforms-8095-field_21_4" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Intelligent Automation" tabindex="-1" required ><span class="wpforms-image-choices-label">Intelligent Automation</span></label></li><li class="choice-5 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8095-field_21_5" tabindex="0"><input type="radio" id="wpforms-8095-field_21_5" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="RPA with AI" tabindex="-1" required ><span class="wpforms-image-choices-label">RPA with AI</span></label></li><li class="choice-6 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8095-field_21_6" tabindex="0"><input type="radio" id="wpforms-8095-field_21_6" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Open Source RPA Implementation" tabindex="-1" required ><span class="wpforms-image-choices-label">Open Source RPA Implementation</span></label></li></ul></div><div id="wpforms-8095-field_23-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="23"><div class="wpforms-clear wpforms-pagebreak-left"><button class="wpforms-page-button wpforms-page-next" data-action="next" data-page="1" data-formid="8095">Next</button></div></div></div><div class="wpforms-page wpforms-page-2 last " style="display:none;"><div id="wpforms-8095-field_25-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="25"><div id="wpforms-8095-field_25"><div class="form-popup-header"> <h2>Let Us Discuss and Understand the Requirement</h2> </div></div></div><div id="wpforms-8095-field_20-container" class="wpforms-field wpforms-field-name col-12 col-sm-12 col-md-12 form-group" data-field-id="20"><label class="wpforms-field-label" for="wpforms-8095-field_20">Name <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8095-field_20" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][20]" placeholder="Name" required></div><div id="wpforms-8095-field_2-container" class="wpforms-field wpforms-field-email col-12 col-sm-12 col-md-12 form-group" data-field-id="2"><label class="wpforms-field-label" for="wpforms-8095-field_2">Email <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-8095-field_2" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][2]" placeholder="Email" required></div><div id="wpforms-8095-field_3-container" class="wpforms-field wpforms-field-text col-12 col-sm-12 col-md-12 form-group" data-field-id="3"><label class="wpforms-field-label" for="wpforms-8095-field_3">Organization <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8095-field_3" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][3]" placeholder="Organization" required></div><div id="wpforms-8095-field_11-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="11"><div class="wpforms-clear wpforms-pagebreak-left"></div></div></div></div><div class="wpforms-field wpforms-field-hp"><label for="wpforms-8095-field-hp" class="wpforms-field-label">Name</label><input type="text" name="wpforms[hp]" id="wpforms-8095-field-hp" class="wpforms-field-medium"></div><input type="hidden" name="wpforms[recaptcha]" value=""><div class="wpforms-submit-container" style="display:none;"><input type="hidden" name="wpforms[id]" value="8095"><input type="hidden" name="wpforms[author]" value="3"><input type="hidden" name="wpforms[post_id]" value="2677"><button type="submit" name="wpforms[submit]" class="wpforms-submit om-trigger-conversion mon-btn" id="wpforms-submit-8095" value="wpforms-submit" aria-live="assertive" data-alt-text="Submitting..." data-submit-text="Submit">Submit</button></div></form></div> <!-- .wpforms-container -->
[wpforms id="8085"]
<div class="wpforms-container wpforms-container-full optin-monster-forms" id="wpforms-8085"><form id="wpforms-form-8085" class="wpforms-validate wpforms-form" data-formid="8085" method="post" enctype="multipart/form-data" action="/blog/domain-driven-testing/"><noscript class="wpforms-error-noscript">Please enable JavaScript in your browser to complete this form.</noscript><div class="wpforms-page-indicator progress" data-indicator="progress" data-indicator-color="#72b239" data-scroll="1"><span class="wpforms-page-indicator-page-title" ></span><span class="wpforms-page-indicator-page-title-sep" style="display:none;"> - </span><span class="wpforms-page-indicator-steps">Step <span class="wpforms-page-indicator-steps-current">1</span> of 2</span><div class="wpforms-page-indicator-page-progress-wrap"><div class="wpforms-page-indicator-page-progress" style="width:50%;background-color:#72b239;"></div></div></div><div class="wpforms-field-container"><div class="wpforms-page wpforms-page-1 "><div id="wpforms-8085-field_10-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="10"></div><div id="wpforms-8085-field_24-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="24"><div id="wpforms-8085-field_24"><div class="form-popup-header"> <img src="https://www.xenonstack.com/images/wednesday-digitally-transform-popup-img.png" /> <h2>Digitally Transform <span>your Organization </span></h2> </div></div></div><div id="wpforms-8085-field_21-container" class="wpforms-field wpforms-field-radio custom-radio-btn-wrapper wpforms-list-2-columns" data-field-id="21"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-8085-field_21">Sevices <span class="wpforms-required-label">*</span></label><ul id="wpforms-8085-field_21" class="wpforms-field-required wpforms-image-choices wpforms-image-choices-modern"><li class="choice-1 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8085-field_21_1" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/continous-delivery-e1594278564177.png" alt="Continous Delivery and DevSecOps" title="Continous Delivery and DevSecOps"></span><input type="radio" id="wpforms-8085-field_21_1" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Continous Delivery and DevSecOps" tabindex="-1" required ><span class="wpforms-image-choices-label">Continous Delivery and DevSecOps</span></label></li><li class="choice-2 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8085-field_21_2" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/robotic-process.png" alt="Robotic Process Automation" title="Robotic Process Automation"></span><input type="radio" id="wpforms-8085-field_21_2" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Robotic Process Automation" tabindex="-1" required ><span class="wpforms-image-choices-label">Robotic Process Automation</span></label></li><li class="choice-3 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8085-field_21_3" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/big-data-analytics.png" alt="Big Data Analytics" title="Big Data Analytics"></span><input type="radio" id="wpforms-8085-field_21_3" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Big Data Analytics" tabindex="-1" required ><span class="wpforms-image-choices-label">Big Data Analytics</span></label></li><li class="choice-4 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8085-field_21_4" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/cloud-security.png" alt="Cloud Security" title="Cloud Security"></span><input type="radio" id="wpforms-8085-field_21_4" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Cloud Security" tabindex="-1" required ><span class="wpforms-image-choices-label">Cloud Security</span></label></li><li class="choice-5 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8085-field_21_5" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/data-science-ai-e1594278553510.png" alt="Data Science and AI" title="Data Science and AI"></span><input type="radio" id="wpforms-8085-field_21_5" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Data Science and AI" tabindex="-1" required ><span class="wpforms-image-choices-label">Data Science and AI</span></label></li><li class="choice-6 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8085-field_21_6" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/cloud-migration-e1594278582638.png" alt="Cloud Migration" title="Cloud Migration"></span><input type="radio" id="wpforms-8085-field_21_6" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Cloud Migration" tabindex="-1" required ><span class="wpforms-image-choices-label">Cloud Migration</span></label></li></ul></div><div id="wpforms-8085-field_23-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="23"><div class="wpforms-clear wpforms-pagebreak-left"><button class="wpforms-page-button wpforms-page-next" data-action="next" data-page="1" data-formid="8085">Next</button></div></div></div><div class="wpforms-page wpforms-page-2 last " style="display:none;"><div id="wpforms-8085-field_25-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="25"><div id="wpforms-8085-field_25"><div class="form-popup-header"> <img src="https://www.xenonstack.com/images/wednesday-digitally-transform-popup-img.png" /> <div> <h2>How can we get in Touch</h2> <p>Fill the form and we will revert back to you soon.<p></div> </div></div></div><div id="wpforms-8085-field_20-container" class="wpforms-field wpforms-field-name col-12 col-sm-12 col-md-12 form-group" data-field-id="20"><label class="wpforms-field-label" for="wpforms-8085-field_20">Name <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8085-field_20" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][20]" placeholder="Name" required></div><div id="wpforms-8085-field_2-container" class="wpforms-field wpforms-field-email col-12 col-sm-12 col-md-12 form-group" data-field-id="2"><label class="wpforms-field-label" for="wpforms-8085-field_2">Email <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-8085-field_2" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][2]" placeholder="Email" required></div><div id="wpforms-8085-field_3-container" class="wpforms-field wpforms-field-text col-12 col-sm-12 col-md-12 form-group" data-field-id="3"><label class="wpforms-field-label" for="wpforms-8085-field_3">Organization <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8085-field_3" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][3]" placeholder="Organization" required></div><div id="wpforms-8085-field_11-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="11"><div class="wpforms-clear wpforms-pagebreak-left"></div></div></div></div><div class="wpforms-field wpforms-field-hp"><label for="wpforms-8085-field-hp" class="wpforms-field-label">Website</label><input type="text" name="wpforms[hp]" id="wpforms-8085-field-hp" class="wpforms-field-medium"></div><input type="hidden" name="wpforms[recaptcha]" value=""><div class="wpforms-submit-container" style="display:none;"><input type="hidden" name="wpforms[id]" value="8085"><input type="hidden" name="wpforms[author]" value="3"><input type="hidden" name="wpforms[post_id]" value="2677"><button type="submit" name="wpforms[submit]" class="wpforms-submit om-trigger-conversion mon-btn" id="wpforms-submit-8085" value="wpforms-submit" aria-live="assertive" data-alt-text="Submitting..." data-submit-text="Submit">Submit</button></div></form></div> <!-- .wpforms-container -->
[wpforms id="8051"]
<div class="wpforms-container wpforms-container-full optin-monster-forms" id="wpforms-8051"><form id="wpforms-form-8051" class="wpforms-validate wpforms-form" data-formid="8051" method="post" enctype="multipart/form-data" action="/blog/domain-driven-testing/"><noscript class="wpforms-error-noscript">Please enable JavaScript in your browser to complete this form.</noscript><div class="wpforms-page-indicator progress" data-indicator="progress" data-indicator-color="#72b239" data-scroll="1"><span class="wpforms-page-indicator-page-title" ></span><span class="wpforms-page-indicator-page-title-sep" style="display:none;"> - </span><span class="wpforms-page-indicator-steps">Step <span class="wpforms-page-indicator-steps-current">1</span> of 2</span><div class="wpforms-page-indicator-page-progress-wrap"><div class="wpforms-page-indicator-page-progress" style="width:50%;background-color:#72b239;"></div></div></div><div class="wpforms-field-container"><div class="wpforms-page wpforms-page-1 "><div id="wpforms-8051-field_10-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="10"></div><div id="wpforms-8051-field_24-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="24"><div id="wpforms-8051-field_24"><div class="form-popup-header"> <h2>Build an AI-Driven Enterprise</h2> <p>unlock the potential of AI at scale</p> </div></div></div><div id="wpforms-8051-field_21-container" class="wpforms-field wpforms-field-radio custom-radio-btn-wrapper wpforms-list-3-columns" data-field-id="21"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-8051-field_21">Sevices <span class="wpforms-required-label">*</span></label><ul id="wpforms-8051-field_21" class="wpforms-field-required wpforms-image-choices wpforms-image-choices-modern"><li class="choice-1 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8051-field_21_1" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/privacy-preserving-ai.png" alt="Privacy-Preserving AI" title="Privacy-Preserving AI"></span><input type="radio" id="wpforms-8051-field_21_1" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Privacy-Preserving AI" tabindex="-1" required ><span class="wpforms-image-choices-label">Privacy-Preserving AI</span></label></li><li class="choice-2 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8051-field_21_2" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/conversation-ai-platform.png" alt="Conversation AI Platform" title="Conversation AI Platform"></span><input type="radio" id="wpforms-8051-field_21_2" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Conversation AI Platform" tabindex="-1" required ><span class="wpforms-image-choices-label">Conversation AI Platform</span></label></li><li class="choice-3 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8051-field_21_3" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/enterprise-ai-platform.png" alt="Enterprise AI Platform" title="Enterprise AI Platform"></span><input type="radio" id="wpforms-8051-field_21_3" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Enterprise AI Platform" tabindex="-1" required ><span class="wpforms-image-choices-label">Enterprise AI Platform</span></label></li><li class="choice-4 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8051-field_21_4" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/continuous-delivery-machine-learning.png" alt="Continuous Delivery for Machine learning" title="Continuous Delivery for Machine learning"></span><input type="radio" id="wpforms-8051-field_21_4" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Continuous Delivery for Machine learning" tabindex="-1" required ><span class="wpforms-image-choices-label">Continuous Delivery for Machine learning</span></label></li><li class="choice-5 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8051-field_21_5" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/federated-transfer-learning.png" alt="Federated and Transfer Learning" title="Federated and Transfer Learning"></span><input type="radio" id="wpforms-8051-field_21_5" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Federated and Transfer Learning" tabindex="-1" required ><span class="wpforms-image-choices-label">Federated and Transfer Learning</span></label></li><li class="choice-6 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-8051-field_21_6" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/explainable-artificial-intelligence.png" alt="Explainable Artificial Intelligence (XAI)" title="Explainable Artificial Intelligence (XAI)"></span><input type="radio" id="wpforms-8051-field_21_6" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Explainable Artificial Intelligence (XAI)" tabindex="-1" required ><span class="wpforms-image-choices-label">Explainable Artificial Intelligence (XAI)</span></label></li></ul></div><div id="wpforms-8051-field_23-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="23"><div class="wpforms-clear wpforms-pagebreak-left"><button class="wpforms-page-button wpforms-page-next" data-action="next" data-page="1" data-formid="8051">Next</button></div></div></div><div class="wpforms-page wpforms-page-2 last " style="display:none;"><div id="wpforms-8051-field_25-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="25"><div id="wpforms-8051-field_25"><div class="form-popup-header"> <h2>How can we get in Touch</h2> <p>Fill the form and we will revert back to you soon.<p> </div></div></div><div id="wpforms-8051-field_20-container" class="wpforms-field wpforms-field-name col-12 col-sm-12 col-md-12 form-group" data-field-id="20"><label class="wpforms-field-label" for="wpforms-8051-field_20">Name <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8051-field_20" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][20]" placeholder="Name" required></div><div id="wpforms-8051-field_2-container" class="wpforms-field wpforms-field-email col-12 col-sm-12 col-md-12 form-group" data-field-id="2"><label class="wpforms-field-label" for="wpforms-8051-field_2">Email <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-8051-field_2" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][2]" placeholder="Email" required></div><div id="wpforms-8051-field_3-container" class="wpforms-field wpforms-field-text col-12 col-sm-12 col-md-12 form-group" data-field-id="3"><label class="wpforms-field-label" for="wpforms-8051-field_3">Organization <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-8051-field_3" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][3]" placeholder="Organization" required></div><div id="wpforms-8051-field_11-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="11"><div class="wpforms-clear wpforms-pagebreak-left"></div></div></div></div><div class="wpforms-field wpforms-field-hp"><label for="wpforms-8051-field-hp" class="wpforms-field-label">Email</label><input type="text" name="wpforms[hp]" id="wpforms-8051-field-hp" class="wpforms-field-medium"></div><input type="hidden" name="wpforms[recaptcha]" value=""><div class="wpforms-submit-container" style="display:none;"><input type="hidden" name="wpforms[id]" value="8051"><input type="hidden" name="wpforms[author]" value="3"><input type="hidden" name="wpforms[post_id]" value="2677"><button type="submit" name="wpforms[submit]" class="wpforms-submit om-trigger-conversion mon-btn" id="wpforms-submit-8051" value="wpforms-submit" aria-live="assertive" data-alt-text="Submitting..." data-submit-text="Submit">Submit</button></div></form></div> <!-- .wpforms-container -->
[wpforms id="7646"]
<div class="wpforms-container wpforms-container-full optin-monster-forms" id="wpforms-7646"><form id="wpforms-form-7646" class="wpforms-validate wpforms-form" data-formid="7646" method="post" enctype="multipart/form-data" action="/blog/domain-driven-testing/"><noscript class="wpforms-error-noscript">Please enable JavaScript in your browser to complete this form.</noscript><div class="wpforms-page-indicator progress" data-indicator="progress" data-indicator-color="#72b239" data-scroll="1"><span class="wpforms-page-indicator-page-title" ></span><span class="wpforms-page-indicator-page-title-sep" style="display:none;"> - </span><span class="wpforms-page-indicator-steps">Step <span class="wpforms-page-indicator-steps-current">1</span> of 2</span><div class="wpforms-page-indicator-page-progress-wrap"><div class="wpforms-page-indicator-page-progress" style="width:50%;background-color:#72b239;"></div></div></div><div class="wpforms-field-container"><div class="wpforms-page wpforms-page-1 "><div id="wpforms-7646-field_10-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="10"></div><div id="wpforms-7646-field_24-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="24"><div id="wpforms-7646-field_24"><div class="form-popup-header"> <h2>Accelerate Digital Transformation with Intelligent Automation</h2> </div></div></div><div id="wpforms-7646-field_21-container" class="wpforms-field wpforms-field-radio custom-radio-btn-wrapper wpforms-list-2-columns" data-field-id="21"><label class="wpforms-field-label wpforms-label-hide" for="wpforms-7646-field_21">Sevices <span class="wpforms-required-label">*</span></label><ul id="wpforms-7646-field_21" class="wpforms-field-required wpforms-image-choices wpforms-image-choices-modern"><li class="choice-1 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-7646-field_21_1" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/real-time-data-analysis.png" alt="Real Time Data Analytics" title="Real Time Data Analytics"></span><input type="radio" id="wpforms-7646-field_21_1" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Real Time Data Analytics" tabindex="-1" required ><span class="wpforms-image-choices-label">Real Time Data Analytics</span></label></li><li class="choice-2 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-7646-field_21_2" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/data-visualization.png" alt="Interactive Data Visualisation" title="Interactive Data Visualisation"></span><input type="radio" id="wpforms-7646-field_21_2" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Interactive Data Visualisation" tabindex="-1" required ><span class="wpforms-image-choices-label">Interactive Data Visualisation</span></label></li><li class="choice-3 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-7646-field_21_3" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/application-modernisation.png" alt="Application Modernisation" title="Application Modernisation"></span><input type="radio" id="wpforms-7646-field_21_3" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Application Modernisation" tabindex="-1" required ><span class="wpforms-image-choices-label">Application Modernisation</span></label></li><li class="choice-4 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-7646-field_21_4" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/enterprise-ai.png" alt="Enterprise AI" title="Enterprise AI"></span><input type="radio" id="wpforms-7646-field_21_4" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Enterprise AI" tabindex="-1" required ><span class="wpforms-image-choices-label">Enterprise AI</span></label></li><li class="choice-5 depth-1 wpforms-image-choices-item"><label class="wpforms-field-label-inline" for="wpforms-7646-field_21_5" tabindex="0"><span class="wpforms-image-choices-image"><img src="https://www.xenonstack.com/wp-content/uploads/2020/07/intelligent-cognitive-automation.png" alt="Intelligent and Cognitive Automation" title="Intelligent and Cognitive Automation"></span><input type="radio" id="wpforms-7646-field_21_5" class="wpforms-screen-reader-element" name="wpforms[fields][21]" value="Intelligent and Cognitive Automation" tabindex="-1" required ><span class="wpforms-image-choices-label">Intelligent and Cognitive Automation</span></label></li></ul></div><div id="wpforms-7646-field_23-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="23"><div class="wpforms-clear wpforms-pagebreak-left"><button class="wpforms-page-button wpforms-page-next" data-action="next" data-page="1" data-formid="7646">Next</button></div></div></div><div class="wpforms-page wpforms-page-2 last " style="display:none;"><div id="wpforms-7646-field_25-container" class="wpforms-field wpforms-field-html form-popup-header-wrapper" data-field-id="25"><div id="wpforms-7646-field_25"><div class="form-popup-header"> <h2>How can we get in Touch</h2> <p>Fill the form and we will revert back to you soon.<p> </div></div></div><div id="wpforms-7646-field_20-container" class="wpforms-field wpforms-field-name col-12 col-sm-12 col-md-12 form-group" data-field-id="20"><label class="wpforms-field-label" for="wpforms-7646-field_20">Name <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-7646-field_20" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][20]" placeholder="Name" required></div><div id="wpforms-7646-field_2-container" class="wpforms-field wpforms-field-email col-12 col-sm-12 col-md-12 form-group" data-field-id="2"><label class="wpforms-field-label" for="wpforms-7646-field_2">Email <span class="wpforms-required-label">*</span></label><input type="email" id="wpforms-7646-field_2" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][2]" placeholder="Email" required></div><div id="wpforms-7646-field_3-container" class="wpforms-field wpforms-field-text col-12 col-sm-12 col-md-12 form-group" data-field-id="3"><label class="wpforms-field-label" for="wpforms-7646-field_3">Organization <span class="wpforms-required-label">*</span></label><input type="text" id="wpforms-7646-field_3" class="wpforms-field-large wpforms-field-required" name="wpforms[fields][3]" placeholder="Organization" required></div><div id="wpforms-7646-field_11-container" class="wpforms-field wpforms-field-pagebreak" data-field-id="11"><div class="wpforms-clear wpforms-pagebreak-left"></div></div></div></div><div class="wpforms-field wpforms-field-hp"><label for="wpforms-7646-field-hp" class="wpforms-field-label">Name</label><input type="text" name="wpforms[hp]" id="wpforms-7646-field-hp" class="wpforms-field-medium"></div><input type="hidden" name="wpforms[recaptcha]" value=""><div class="wpforms-submit-container" style="display:none;"><input type="hidden" name="wpforms[id]" value="7646"><input type="hidden" name="wpforms[author]" value="3"><input type="hidden" name="wpforms[post_id]" value="2677"><button type="submit" name="wpforms[submit]" class="wpforms-submit om-trigger-conversion mon-btn" id="wpforms-submit-7646" value="wpforms-submit" aria-live="assertive" data-alt-text="Submitting..." data-submit-text="Submit">Submit</button></div></form></div> <!-- .wpforms-container -->