{"id":510,"date":"2016-08-25T11:36:44","date_gmt":"2016-08-25T09:36:44","guid":{"rendered":"https:\/\/zaven.co\/blog\/?p=510"},"modified":"2025-04-08T19:55:19","modified_gmt":"2025-04-08T17:55:19","slug":"test-driven-development-agile-plm","status":"publish","type":"post","link":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/","title":{"rendered":"Test-driven development in Agile PLM: an experimental test"},"content":{"rendered":"<p>One of many reasons for Test-driven development is the mere speed of testing: with automation I\u2019ve managed to increase app testing speeds 5-fold.<br \/>\n<!--more--><\/p>\n<p>More and more software development processes are run with lean methodologies. However, application testing is very often neglected in order to reduce initial costs and time. In this article I want to present the results of my experiment which is a proof that using Test-driven development doesn\u2019t only pay off, but it also significantly enhances the quality of an app.<\/p>\n<h2>What is Test-driven development?<\/h2>\n<p>Before I describe the process of my experiment let\u2019s highlight the most important steps of Test-driven development:<\/p>\n<ol>\n<li>Analyzing possible user actions and implemented data<\/li>\n<li>Writing up potential scenarios and test data<\/li>\n<li>Creating a software pieces and testing it<\/li>\n<\/ol>\n<p>If the app we are making is complex, working with TDD may&nbsp;initially extend the time needed for a test. But what can we gain instead?<\/p>\n<h2>Test-driven development in Agile PLM<\/h2>\n<p>Combined with Agile methodology, TDD controls code quality and app security. Thanks to problem analysis and mocking up input data (correct and faulty examples as well) we can foresee a lot of potential scenarios. Then we can detect weaknesses and properly secure them at the very beginning. If you\u2019d like to learn more about TDD, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Test-driven_development\" target=\"_blank\" rel=\"noopener, nofollow noopener noreferrer\">this<\/a> Wikipedia article covers it very well.<\/p>\n<p>In <em>Agile lifecycle managemen<\/em>t, the team is working in a time-sensitive environment. And no matter how experienced developers are, they are prone to making mistakes when under pressure, especially faulty assumptions about data input or user behaviour.<\/p>\n<div id=\"attachment_512\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/2e241cbbfa40b515d22f0718ddaab4f25631dfed32a8c3e571ae5a5533e92406.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-512\" class=\"wp-image-512 size-full\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/2e241cbbfa40b515d22f0718ddaab4f25631dfed32a8c3e571ae5a5533e92406.jpg\" alt=\"Test-driven development\"  ><\/a><p id=\"caption-attachment-512\" class=\"wp-caption-text\">Source: s2.quickmeme.com<\/p><\/div>\n<p><b>Without automated tests, a developer must manually repeat the same steps over and over<\/b>. He has to input the same data several times to check the correctness of a code action. It takes a lot of time, especially when the app is quite complex.<\/p>\n<h2>Test-driven development by example<\/h2>\n<p>For this article I\u2019ve developed a mobile app which verifies a personal details form. To make the verification process more difficult, I\u2019ve made a few extra conditions. For example, a surname must:<\/p>\n<ul>\n<li>Be single\/one-word<\/li>\n<li>Consist of a-z characters<\/li>\n<li>Start with a capital letter<\/li>\n<li>Include at least 5 characters<\/li>\n<\/ul>\n<h3>Manual<b> tests <\/b><\/h3>\n<p>Even though the number of conditions was so little, testing the correctness of the validator was difficult and it took about 20-30 minutes for the following: reinstall the app, input data and save the results. When it turned out that some conditions have to be changed, all the manual tests had to be retaken. <b>As a result, the testing time of such a simple feature was extended to 2 hours.&nbsp;<\/b><\/p>\n<h3>Test-driven development<\/h3>\n<p>I created the same app but this time in accordance with TDD guidelines. To make this experiment more credible, the time lag between these two attempts lasted about 2 weeks. I familiarized myself with all the requirements and started mocking up the test data (correct and incorrect examples). It took me about 15 minutes. In the beginning it was going smoothly, later I\u2019ve turned to more fancy scenarios.<\/p>\n<p>Having the data list at hand, I\u2019ve created a project and wrote up unit tests. It took me around 15 minutes. Next, I started writing a code. Seeing the test data, I knew which cases I\u2019d have to prepare my code for. Testing all data scenarios took less than a minute! If one of the tests failed, I implemented changes and with only one click restarted the whole process. <b>Altogether, it took me about 10 minutes to test the code.<\/b><\/p>\n<div id=\"attachment_531\" style=\"width: 740px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/wykres-poprawiony.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-531\" class=\"wp-image-531 size-medium\" src=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/wykres-poprawiony-730x390.png\" alt=\"Test-driven development\"   srcset=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/wykres-poprawiony-730x390.png 730w, https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/wykres-poprawiony.png 1053w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/a><p id=\"caption-attachment-531\" class=\"wp-caption-text\">Time required for manual and automated testing<\/p><\/div>\n<p>Summing up, app verification with Test-driven development lasted 5 time shorter than with manual test.&nbsp;I could now spend the saved time programming new features or fixing bugs. Most importantly, we created a working app which is less vulnerable to user errors.<\/p>\n<h2>Conclusion<\/h2>\n<p>If you work in web or mobile app development, <b>and you practice<\/b> <strong>Agile PLM<\/strong><b>, you should consider using<\/b> <strong>Test-driven Development<\/strong>. You can save time to do tests or create features, and your dev team will gain a better understanding of the code. Change management will be less of a hassle, which will keep your costs low and reduce the number of unexpected situations.<\/p>\n<p>Check out other&nbsp;<a href=\"https:\/\/zaven.co\/blog\/category\/agile-methodology\/\" target=\"_blank\" rel=\"noopener noreferrer\">agile methodology<\/a> related articles on our blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One of many reasons for Test-driven development is the mere speed of testing: with automation I\u2019ve managed to increase app testing speeds 5-fold.<\/p>\n","protected":false},"author":2,"featured_media":520,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,56,57],"tags":[13,45,43,44,46],"class_list":["post-510","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile-methodology","category-android-development","category-ios-development","tag-agile-plm","tag-software-development","tag-tdd","tag-test","tag-test-driven-development-steps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Agile PLM software. Experiment-driven development | Zaven Blog<\/title>\n<meta name=\"description\" content=\"One of many reasons for Test-driven development is the mere speed of testing: I\u2019ve managed to increase app testing speeds 5-fold. Chcek now how to do it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Agile PLM software. Experiment-driven development | Zaven Blog\" \/>\n<meta property=\"og:description\" content=\"One of many reasons for Test-driven development is the mere speed of testing: I\u2019ve managed to increase app testing speeds 5-fold. Chcek now how to do it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/\" \/>\n<meta property=\"og:site_name\" content=\"Zaven Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-25T09:36:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-08T17:55:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2449\" \/>\n\t<meta property=\"og:image:height\" content=\"981\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kacper Obrzut\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kacper Obrzut\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/\",\"url\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/\",\"name\":\"Agile PLM software. Experiment-driven development | Zaven Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zaven.co\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg\",\"datePublished\":\"2016-08-25T09:36:44+00:00\",\"dateModified\":\"2025-04-08T17:55:19+00:00\",\"author\":{\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/093c060ae5dba633f8c38292aa493187\"},\"description\":\"One of many reasons for Test-driven development is the mere speed of testing: I\u2019ve managed to increase app testing speeds 5-fold. Chcek now how to do it.\",\"breadcrumb\":{\"@id\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#primaryimage\",\"url\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg\",\"contentUrl\":\"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg\",\"width\":2449,\"height\":981,\"caption\":\"test driven development by example\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zaven.co\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Test-driven development in Agile PLM: an experimental test\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zaven.co\/blog\/#website\",\"url\":\"https:\/\/zaven.co\/blog\/\",\"name\":\"Zaven Blog\",\"description\":\"Software development blog. Generative AI, web &amp; mobile applications.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zaven.co\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/093c060ae5dba633f8c38292aa493187\",\"name\":\"Kacper Obrzut\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zaven.co\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2c55400236129218a24650fa620e9d91?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2c55400236129218a24650fa620e9d91?s=96&d=mm&r=g\",\"caption\":\"Kacper Obrzut\"},\"description\":\"Kacper is our lead Full-stack Developer and an incurable optimist. At Zaven he constantly works hard to create engaging, useful and user-friendly apps. In his spare time, he devotes himself to his three passions: hiking, photography and UX-oriented IT development.\",\"sameAs\":[\"https:\/\/pl.linkedin.com\/in\/kacperobrzut\"],\"url\":\"https:\/\/zaven.co\/blog\/author\/kobrzut\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Agile PLM software. Experiment-driven development | Zaven Blog","description":"One of many reasons for Test-driven development is the mere speed of testing: I\u2019ve managed to increase app testing speeds 5-fold. Chcek now how to do it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/","og_locale":"en_US","og_type":"article","og_title":"Agile PLM software. Experiment-driven development | Zaven Blog","og_description":"One of many reasons for Test-driven development is the mere speed of testing: I\u2019ve managed to increase app testing speeds 5-fold. Chcek now how to do it.","og_url":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/","og_site_name":"Zaven Blog","article_published_time":"2016-08-25T09:36:44+00:00","article_modified_time":"2025-04-08T17:55:19+00:00","og_image":[{"width":2449,"height":981,"url":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg","type":"image\/jpeg"}],"author":"Kacper Obrzut","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kacper Obrzut","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/","url":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/","name":"Agile PLM software. Experiment-driven development | Zaven Blog","isPartOf":{"@id":"https:\/\/zaven.co\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#primaryimage"},"image":{"@id":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#primaryimage"},"thumbnailUrl":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg","datePublished":"2016-08-25T09:36:44+00:00","dateModified":"2025-04-08T17:55:19+00:00","author":{"@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/093c060ae5dba633f8c38292aa493187"},"description":"One of many reasons for Test-driven development is the mere speed of testing: I\u2019ve managed to increase app testing speeds 5-fold. Chcek now how to do it.","breadcrumb":{"@id":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#primaryimage","url":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg","contentUrl":"https:\/\/zaven.co\/blog\/wp-content\/uploads\/2016\/08\/probowki_1-1.jpg","width":2449,"height":981,"caption":"test driven development by example"},{"@type":"BreadcrumbList","@id":"https:\/\/zaven.co\/blog\/test-driven-development-agile-plm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zaven.co\/blog\/"},{"@type":"ListItem","position":2,"name":"Test-driven development in Agile PLM: an experimental test"}]},{"@type":"WebSite","@id":"https:\/\/zaven.co\/blog\/#website","url":"https:\/\/zaven.co\/blog\/","name":"Zaven Blog","description":"Software development blog. Generative AI, web &amp; mobile applications.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zaven.co\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/093c060ae5dba633f8c38292aa493187","name":"Kacper Obrzut","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zaven.co\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2c55400236129218a24650fa620e9d91?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2c55400236129218a24650fa620e9d91?s=96&d=mm&r=g","caption":"Kacper Obrzut"},"description":"Kacper is our lead Full-stack Developer and an incurable optimist. At Zaven he constantly works hard to create engaging, useful and user-friendly apps. In his spare time, he devotes himself to his three passions: hiking, photography and UX-oriented IT development.","sameAs":["https:\/\/pl.linkedin.com\/in\/kacperobrzut"],"url":"https:\/\/zaven.co\/blog\/author\/kobrzut\/"}]}},"_links":{"self":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/comments?post=510"}],"version-history":[{"count":15,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/510\/revisions"}],"predecessor-version":[{"id":69933,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/posts\/510\/revisions\/69933"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/media\/520"}],"wp:attachment":[{"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/media?parent=510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/categories?post=510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zaven.co\/blog\/wp-json\/wp\/v2\/tags?post=510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}