Domain-Driven Design is not a new concept - it has been around since 2003 when Eric Evans published the "Blue Book". However, I did notice that there is not much material on the topic of testing within a DDD environment. This may be due to the fact that DDD is not some trendy hot fad, and from what I have noticed, there aren't that many companies using it. Using DDD for smaller projects, and projects where the business/domain logic is not overly complex is overkill - as DDD is meant to simplify a demanding project, on a small project applying DDD would have the opposite effect - it will just add more abstraction, which is not needed in this instance making a simple project a lot more complicated. Combined with the previously listed reasons, DDD shops usually use the TDD approach, so there is a lot of testing involved (especially automated testing) but it's done by the developers and not dedicated testers - and we all know that testers can talk on and on about testing, as that is our main focus.

All this lead me to do more research on this topic, as was working with DDD, as a new tester on the project, this relatively unexplored area appealed to me greatly. Domain-Driven Design is a very interesting approach to software design as it tackles some of the biggest pain points in software development, by making sure we have a clear and understandable requirement and by making the technical and the domain experts work closely together. So, let me share what I have observed and learned thus far!
The Benefits of Ubiquitous Language
Ubiquitous Language is a language-based around domain model and it is used by all the team members when discussing the domain. The purpose of the ubiquitous language is to make sure that everyone is on the same page - if everyone involved in the development of new software is using the same agreed-upon naming conventions it helps us avoid misconceptions, unclear requirements, and misunderstandings. By agreeing on the terminology which will be used we avoid a lot of back-and-forths and also restrict different interpretations of the domain logic - so we avoid situations where the domain experts want one thing to build, but the developers understand it in a different manner - saving us time in the long run by reducing the amount of re-work to a minimum. What does this mean in terms of testing? Many of us have probably faced situations where let's say the user story (or other form or requirement) uses one term and a different term is used in the application - the story might be referring to "accounts" but the applications ended up with the terms "companies" for the same thing, they are supposed to be synonymous in this situations, but this can create confusion and uncertainty and the Ubiquitous Language servers to prevent things like this from happening. Another benefit of using the Ubiquitous Language is that it can serve as a foundation for developing a DSL (Domain Specific Language). A DSL is a language built on top of a general-purpose language (such as C#, Java, etc.) and it has a narrow focus particular to its domain, the benefit of a DSL in testing is that it can be used like a low-code scripting language by the less-technical members of the team, as the technical details are abstracted away and the what's on the surface uses terminology that is already known to the domain experts. In summary, communication is essential for DDT to be successful.

Understanding the Bounded Context of your Application
For complex systems segregating different segments of the domain helps us understand it better, it helps with design and maintenance as well. Bounded Context is a way of separating parts of your app into logical units, this is especially applicable when using a microservices architecture. Let us assume that you have a large app with many different functionalities, and you have to test the whole app. It's logical to assume that you would split the tests into different logical groups or modules and that is where understanding of bounded context can help. Works really well for exploratory testing sessions, where you can narrow down your focus, per session and dedicate your attention to exploring one functionality at a time.

Summary
- Based on the established ubiquitous language you can build your own DSL (domain-specific language), for example, to use in test automation to make it more accessible to less technical users, and also make it more focused on your product.
- Communication is of paramount importance for DDD testing since Domain-Driven Design puts a large emphasis on this as well - by having domain experts work closely with the technical experts to establish a common language - the ubiquitous language, which serves as a shared language and it's helpful in establishing clear requirement
- As DDD puts a large emphasis on clean code, using smart software architecture and TDD practices, the applications built using it are usually more stable and more testable.
This is a post I've started writing quite some time ago, and finally returned to finish it - there might be another one on the same topic soon. Thanks for taking the time to read the post, I hope it was useful to you!
Thanks a lot, I'll check out your site!
ReplyDeleteSociete nettoyage I am very impressed with your post because this post is very beneficial for me and provide a new knowledge to me.
ReplyDeleteMacrochallenges believe that “MENTORING” is the key to business success. According to them, mentoring is viewed as an additional component in every successful business. Many people are unaware of its significance, and as a result, they miss out on opportunities to expand their enterprises and move them to the next level.
ReplyDeletexcellent information provided by you through this post. I follow all the mentioned information.If you are looking for Interview Questions and answers website then you can visit Just Crack Interview, here you will find interview questions and answers for developer, software engineer, bankers etc.
ReplyDeleteGreat Post. Very informative. Keep Sharing!!
ReplyDeleteApply Now for PHP Training Classes in Noida
For more details about the course fee, duration, classes, certification, and placement call our expert at 70-70-90-50-90
Hello everyone,
ReplyDeleteThis blog is related to web design company, and graphic design. So I requested to people visit there.
Thank you for sharing.
MJ Square
MJ Square Designs
Web Design Company in Melbourne
Web Development Company, Melbourne
Digital Marketing Company, Melbourne
Graphic Design Company Melbourne
MJ Square Design
Brochure Design Company, Melbourne
Logo designer Melbourne
Great! I read your blog first time and this is amazing blog. If you want to learn more; vist the Best Full Stack Development Training Course in Delhi, It will upgrade your skills.
ReplyDeleteNice Article! Thanks for sharing such amazing information. I read your maximum blog all are fabulous great stuff and amount of content.
ReplyDeleteMagento 2 certified company in chennai
Magento 2 certified professional developer
Magento 2 certified developer in chennai
Magento 2 certified developer in bangalore
Magento 2 certified developer in india
Magento 2 certified expert in chennai
Magento 2 certified expert in india
Magento 2 Development Company in chennai
Best Magento development company chennai
Magento development company in chennai
Magento 2 development company in bangalore
Magento 2 development company in india
Magento 2 web development company in bangalore
Magento 2 e commerce development company
Magento 2 development company coimbatore
Magento 2 web development in chennai
Magento 2 developers india
Magento 2 development services india
Magento 2 ecommerce development india
Magento 2 web development company india
Magento 2 development agency india
Magento 2 development company in india
Magento 2 web design company in india
power Bi Training
ReplyDeletepower bi Online Training
power bi Online Training in bangalore
power bi Training institute in Marathahalli
power bi Training in bangalore
power bi Training Classes
power bi Training in Marathahalli
power bi Training institute in bangalore
power bi Course in bangalore
power bi Training Online
Magento Development Company
ReplyDeleteLook no further than Melbourne Web Solutions, your trusted partner for innovative and captivating web design in the heart of Melbourne. At Melbourne Web Solutions, we understand that a well-crafted website is more than just a digital presence; it's your brand's digital handshake, an interactive gateway to your business. With years of experience and a dedicated team of talented designers and developers, we offer a comprehensive suite of web design services tailored to your unique needs. Unlock the full potential of your online presence with our web solutions company. From captivating web design to seamless web development, we have you covered. Supercharge your marketing efforts with our strategic solutions and skyrocket your visibility with top-notch SEO services. Let us help you leave a lasting digital footprint that sets you apart from the competition. Web Design Company in Gold Coast
ReplyDeleteWeb Designing Company in Melbourne
Web Design Company in Melbourne
Web Development in Melbourne
Website Designing in Melbourne
Digital Marketing in Melbourne
Web Designing Company in Melbourne
ReplyDeleteWelcome to Web Designing Company in Melbourne, a leading web designing company based in the vibrant city of Melbourne. At Web Designing Company in Melbourne, we specialize in creating exceptional digital experiences that enable businesses to thrive in the online world. With a talented team of designers, developers, and digital strategists, we are dedicated to delivering high-quality web solutions tailored to our clients' unique needs. Our journey is one of passion, innovation, and commitment to transforming your online presence into a digital masterpiece.
Welcome to Melbourne's premier web designing company, where creativity, innovation, and cutting-edge technology converge to create stunning online experiences. At our web design agency, we are passionate about crafting digital excellence, helping businesses establish a strong online presence and reach their full potential. With a team of talented designers and developers, we offer a comprehensive range of web design services, ensuring your website is not just visually appealing but also highly functional and user-friendly
Web Development in Melbourne
Website Designing in Melbourne
Digital Marketing in Melbourne
Web Designing Company in Melbourne
ReplyDeleteWelcome to Melbourne's premier web designing company, where innovation meets aesthetics to redefine your online presence. At our cutting-edge web design firm, we are committed to crafting visually stunning and functionally robust websites that not only captivate your audience but also drive tangible results for your business.Our team of highly skilled and creative web designers in Melbourne is dedicated to pushing the boundaries of digital design. We understand that your website is often the first point of contact between your brand and potential customers. Therefore, we strive to create immersive online experiences that leave a lasting impression.
Web Design Company in Melbourne
Web Development in Melbourne
Website Designing in Melbourne
Digital Marketing in Melbourne
Web Designing Company in Melbourne
ReplyDeleteWelcome to Melbourne's premier web designing company, where innovation meets aesthetics to redefine your online presence. At our cutting-edge web design firm, we are committed to crafting visually stunning and functionally robust websites that not only captivate your audience but also drive tangible results for your business.Our team of highly skilled and creative web designers in Melbourne is dedicated to pushing the boundaries of digital design. We understand that your website is often the first point of contact between your brand and potential customers. Therefore, we strive to create immersive online experiences that leave a lasting impression.
Web Design Company in Melbourne
Web Development in Melbourne
Website Designing in Melbourne
Digital Marketing in Melbourne
Web Designing Company in Melbourne
ReplyDeleteWelcome to Melbourne's premier web designing company, where innovation meets aesthetics to redefine your online presence. At our cutting-edge web design firm, we are committed to crafting visually stunning and functionally robust websites that not only captivate your audience but also drive tangible results for your business.Our team of highly skilled and creative web designers in Melbourne is dedicated to pushing the boundaries of digital design. We understand that your website is often the first point of contact between your brand and potential customers. Therefore, we strive to create immersive online experiences that leave a lasting impression.
Web Design Company in Melbourne
Web Development in Melbourne
Website Designing in Melbourne
Digital Marketing in Melbourne
Respect and I have a swell present: House Renovation What Order house remodel cost
ReplyDeleteThanks and that i have a keen present: House Renovation Designer Near Me 1960 bungalow exterior makeover
ReplyDelete