<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Test-Driven Development &#8211; CS@Worcester</title>
	<atom:link href="https://cs.worcester.edu/category/test-driven-development/feed/" rel="self" type="application/rss+xml" />
	<link>https://cs.worcester.edu</link>
	<description>Worcester State University Computer Science Department</description>
	<lastBuildDate>Thu, 28 Mar 2024 11:20:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
<site xmlns="com-wordpress:feed-additions:1">236835116</site>	<item>
		<title>A Look at Test-Driven Development &#038; Benefits</title>
		<link>https://csworcester0.wordpress.com/2024/03/28/a-look-at-test-driven-development-benefits/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Thu, 28 Mar 2024 11:20:17 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Test-Driven Development]]></category>
		<category><![CDATA[Week 11]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=91</guid>

					<description><![CDATA[Since just before Spring Break, in CS443 – Software Quality Assurance and Testing we have transitioned on from boundary/equivalence class analysis and onto Test-Driven Development as a strategy as well as implementation. For me, this is a huge relief and joy to get back to working on actual code rather than theoretical comp. sci. work, […]]]></description>
										<content:encoded><![CDATA[<p>Since just before Spring Break, in CS443 &#8211; Software Quality Assurance and Testing we have transitioned on from boundary/equivalence class analysis and onto Test-Driven Development as a strategy as well as implementation. For me, this is a huge relief and joy to get back to working on actual code rather than theoretical comp. sci. work, though it also helped me recognize the importance of non-coding exercises.&nbsp;</p>
<p>I’ve also been really enjoying TDD as I find it aligns with my general coding habits and builds off them to help me identify new coding practices and strategies for addressing challenges. So I decided to look at some blog posts discussing it and how it’s impacted software projects versus other methods used. <em>Test Driven Development Is the Best Thing to Happen to Software Design</em> instantly jumped out to me.</p>
<p>The post discusses the significant influence of Test Driven Development (TDD) on software design. It explains TDD as an iterative approach shaping an idea into implementation through a cyclical process of &#8216;fail-pass-refactor&#8217;. The author illustrates the two approaches to writing code and tests: one driven by code and the other driven by tests, emphasizing the benefits of TDD in terms of mindset and code quality.</p>
<p>This post also considers TDD in real-world scenarios, highlighting its capacity to provide fast strategic approaches to software challenges that may seem to have no place to start (by creating tests). It addresses challenges in testing and offers solutions such as spying or mocking, managing variable test data, avoiding bloated setup, and preventing &#8220;Mocking Hell.&#8221;</p>
<p>Additionally, the post discusses the tendency to add unnecessary features in code and how TDD, by its nature, prevents such occurrences, thus aligning with the principle of &#8220;You Ain’t Gonna Need it&#8221; (YAGNI). This is definitely a fault that I fall victim to at times as I try to plan ahead too far in a project and add unnecessary code so I appreciate strategies to address it. Finally, it suggests that TDD not only aids in requirements meeting implementation but also serves as a technique for gathering feedback about software design, thereby advocating for Test Driven Design (TDD).</p>
<p>My typical strategy for developing code begins with creating a skeleton of basic components I expect to be easy to implement and then fill out the boundaries and remainders by developing minor unit tests (like print lines) to make sure it is working as intended. I sometimes do them at the same time, but I have been doing TDD sometimes without knowing it and am now better prepared to hone in on its benefits.</p>
<p>Source:</p>
<p><a href="https://www.thoughtworks.com/en-us/insights/blog/test-driven-development-best-thing-has-happened-software-design" rel="nofollow">https://www.thoughtworks.com/en-us/insights/blog/test-driven-development-best-thing-has-happened-software-design</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://csworcester0.wordpress.com">CS@Worcester – Tech. Worth Talking About</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by jelbirt">jelbirt</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://0.gravatar.com/avatar/3189cd95b312f2153b40f34596d8f1b6ffc5be289659b203a950879967a0be83?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">20957</post-id>	</item>
		<item>
		<title>Test Driven Development: Formal Trial-and-Error</title>
		<link>https://wurmpress.wordpress.com/2019/10/17/test-driven-development-formal-trial-and-error/</link>
		
		<dc:creator><![CDATA[wurmpress]]></dc:creator>
		<pubDate>Thu, 17 Oct 2019 14:10:37 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[cswsu]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test-Driven Development]]></category>
		<category><![CDATA[Week 7]]></category>
		<guid isPermaLink="false">http://wurmpress.wordpress.com/?p=117</guid>

					<description><![CDATA[Test Driven Development (TDD), like many concepts in Computer Science, is very familiar to even newer programming students but they lack the vocabulary to formally describe it. However, in this instance they could probably informally name it: trail-and-error. Yes, very much like the social sciences, computer science academics love giving existing concepts fancy names. If [&#8230;]]]></description>
										<content:encoded><![CDATA[<hr class="wp-block-separator" />
<p>Test Driven Development (TDD), like many concepts in<br />
Computer Science, is very familiar to even newer programming students but they<br />
lack the vocabulary to formally describe it. However, in this instance they<br />
could probably informally name it: trail-and-error. Yes, very much like the<br />
social sciences, computer science academics love giving existing concepts fancy<br />
names. If we were to humor them, they would describe it in five-ish steps:</p>
<ol>
<li>Add<br />
test</li>
<li>Run<br />
tests, check for failures</li>
<li>Change<br />
code to address failures/Add another test</li>
<li>Run<br />
tests again, refactor code</li>
<li>Repeat</li>
</ol>
<p>The TDD process comes<br />
with some assumptions as well, one being that you are not building the system<br />
to test while writing tests, these tests are for functionally complete<br />
projects. As well, this technique is used to verify that code achieves some<br />
valid outcome outlined for it, with a successful test being one that fails,<br />
rather than “successful” tests that reveal an error as in traditional testing.<br />
Related as well to our most recent classwork, TDD should achieve complete<br />
coverage by testing every single line of code – which in the parlance of said<br />
classwork would be complete node and edge coverage. </p>
<p>Additionally, TDD has<br />
different levels, two to be more precise: Acceptance TDD and Developer TDD. The<br />
first, ATDD, involves creating a test to fulfill the specifications of the<br />
program and correcting the program as necessary to allow it to pass this test.<br />
This testing is also known as Behavioral Driven Development. The latter, DTDD, is<br />
usually referred to as just TDD and involves writing tests and then code to<br />
pass them to, as mentioned before, to test functionality of all aspects of a<br />
program.</p>
<p>As it relates to our coursework, the second assignment involved writing tests to test functionality based on the project specifications. While we did not modify the given program code, at least very little, we used the iterative process of writing and re-writing tests in order to verify the correct functioning of whatever method or feature we were hoping to test. In this way, the concept is very simple, though it remains to be seen if it stays that way given different code to test.</p>
<h3 class="has-text-align-center">Sources:</h3>
<p><a href="https://www.guru99.com/test-driven-development.html">Guru99 &#8211; Test-Driven Development</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://wurmpress.wordpress.com">CS@Worcester – Press Here for Worms</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by wurmpress">wurmpress</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://0.gravatar.com/avatar/09b084adfb2a20f1a1e9ebddd2b0482b?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">12005</post-id>	</item>
	</channel>
</rss>
