{"id":4339,"date":"2017-03-29T17:00:08","date_gmt":"2017-03-29T17:00:08","guid":{"rendered":"https:\/\/www.ckl.io\/?p=4339"},"modified":"2022-09-21T18:19:14","modified_gmt":"2022-09-21T18:19:14","slug":"tdd-mobile-dev-matter-timing","status":"publish","type":"post","link":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/","title":{"rendered":"TDD on mobile dev, a matter of timing"},"content":{"rendered":"\n<p>When we start the development of a product, there is always a desire to make it as perfect as possible: fulfilling the client&#8217;s expectations, offering a good learning opportunity to the developer, and delivering a system with high maintainability and scalability.<\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">As the code base grows, keeping it problem-free becomes a harder challenge. Testing manually each module of the application can take so much time that developers may become unproductive.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">To solve this issue, automatic test technologies have evolved a lot.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">They&#8230; well\u2026 run automatically. Tests are an additional set of software that developers write to test its own code and ensure the expected outcome.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">If you do a quick research about software testing, you may face some recurrent terms like <\/span><i><span style=\"font-weight: 400;\">unit tests, integration tests, TDD (Test Driven Development) <\/span><\/i><span style=\"font-weight: 400;\">and <\/span><i><span style=\"font-weight: 400;\">BDD (Behavior Driven Development).<\/span><\/i><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">The first two are types of tests while the others are software development processes. Let\u2019s go through these concepts for those who are not familiar with them.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\"><strong>Unit Tests<\/strong><\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">It is a type of automatic test focused on small units or pieces of software, like a method, subroutine or small snippets of code. <\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">As very specific tests, usually they are simpler, quicker, and don\u2019t take too much time to be written. Another important aspect is that each test must be individual \u2013 testing only one thing at a time.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\"><strong>Integration Tests<\/strong><\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">When creating a big software project, it\u2019s only natural to split it into modules\/submodules. These components must be able to communicate with each other, that is, they must be integrated.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">To ensure that the integration is working properly, automated tests may be written.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">These kinds of tests allow developers to find problems in more complex structures, where a simple unit test may not be enough.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is <span style=\"font-weight: 400;\"><strong>Test Driven Development<\/strong><\/span>?<\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">TDD is a process where a test is developed to set a <\/span><i><span style=\"font-weight: 400;\">definition of done <\/span><\/i><span style=\"font-weight: 400;\">before the actual code implementation.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">One important thing to keep in mind is that TDD is built upon unit tests, but doing unit tests is not the same as having development driven by tests.<\/span><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/TDD-e1492712699769.png\" alt=\"TDD\" class=\"wp-image-4340\" width=\"400\" height=\"400\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/TDD-e1492712699769.png 800w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/TDD-e1492712699769-300x300.png 300w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/TDD-e1492712699769-768x768.png 768w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/figure>\n<\/div>\n\n\n<p><span style=\"font-weight: 400;\">It consists of three basic steps (Red-Green-Refactor cycle):<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><b>Write a test that will fail<\/b><span style=\"font-weight: 400;\">: this should happen because the actual implementation code has not yet been created;<\/span><\/li><li><b>Code just the bare minimum to pass the test<\/b><span style=\"font-weight: 400;\">: this will keep the developer focused and provide clarity on what should be implemented;<\/span><\/li><li><b>Refactor the code<\/b><span style=\"font-weight: 400;\">: improve performance and readability. The new code must not fail the test.<\/span><\/li><\/ol>\n\n\n\n<p><span style=\"font-weight: 400;\">This is why it is called TDD: because the test drives the development, not the other way around. This has a dramatic impact on how the software is crafted.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/cheesecakelabs.com\/blog\/behavior-driven-development-bdd\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\"><strong>Behavior Driven Development<\/strong><\/span><\/a><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">BDD means to have tests describing behavior that the user can expect from the system. It emerged from TDD and is an extension of it, in the sense that development is driven by behavioral tests.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">It uses natural language constructs (English-like sentences) to express the desired behavior and expected outcomes.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">It consists of three sections:<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li style=\"font-weight: 400;\"><b>Context<\/b><span style=\"font-weight: 400;\">: the initial state<\/span><\/li><li style=\"font-weight: 400;\"><b>Event<\/b><span style=\"font-weight: 400;\">: some action that the user performs<\/span><\/li><li style=\"font-weight: 400;\"><b>Outcomes<\/b><span style=\"font-weight: 400;\">: expected results<\/span><\/li><\/ol>\n\n\n\n<p><span style=\"font-weight: 400;\">Let&#8217;s see a brief example to clarify these concepts:<\/span><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"419\" height=\"154\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/bdd_example.png\" alt=\"bdd_example\" class=\"wp-image-4357\"\/><\/figure>\n<\/div>\n\n\n<p><span style=\"font-weight: 400;\">These tests may be written before, during, or after creating the implementation code. When before, they guide the development, leading us to BDD.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Benefits of Tests<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Among many of the benefits offered by a good suite of tests, we may cite:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li style=\"font-weight: 400;\"><a href=\"https:\/\/cheesecakelabs.com\/blog\/quality-assurance\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Quality assurance;<\/span><\/a><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">A clearer and simpler code base;<\/span><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Reduces the chances of breaking the application when you add a new feature or make a modification (regression);<\/span><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Progress tracking;<\/span><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Reduce time spent on fixes;<\/span><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Encourages the creation of enhancements on the current code base.<\/span><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\"><strong>Drawbacks of Tests<\/strong><\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">If there are so many benefits associated with developing a suite of tests, why are not all developers doing it?<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Here are some of the reasons:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><b>Increase in<\/b> the development time: as most development companies charge by the hour, the initial project cost will also increase as a consequence;<\/li><li><strong>Additional complexity: <\/strong>writing tests is not the same as writing good tests, and creating good tests can be really challenging sometimes;<\/li><li><strong>Many developers are not used to writing<b> <\/b><\/strong><b>tests<\/b><span style=\"font-weight: 400;\">: it may be intimidating if they have to learn by themselves;<\/span><\/li><li><span style=\"font-weight: 400;\">It&#8217;s hard to test legacy code;<\/span><\/li><li><span style=\"font-weight: 400;\">It&#8217;s difficult to maintain the test suite if the requirements of the project are not clear and keep changing.<\/span><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\"><strong>When should you use (or not) tests<\/strong><\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Each company and each product are unique, so there is no magic formula to tell you if or when you should be writing tests.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">However, there are some points to take into consideration:<\/span><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"625\" height=\"184\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/when_use_tests-e1492712640318.png\" alt=\"when_use_tests\" class=\"wp-image-4356\"\/><\/figure>\n<\/div>\n\n\n<p>Mostly of early-stage startups have a low budget, want to enter the market, have a small dev team, and have no idea what the final product will require.<\/p>\n\n\n\n<p>They want to reach the clients as soon as possible, spending the minimum to validate the product.<\/p>\n\n\n\n<p>This leads to a situation where you should focus on getting the features ready and iterating on them quickly with real users, so spending many resources on tests (to features that might be ruled off soon) might not be the most cost-effective approach.<\/p>\n\n\n\n<p>The initial costs and time of using a TDD or BDD approach are higher, but they usually pay off in the long run. It will reduce both the total time of development and the time wasted with fixes and bug tracking.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1000\" height=\"365\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/tdd_charts-e1492712668663.png\" alt=\"tdd_charts\" class=\"wp-image-4346\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/tdd_charts-e1492712668663.png 1000w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/tdd_charts-e1492712668663-768x280.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n<\/div>\n\n\n<p><span style=\"font-weight: 400;\">On the other hand, there\u2019s a point where the application will grow so large that keeping a no-test approach becomes cumbersome.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">When having too many moving parts, even a slight change on the app might crash the system, demanding huge amounts of refactoring.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">At this stage, the company usually has more resources, so investing time (and money) in testing becomes the more efficient and profitable approach. Therefore, it is necessary to reevaluate from time to time what stage your business is at.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\"><strong>Wrapping up<\/strong><\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Antonio Duarte, the Cheesecake Labs VP of Customer Success, shares his thoughts about when is the right time to start testing your app from a business perspective:<\/span><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><span style=\"font-weight: 400;\">&#8220;Ideally you should test everything. But we&#8217;re not in an ideal world. When starting a brand new MVP app, tests aren&#8217;t the most important layer, since you are still validating if the features that you planned make sense or not. Although tests can become very straightforward for an experienced developer, they still represent part of the development time and cost of the product. <\/span><\/p><p><span style=\"font-weight: 400;\">When the launch date comes and the product starts getting public feedbacks, the team will be able to evaluate the right features that potentially need another level of robustness and then be covered with tests, so you won&#8217;t expend time testing features that will be soon removed, investing time and budget on new ideas or into other relevant features. In the case where the product is already validated and the company will rebuild it to achieve a better level of performance or redesign, then start testing from the beginning is a smart decision.&#8221;<\/span><\/p><\/blockquote>\n\n\n\n<p><span style=\"font-weight: 400;\">Using TDD, BDD, or even just writing unit tests for your project has many benefits and pays off in the long run.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">But one should evaluate the stage of the product: you won&#8217;t always have time or money to invest and do everything perfectly, sometimes it is more important just having something done to enter the market and validate your product.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Here at Cheesecake Labs, we do our best to write a good test suite when the right moment comes.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When we start the development of a product, there is always a desire to make it as perfect as possible: fulfilling the client&#8217;s expectations, offering a good learning opportunity to the developer, and delivering a system with high maintainability and scalability. As the code base grows, keeping it problem-free becomes a harder challenge. Testing manually [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":4361,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[432,7],"tags":[305,15],"class_list":["post-4339","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","category-opinion","tag-tag-development","tag-tag-mobile"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TDD on mobile dev, a matter of timing<\/title>\n<meta name=\"description\" content=\"Having tests for your project has many benefits and pays off in the long run, but one should evaluate the need for them based on the stage of the product.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TDD on mobile dev, a matter of timing\" \/>\n<meta property=\"og:description\" content=\"Having tests for your project has many benefits and pays off in the long run, but one should evaluate the need for them based on the stage of the product.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\" \/>\n<meta property=\"og:site_name\" content=\"Cheesecake Labs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cheesecakelabs\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-29T17:00:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-21T18:19:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cheesecake Labs\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:site\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\"},\"author\":{\"name\":\"Andrio Frizon\"},\"headline\":\"TDD on mobile dev, a matter of timing\",\"datePublished\":\"2017-03-29T17:00:08+00:00\",\"dateModified\":\"2022-09-21T18:19:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\"},\"wordCount\":1256,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png\",\"keywords\":[\"development\",\"Mobile\"],\"articleSection\":[\"Engineering\",\"Opinion\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\",\"name\":\"TDD on mobile dev, a matter of timing\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png\",\"datePublished\":\"2017-03-29T17:00:08+00:00\",\"dateModified\":\"2022-09-21T18:19:14+00:00\",\"author\":{\"@type\":\"person\",\"name\":\"Andrio Frizon\"},\"description\":\"Having tests for your project has many benefits and pays off in the long run, but one should evaluate the need for them based on the stage of the product.\",\"breadcrumb\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png\",\"width\":2000,\"height\":720,\"caption\":\"A mobile phone on the space with a TDD red-green-refactor cyle\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cheesecakelabs.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TDD on mobile dev, a matter of timing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#website\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/\",\"name\":\"Cheesecake Labs\",\"description\":\"Nearshore outsourcing company for Web and Mobile design and engineering services, and staff augmentation for startups and enterprises..\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cheesecakelabs.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"name\":\"Andrio Frizon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2016\/11\/andrio-300x300.jpg\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2016\/11\/andrio-300x300.jpg\",\"caption\":\"Andrio Frizon\"},\"description\":\"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/autor\/andrio\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TDD on mobile dev, a matter of timing","description":"Having tests for your project has many benefits and pays off in the long run, but one should evaluate the need for them based on the stage of the product.","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:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/","og_locale":"en_US","og_type":"article","og_title":"TDD on mobile dev, a matter of timing","og_description":"Having tests for your project has many benefits and pays off in the long run, but one should evaluate the need for them based on the stage of the product.","og_url":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/","og_site_name":"Cheesecake Labs","article_publisher":"https:\/\/www.facebook.com\/cheesecakelabs","article_published_time":"2017-03-29T17:00:08+00:00","article_modified_time":"2022-09-21T18:19:14+00:00","og_image":[{"width":2000,"height":720,"url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png","type":"image\/png"}],"author":"Cheesecake Labs","twitter_card":"summary_large_image","twitter_creator":"@cheesecakelabs","twitter_site":"@cheesecakelabs","twitter_misc":{"Written by":null,"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#article","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/"},"author":{"name":"Andrio Frizon"},"headline":"TDD on mobile dev, a matter of timing","datePublished":"2017-03-29T17:00:08+00:00","dateModified":"2022-09-21T18:19:14+00:00","mainEntityOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/"},"wordCount":1256,"commentCount":0,"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png","keywords":["development","Mobile"],"articleSection":["Engineering","Opinion"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/","url":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/","name":"TDD on mobile dev, a matter of timing","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage"},"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png","datePublished":"2017-03-29T17:00:08+00:00","dateModified":"2022-09-21T18:19:14+00:00","author":{"@type":"person","name":"Andrio Frizon"},"description":"Having tests for your project has many benefits and pays off in the long run, but one should evaluate the need for them based on the stage of the product.","breadcrumb":{"@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#primaryimage","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/03\/Banner_testdriven.png","width":2000,"height":720,"caption":"A mobile phone on the space with a TDD red-green-refactor cyle"},{"@type":"BreadcrumbList","@id":"https:\/\/cheesecakelabs.com\/blog\/tdd-mobile-dev-matter-timing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cheesecakelabs.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TDD on mobile dev, a matter of timing"}]},{"@type":"WebSite","@id":"https:\/\/cheesecakelabs.com\/blog\/#website","url":"https:\/\/cheesecakelabs.com\/blog\/","name":"Cheesecake Labs","description":"Nearshore outsourcing company for Web and Mobile design and engineering services, and staff augmentation for startups and enterprises..","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cheesecakelabs.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","name":"Andrio Frizon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cheesecakelabs.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2016\/11\/andrio-300x300.jpg","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2016\/11\/andrio-300x300.jpg","caption":"Andrio Frizon"},"description":"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.","url":"https:\/\/cheesecakelabs.com\/blog\/autor\/andrio\/"}]}},"_links":{"self":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/4339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/comments?post=4339"}],"version-history":[{"count":2,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/4339\/revisions"}],"predecessor-version":[{"id":10841,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/posts\/4339\/revisions\/10841"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/media\/4361"}],"wp:attachment":[{"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/media?parent=4339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/categories?post=4339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/wp-json\/wp\/v2\/tags?post=4339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}