<?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>week-18 &#8211; CS@Worcester</title>
	<atom:link href="https://cs.worcester.edu/category/week-18/feed/" rel="self" type="application/rss+xml" />
	<link>https://cs.worcester.edu</link>
	<description>Worcester State University Computer Science Department</description>
	<lastBuildDate>Sun, 26 May 2024 02:44:36 +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>Week 18B – C Testing</title>
		<link>https://shrimpfriedthisrice.wordpress.com/2024/05/25/week-18b-c-testing/</link>
		
		<dc:creator><![CDATA[tempurashrimple]]></dc:creator>
		<pubDate>Sun, 26 May 2024 02:44:36 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://shrimpfriedthisrice.wordpress.com/?p=136</guid>

					<description><![CDATA[For this week, I wanted to look at how different languages handle test cases, and I’ll continue with one I’m not the most familiar with, C! I’ve worked in small amount of C in classes at Worcester State, but have little experience outside of that. I feel like this is a good topic to discuss […]]]></description>
										<content:encoded><![CDATA[<p>For this week, I wanted to look at how different languages handle test cases, and I&#8217;ll continue with one I&#8217;m not the most familiar with, C! I&#8217;ve worked in small amount of C in classes at Worcester State, but have little experience outside of that. I feel like this is a good topic to discuss as knowing how other programming languages handle unit testing would be a great way to expand my knowledge when it comes to furthering my understanding of it within Java.</p>
<p>If you haven&#8217;t already read my other blog post on Python testing, feel free to read it right here! </p>
<figure class="wp-block-embed is-type-wp-embed is-provider-you-039-re-telling-me-a-shrimp-wrote-this-code wp-block-embed-you-039-re-telling-me-a-shrimp-wrote-this-code">
<div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="rIFbeOaSFn"><p><a href="https://shrimpfriedthisrice.wordpress.com/2024/05/25/week-18a-python-testing/">Week 18A &#8211; Python&nbsp;Testing</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Week 18A &#8211; Python&nbsp;Testing&#8221; &#8212; You&#039;re Telling Me A Shrimp Wrote This Code?!" src="https://shrimpfriedthisrice.wordpress.com/2024/05/25/week-18a-python-testing/embed/#?secret=l1tCxVlNLP%23?secret=rIFbeOaSFn" data-secret="rIFbeOaSFn" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div><figcaption class="wp-element-caption">For learning about unit testing in C, I consulted this article on the subject: <a href="https://interrupt.memfault.com/blog/unit-testing-basics">https://interrupt.memfault.com/blog/unit-testing-basics</a></figcaption></figure>
<p>It seems like unit testing in C is a lot more barebones compared to Java, which in my experience utilizing C, makes sense for the language. A lot of features primarily used in Java, like object-oriented structures aren&#8217;t available in C (to my understanding, could totally be wrong). </p>
<p>For one major aspect, there seems to be only one assertion command in C, just simply &#8220;assert&#8221;. Theres no assertTrue, assertFalse, assertThrows, or assertEquals, just simply &#8220;assert&#8221;. And from the example given below: </p>
<pre class="wp-block-code"><code>#include &lt;assert.h&gt;

// In my_sum.c
int my_sum(int a, int b) {
  return a + b;
}

// In test_my_sum.c
int main(int argc, char *argv&#091;]) {
  assert(2 == my_sum(1, 1));
  assert(-2 == my_sum(-1, -1));
  assert(0 == my_sum(0, 0));
  // ...
  return(0);
}</code></pre>
<p>It seems the &#8220;assert&#8221; function comes from the &lt;assert.h&gt; library, much like the JUnit librarys used in Java. But more importantly, it seems that  &#8220;assert&#8221; is the equivalent of &#8220;assertEquals&#8221;.</p>
<p>It also seems like Unit Testing in C is best implemented with tools outside of a compiler for C. The ones mentioned in the article in specific were CppUTest, Unity, and Google Test. For the rest of the article, the use examples using CppUTest. It was interesting to hear one of the options being called Unity, which is the name of a game engine, which, while not written in C, is written in a mixture of C# and C++, which are both offshoots of C. Makes me wonder how testing in a gaming engine works, perhaps it&#8217;s something to look at in a future blog post, hint hint, wink wink.</p>
<p>CppUTest seems to implement the same SetUp() and Teardown() functions that JUnit can employ, which is really good, as these methods are important for testing multiple methods. It also seems to have more then just an Equals assertion, even though the example used is another equals example. </p>
<p>This gets me more interested in C, as I have been told understanding C allows you to understand other languages much more clearly. Perhaps I&#8217;ll take a deeper dive some day, who knows! Until next time, my readers~!</p>

<p class="syndicated-attribution"><em>From the blog <a href="https://shrimpfriedthisrice.wordpress.com">CS@Worcester – You&amp;#039;re Telling Me A Shrimp Wrote This Code?!</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by tempurashrimple">tempurashrimple</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://1.gravatar.com/avatar/d32aac6a6c8a8da64a549030aea18c3c1fd2d366336d55ef20d2a1a8875ea2ff?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">21772</post-id>	</item>
		<item>
		<title>Week 18A – Python Testing</title>
		<link>https://shrimpfriedthisrice.wordpress.com/2024/05/25/week-18a-python-testing/</link>
		
		<dc:creator><![CDATA[tempurashrimple]]></dc:creator>
		<pubDate>Sun, 26 May 2024 01:29:53 +0000</pubDate>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[machine-learning]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://shrimpfriedthisrice.wordpress.com/?p=126</guid>

					<description><![CDATA[For this week, I wanted to look at how different languages handle test cases, and I’ll begin with the one I’m the most familiar with, Python! I’ve worked with Python in small amounts in the past, and have an understanding a lot of it’s syntaxes are similar to java’s, albeit simpler. I feel like this […]]]></description>
										<content:encoded><![CDATA[<p>For this week, I wanted to look at how different languages handle test cases, and I&#8217;ll begin with the one I&#8217;m the most familiar with, Python! I&#8217;ve worked with Python in small amounts in the past, and have an understanding a lot of it&#8217;s syntaxes are similar to java&#8217;s, albeit simpler. I feel like this is a good topic to discuss as knowing how other programming languages handle unit testing would be a great way to expand my knowledge when it comes to furthering my understanding of it within Java.</p>
</p>
<p>For this, I&#8217;ll be looking at the official page for unittest on Python&#8217;s website, here: </p>
<p><a href="https://docs.python.org/3/library/unittest.html">https://docs.python.org/3/library/unittest.html</a></p>
</p>
<p>Right off the bat, I&#8217;m really interested in the fact that unittest is actually based directly off of JUnit! Which means a lot of the syntax, formatting, and framework is quite similar, just modified to fit the mold of Python.</p>
<p>Looking at the snippet they gave as an example&#8230;</p>
<pre class="wp-block-code"><code>import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), &#091;'hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

if __name__ == '__main__':
    unittest.main()</code></pre>
<p>In this, it seems the way you define test blocks is by having a class with (unittest.testcase) and then doing &#8220;def&#8221; to define each test case. </p>
<p>Even the assertions are the same and written near identically, as the first three use assertEqual, which is identical to javas assertEquals, minus the s, and assertTrue and assertFalse, which are also identical to their java counterparts. assertRaises, which is used in the third test, seems to be Python&#8217;s equivalent to assertThrows, however, it seems to be a bit different in comparison. assertRaises seems to identify a specific kind of exception being raised, whereas assertThrows would just identify any exception in general.</p>
<p>The last line also is a block of code that allows an easy way to run all the tests, so when you run unittest.main() in a command line, it will automatically run all the tests and display the results.</p>
<p>There also seems to be a whole bunch of different command line options to display results and modify the ways in which its run. As an example, theres &#8220;-v&#8221;, which stands for verbosity, much like the bash command, which shows the results of each individual test being run, like below:</p>
<pre class="wp-block-code"><code>test_isupper (__main__.TestStringMethods.test_isupper) ... ok
test_split (__main__.TestStringMethods.test_split) ... ok
test_upper (__main__.TestStringMethods.test_upper) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK</code></pre>
<p>It seems extremely interesting and makes me want to learn more Python, which would definitely help me in my career in all sorts of ways! Next blog we will be looking at how unit testing works in C. Until then!</p>

<p class="syndicated-attribution"><em>From the blog <a href="https://shrimpfriedthisrice.wordpress.com">CS@Worcester – You&amp;#039;re Telling Me A Shrimp Wrote This Code?!</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by tempurashrimple">tempurashrimple</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://1.gravatar.com/avatar/d32aac6a6c8a8da64a549030aea18c3c1fd2d366336d55ef20d2a1a8875ea2ff?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">21770</post-id>	</item>
		<item>
		<title>7 Steps to a Great Software Tester</title>
		<link>https://mrjfatal.wordpress.com/2024/05/20/7-steps-to-a-great-software-tester/</link>
		
		<dc:creator><![CDATA[mrjfatal]]></dc:creator>
		<pubDate>Tue, 21 May 2024 03:48:05 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://mrjfatal.wordpress.com/?p=179</guid>

					<description><![CDATA[Introduction: Enhancing your software testing skills requires a strategic approach encompassing organization, communication, clarity, and a positive mindset. In this guide, we’ll explore seven steps to elevate your testing capabilities and contribute effectively to your team’s success. Step 1: Organize Everything Step 2: Write Detailed Bug Reports Step 3: Write Clear Test Cases Step 4: […]]]></description>
										<content:encoded><![CDATA[</p>
<p><strong>Introduction:</strong> Enhancing your software testing skills requires a strategic approach encompassing organization, communication, clarity, and a positive mindset. In this guide, we&#8217;ll explore seven steps to elevate your testing capabilities and contribute effectively to your team&#8217;s success.</p>
<p><strong>Step 1: Organize Everything</strong></p>
<ul>
<li>Organize your testing details to avoid missing important information.</li>
<li>Utilize a structured method to store communication and project details for easy access and reference.</li>
<li>Keeping all pertinent information in one place ensures clarity and helps in forming a cohesive testing strategy.</li>
</ul>
<p><strong>Step 2: Write Detailed Bug Reports</strong></p>
<ul>
<li>Craft clean and detailed bug reports to assist your team members and developers effectively.</li>
<li>Emphasize detail, clarity, and relevance in bug report writing.</li>
<li>Ensure bug reports are comprehensive yet concise, avoiding unnecessary information.</li>
</ul>
<p><strong>Step 3: Write Clear Test Cases</strong></p>
<ul>
<li>Clear and concise test cases are crucial for effective software testing.</li>
<li>Focus on clarity and simplicity in test case creation to facilitate efficient execution by your team members.</li>
<li>Optimal test cases typically range between 3-8 steps, minimizing the likelihood of errors during execution.</li>
</ul>
<p><strong>Step 4: Take Part and Communicate</strong></p>
<ul>
<li>Testing is a collaborative effort; involve all team members from the outset to enhance efficiency.</li>
<li>Keep the entire team informed and engaged to ensure a thorough understanding of project goals and requirements.</li>
<li>Early involvement and clear communication minimize risks, delays, and misunderstandings.</li>
</ul>
<p><strong>Step 5: Ask Yourself Questions</strong></p>
<ul>
<li>Testing involves decision-making and problem-solving; ask pertinent questions to guide your testing approach.</li>
<li>Clarify the objectives of your tests and select appropriate testing techniques to achieve desired results efficiently.</li>
<li>Refine your testing process by filtering out less relevant techniques and focusing on those that align with project goals.</li>
</ul>
<p><strong>Step 6: Maintain a Positive Mindset</strong></p>
<ul>
<li>A positive mindset significantly impacts testing outcomes; approach testing with optimism and determination.</li>
<li>Believe in your ability to uncover critical bugs and contribute positively to the project&#8217;s success.</li>
<li>Positivity is contagious and can inspire your team members to perform at their best, enhancing overall testing efficiency.</li>
</ul>
<p><strong>Step 7: Don&#8217;t Test Initially</strong></p>
<ul>
<li>Before diving into testing, take time to explore the application and understand its goals and features.</li>
<li>Familiarize yourself with the intricacies of the application to plan an efficient and effective testing strategy.</li>
<li>Align your testing goals with the objectives of the application to deliver impactful results.</li>
</ul>
<p><strong>Reflection:</strong> Each step emphasizes not only technical proficiency but also collaboration and strategic thinking. I&#8217;ve seen improvements in my testing approach, including clearer bug reports, more efficient test case creation, and enhanced teamwork. Moving forward, I intend to refer back to these seven steps before revieing or testing anything.</p>
<p><strong>Conclusion:</strong> By following these seven steps, you can enhance your testing skills and make significant contributions to your team&#8217;s success. Embrace organization, communication, clarity, and a positive mindset to elevate your testing capabilities and achieve optimal results in your software testing endeavors.</p>
<p>Source &#8211; <a href="https://testlio.com/blog/how-to-be-an-efficient-software-tester/">https://testlio.com/blog/how-to-be-an-efficient-software-tester/</a></p>

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

		<post-id xmlns="com-wordpress:feed-additions:1">21612</post-id>	</item>
		<item>
		<title>Security Testing</title>
		<link>https://mrjfatal.wordpress.com/2024/05/20/security-testing/</link>
		
		<dc:creator><![CDATA[mrjfatal]]></dc:creator>
		<pubDate>Tue, 21 May 2024 03:42:57 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://mrjfatal.wordpress.com/?p=172</guid>

					<description><![CDATA[Introduction: In today’s digital age, where cyber threats loom large, ensuring the security of software systems and applications is paramount. Security testing emerges as a crucial practice in safeguarding sensitive data and resources from potential intruders. As I delve into the realm of security testing, I aim to explore its multifaceted nature and understand its […]]]></description>
										<content:encoded><![CDATA[</p>
<p><strong>Introduction:</strong> In today&#8217;s digital age, where cyber threats loom large, ensuring the security of software systems and applications is paramount. Security testing emerges as a crucial practice in safeguarding sensitive data and resources from potential intruders. As I delve into the realm of security testing, I aim to explore its multifaceted nature and understand its significance in the realm of software development.</p>
<p><strong>Selected Resource:</strong> The selected resource, an article from GeeksforGeeks, provides a overview of security testing, covering its goals, principles, focus areas, types, advantages, and disadvantages. </p>
<p><strong>Focus Areas in Security Testing:</strong></p>
<ul>
<li>Authentication and Authorization: Testing the system’s ability to properly authenticate and authorize users and devices.</li>
<li>Network and Infrastructure Security: Testing the security of the system’s network and infrastructure, including firewalls, routers, and other network devices.</li>
<li>Application Security: Testing the security of the system’s applications, including testing for cross-site scripting, injection attacks, and other vulnerabilities.</li>
<li>Data Security: Testing the security of the system’s data, including testing for data encryption, integrity, and leakage.</li>
<li>Compliance: Testing the system’s compliance with relevant security standards and regulations.</li>
</ul>
<p><strong>Types of Security Testing:</strong></p>
<ul>
<li>Vulnerability Scanning: Automated scanning to detect known vulnerability patterns.</li>
<li>Security Scanning: Identification of network and system weaknesses, followed by solutions for risk reduction.</li>
<li>Penetration Testing: Simulation of attacks from malicious hackers to identify potential vulnerabilities.</li>
<li>Risk Assessment: Analysis of security risks in the organization, classifying them into low, medium, and high categories.</li>
<li>Security Auditing: Internal inspection of applications and operating systems for security defects.</li>
<li>Ethical Hacking: Exposing security flaws in the organization’s system through controlled hacking attempts.</li>
<li>Posture Assessment: Combining security scanning, ethical hacking, and risk assessments to provide an overall security posture.</li>
</ul>
<p><strong>Vulnerability in Security Testing:</strong></p>
<ul>
<li>Vulnerabilities are weaknesses in a system that could be exploited by attackers to compromise its security.</li>
<li>Identification of vulnerabilities is a crucial aspect of security testing to prevent potential breaches.</li>
<li>Types of vulnerabilities include SQL injection, cross-site scripting, misconfigurations, and weak authentication mechanisms.</li>
</ul>
<p><strong>Advantages and Disadvantages:</strong></p>
<ul>
<li>Advantages:
<ul>
<li>Identifying vulnerabilities</li>
<li>Improving system security</li>
<li>Ensuring compliance</li>
<li>Reducing risk</li>
<li>Improving incident response</li>
</ul>
</li>
<li>Disadvantages:
<ul>
<li>Resource-intensive nature</li>
<li>Complexity</li>
<li>Limited testing scope</li>
<li>False positives and negatives</li>
<li>Time-consuming</li>
</ul>
</li>
</ul>
<p><strong>Reflection and Future Application:</strong> Reflecting on the content of the resource, I gained a deeper understanding of the intricate layers involved in security testing, particularly in identifying vulnerabilities. In my future practice, I envision applying the knowledge gleaned from this resource to bolster security measures in software development projects. By integrating robust security testing protocols and leveraging advanced tools and techniques, I aim to enhance the resilience of systems and applications against potential vulnerabilities and threats.</p>
<p><strong>Conclusion:</strong> In conclusion, security testing emerges as a cornerstone in ensuring the integrity, confidentiality, and availability of software systems and applications. By embracing a comprehensive approach to security assessment and staying abreast of emerging threats and technologies, we can fortify defenses and navigate the evolving landscape of cybersecurity with confidence and resilience.</p>
<p>Source &#8211; <a href="https://www.geeksforgeeks.org/security-testing/">https://www.geeksforgeeks.org/security-testing/</a></p></p>

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

		<post-id xmlns="com-wordpress:feed-additions:1">21614</post-id>	</item>
		<item>
		<title>Elevating Code Reviews: Practical Tips for better Collaboration</title>
		<link>https://josielrivas.wordpress.com/2024/05/20/elevating-code-reviews-practical-tips-for-better-collaboration/</link>
		
		<dc:creator><![CDATA[josielrivas]]></dc:creator>
		<pubDate>Mon, 20 May 2024 16:05:14 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://josielrivas.wordpress.com/?p=90</guid>

					<description><![CDATA[Code reviews are a vital part of the software development process, serving as a checkpoint to ensure quality, foster knowledge sharing, and mitigate future issues. Drawing on practical advice from a stack overflow blog article (found here) this post explores how to elevate the practice of code reviews, enhancing their effectiveness and the collaborative environment […]]]></description>
										<content:encoded><![CDATA[<p>Code reviews are a vital part of the software development process, serving as a checkpoint to ensure quality, foster knowledge sharing, and mitigate future issues. Drawing on practical advice from a stack overflow blog <a href="https://stackoverflow.blog/2019/09/30/how-to-make-good-code-reviews-better/">article</a> (found here) this post explores how to elevate the practice of code reviews, enhancing their effectiveness and the collaborative environment they create. </p>
<p>Summary</p>
<p>The article from stack Overflow provided insightful tips on improving code reviews, emphasizing the importance of constructive communication and efficient processes. It suggest setting clear goals for reviews, such as catching bugs, ensuring consistency, and mentoring junior developers. Techniques like keeping comments clear and actionable, prioritizing empathy and understanding, and maintaining a balance between criticism and praise are highlighted as crucial for productive reviews.</p>
<p>Reason for selection</p>
<p>I chose this article because effective code reviews are essential for any development team aiming to produce high-quality software. As our coursework often involves collaborative projects and peer reviews, applying these enhanced practices can significantly benefit our collective learning and project outcomes.</p>
<p>Adding to the reasons for selecting this article, another compelling aspect is its relevance to the ongoing discussions in our software development courses about maintaining high standards in coding practices. As someone who has been part of several projects and observed firsthand the impact of well-conducted code reviews, I recognize the value in learning and sharing effective review techniques. This article not only enhances our understanding of best practices but also equips us with the tools to implement them effectively in our work, making it an invaluable resource for any aspiring software developer eager to improve their craft and contribute positively to team projects.</p>
<p>Personal reflection</p>
<p>Reflecting on the article, I appreciated the emphasis on empathy and clarity in communication. In past group projects, I&#8217;ve seen how negative feedback can demotivate peers, whereas constructive and positive communication can enhance team dynamics and improve code quality. This article reinforced the idea that code reviews are not just about finding errors but also about building a supportive team culture.</p>
<p>Application in future practice</p>
<p>Armed with these enhanced practices, I plan to apply the article’s recommendations in upcoming projects, particularly those involving teamwork. Emphasizing clear, empathetic feedback and leveraging tools for automating mundane aspects of code review will allow me and my peers to focus on more complex issues, thus improving our efficiency and the quality of our work.</p>
<p>Conclusion</p>
<p>Effective code reviews are more than just a quality assurance step; they are a cornerstone of a collaborative and learning-focused development environment. The tips provided by the Stack Overflow article offer valuable guidance on making good code reviews even better, ensuring that they contribute positively to both project outcomes and team dynamics. As we continue to engage in more collaborative projects, these practices will be essential in shaping how we approach code reviews and interact as a development team.</p>
<p>resources</p>
<p><a href="https://stackoverflow.blog/2019/09/30/how-to-make-good-code-reviews-better/" rel="nofollow">https://stackoverflow.blog/2019/09/30/how-to-make-good-code-reviews-better/</a></p>

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

		<post-id xmlns="com-wordpress:feed-additions:1">21606</post-id>	</item>
		<item>
		<title>The Deadly Sins of Mobile Testing</title>
		<link>https://bengelineau14.wordpress.com/2024/05/19/the-deadly-sins-of-mobile-testing/</link>
		
		<dc:creator><![CDATA[Ben Gelineau]]></dc:creator>
		<pubDate>Mon, 20 May 2024 03:51:19 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://bengelineau14.wordpress.com/?p=51</guid>

					<description><![CDATA[To round out my semester, before beginning my summer research opportunity, I looked into extraneous material for my classes as I finish up. In looking for a blog for the final week of finals, I went with something more akin to basic general information regarding testing. I selected an article based around the common mistakes […]]]></description>
										<content:encoded><![CDATA[<p>To round out my semester, before beginning my summer research opportunity, I looked into extraneous material for my classes as I finish up. In looking for a blog for the final week of finals, I went with something more akin to basic general information regarding testing. I selected an article based around the common mistakes or sins in mobile testing. This connected with my most recent final project for another class regarding mobile development. I struggled to test my project for this class, and I am sure I committed many of these sins. The article’s title is<strong> Five Sins of Mobile Testing by Josh Galde</strong></p>
<p>This article is quite dated, and Galde begins with describing the demand for mobile devices, which has since skyrocketed. Companies at the time aimed to expand their web presence to mobile platforms, but often overlooked the constraints, leading to rushed development and potential errors. This is something I experienced in my own project, having trouble with the visual aspect of app development. The necessity to develop multiple versions of the same app to accommodate different devices and configurations. Is something of an issue outlined by Galde, and one I experienced when switching between different size devices. This is similar to a non-responsive website in web development. Glade explains that to create successful, user-friendly, and reliable mobile apps, we should follow the best practices and avoid common mistakes, or &#8220;sins,&#8221;. The first sin is relying solely on emulation software, as problematic because emulators can&#8217;t fully replicate real device behavior, especially with carrier networks.This is something I experienced through only emulator testing. The second sin is using jail broken devices, which can alter their functionality, leading to inaccurate testing results. The third sin is not utilizing automation. Automated testing can save time and reduce errors by efficiently handling the repetitive testing process across multiple devices and platforms, which might be tedious to do individually. The fourth sin is ignoring the need to support internal apps. This can be a dangerous error for applications developed for businesses, as it ignores the possibility of employees or members utilizing their own devices for organization apps. And one of the most egregious, and fifth sin is skipping testing on real devices. This is a common but risky practice, rushing app development without thorough testing. This can lead to catastrophic failures in the app. Proper testing is critical to ensure app reliability and success.</p>
<p>At the end of the semester, reflecting on my learning is paramount to actually achieve a change in how I think. My final project presentation just ended a week ago, and already I reflect on mistakes and poor practices to improve going forward. These sins are many I have committed and will now avoid going forward to improve as a programmer.</p>
<p>Source:<a href="https://www.stickyminds.com/article/five-sins-mobile-testing">https://www.stickyminds.com/article/five-sins-mobile-testing</a></p>

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

		<post-id xmlns="com-wordpress:feed-additions:1">21604</post-id>	</item>
		<item>
		<title>Week-18 Post</title>
		<link>https://computerscience609.wordpress.com/2024/05/19/week-18-post-2/</link>
		
		<dc:creator><![CDATA[Winston Luu]]></dc:creator>
		<pubDate>Mon, 20 May 2024 02:18:57 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://computerscience609.wordpress.com/?p=96</guid>

					<description><![CDATA[My second post this week will recover the three elements of unit testing: Boundary Value Testing, Equivalence Class Testing, and Decision Table-Based Testing. Each play a crucial role in validating software behavior and functionality. Boundary Value Testing focuses on the edges of input ranges. This technique identifies defects at the boundaries of input domains, where […]]]></description>
										<content:encoded><![CDATA[<p>     My second post this week will recover the three elements of unit testing: Boundary Value Testing, Equivalence Class Testing, and Decision Table-Based Testing. Each play a crucial role in validating software behavior and functionality. Boundary Value Testing focuses on the edges of input ranges. This technique identifies defects at the boundaries of input domains, where errors are most likely to occur. By testing the minimum, maximum, and edge values, testers can catch issues that might arise from off-by-one errors or other boundary-related bugs. This method is particularly effective because boundary conditions are common sources of defects in software applications. To utilize boundary value testing, first determine the minimum and maximum values for each input field, and second create test cases that include the boundary values (e.g., minimum, maximum, just inside, and just outside the boundaries).</p>
<p>     Equivalence Class Testing divides input data into equivalent partitions, or classes, where test cases are expected to produce similar results. Instead of testing every possible input, testers select representative values from each class, significantly reducing the number of test cases needed. This method ensures that different inputs within the same class are treated equally by the software, helping identify any inconsistencies or unexpected behaviors across various input ranges. To utilize equivalence class testing, first group input values that are treated similarly by the system into classes, and second choose one representative value from each class for testing.</p>
<p>     Decision Table-Based Testing involves creating a table that maps different input conditions to their corresponding actions or outputs. This technique is especially useful for testing complex business logic and decision-making processes. By systematically covering all possible combinations of inputs and their respective outcomes, decision tables help ensure that all scenarios are accounted for and validated. This method enhances the thoroughness of testing by providing a clear and structured approach to handling diverse input conditions. To utilize decision table-based testing, first list all possible conditions (inputs) and actions (outputs), and second create a table with all possible combinations of conditions and their corresponding actions. </p>
<p>     Boundary Value Testing, Equivalence Class Testing, and Decision Table-Based Testing are powerful techniques that enhance the effectiveness and efficiency of software testing. These testing techniques help ensure that software applications are robust, reliable, and capable of handling various input scenarios effectively. By incorporating these methods into your testing strategy, you can enhance test coverage, identify potential issues early, and deliver high-quality software that meets user expectations and business requirements.</p>
<p>Blog Post: <a href="https://celestialsys.com/blogs/software-testing-boundary-value-analysis-equivalence-partitioning/">https://celestialsys.com/blogs/software-testing-boundary-value-analysis-equivalence-partitioning/</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://computerscience609.wordpress.com">CS@Worcester – Computer Science Through a Junior</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by Winston Luu">Winston Luu</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://1.gravatar.com/avatar/aa2169169202b488dee6bc40e36074f92964f3d30682bd7b963d128633e6490d?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">21602</post-id>	</item>
		<item>
		<title>continuous integration</title>
		<link>https://vmpcs.wordpress.com/2024/05/19/continuous-integration/</link>
		
		<dc:creator><![CDATA[V]]></dc:creator>
		<pubDate>Mon, 20 May 2024 00:40:04 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://vmpcs.wordpress.com/?p=266</guid>

					<description><![CDATA[For my final blog post for my Software Testing course, I wanted to go over something that also ties with other projects I’ve been working on during this semester in some way. In our Softawre Development Capstone team, we’ve had a couple of issues where we’ve had to touch upon the Thea’s Pantry continuous integration […]]]></description>
										<content:encoded><![CDATA[<p>For my final blog post for my Software Testing course, I wanted to go over something that also ties with other projects I&#8217;ve been working on during this semester in some way. In our Softawre Development Capstone team, we&#8217;ve had a couple of issues where we&#8217;ve had to touch upon the Thea&#8217;s Pantry continuous integration system through GitLab to have linter tests run automatically when pushing commits, so that commits that don&#8217;t match up to specification, the pipeline fails and the person who pushed those changes gets notified to fix any issues that arise. In this post, I want to go over a bit more detail about what continuous integration is and how it&#8217;s useful for developers.</p>
<p>According to <a href="https://blog.hubspot.com/website/continuous-integration">Stephen Roddewig&#8217;s blog post on HubSpot</a>, contiguous integration is an approach to development where code changes are regularly merged into a shared repository, built into a test application automatically, and the results of running this test application go back to the developer if any bugs or defects are found.</p>
<p>In practice, a continuous integration tool typically is an automated system where the source code is compiled with tests being automatically run on every individual push from a developer. This means that the developer&#8217;s contribution to the project is automatically tested on push, then either pushed forward to the maintainers or pushed back as a result of a pipeline failure. </p>
<p>The benefit of this is clear: bugs are caught quicker, the source code is updated on a regular basis with greater confidence because of the automated tests, and the pipeline provides an explicit and clear vision of what the specifications are for the project. </p>
<p>While working with the Thea&#8217;s Pantry system for my capstone, I could see these benefits in action. If a developer forgets to run tests locally (in the case of the Thea&#8217;s Pantry system, all tests are run in a script, and linters are run in their own script as well), the pipeline will catch any problems seamlessly, and the developer can easily see the pipeline failure, look at the output on GitLab, and determine what they need to fix in their branch. </p>
<p>In addition, it clarifies the specifications of what commits should look like, and what code should look like as well, on the basis that you can even add linters to the pipeline. It&#8217;s very useful in case someone forgets that we use conventional commits to have our changes be more clear with what they do, as the pipeline will detect that and function as a reminder of what things should look like.</p>
<p>All around, continuous integration is always a benefit for everyone involved in the software development process, creating a smooth system for testing that functions automatically rather than requiring developers to remember to run tests so they don&#8217;t mess up their branch.</p>

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

		<post-id xmlns="com-wordpress:feed-additions:1">21598</post-id>	</item>
		<item>
		<title>Pairwise Testing</title>
		<link>https://kbcslearning.wordpress.com/2024/05/19/pairwise-testing/</link>
		
		<dc:creator><![CDATA[kbourassa18]]></dc:creator>
		<pubDate>Mon, 20 May 2024 00:26:13 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://kbcslearning.wordpress.com/?p=122</guid>

					<description><![CDATA[The blog post titled “Pairwise Testing: A Complete Guide” by Rajkumar (https://www.softwaretestingmaterial.com/pairwise-testing/) delves into the concept of pairwise testing, also known as all-pairs testing. I chose this blog because of its in-depth examples of  how to implement pairwise testing. These examples really made it easier to understand how pairwise testing can be used to reduce […]]]></description>
										<content:encoded><![CDATA[<p>The blog post titled &#8220;<em>Pairwise Testing: A Complete Guide</em>&#8221; by Rajkumar (<a href="https://www.softwaretestingmaterial.com/pairwise-testing/">https://www.softwaretestingmaterial.com/pairwise-testing/</a>) delves into the concept of pairwise testing, also known as all-pairs testing. I chose this blog because of its in-depth examples of  how to implement pairwise testing. These examples really made it easier to understand how pairwise testing can be used to reduce the amount of test cases while still maintaining high test coverage. The post also outlines the importance of pairwise testing and its advantages. Additionally, it compares pairwise testing with other testing techniques, highlights tools available for automating pairwise testing, and discusses its application in various scenarios.</p>
<p class="has-vivid-green-cyan-color has-text-color has-link-color has-large-font-size wp-elements-fb9bdb16b4cb171e9ab272aa76066e86">What is Pairwise Testing?</p>
<p>Pairwise testing is a black-box testing technique used to reduce the number of test cases while still maintaining high test coverage. By focusing on combinations of input pairs, pairwise testing ensures that all possible pairs of input parameters are tested at least once. For example, if you had a program that took three inputs, X, Y, and Z, pairwise testing would create test cases for each combination of input pairs: (X, Y), (X,Z), and (Y,Z). At first glance this may seem like you have to create a ridiculous amount of test cases, but by following the steps for pairwise testing you can see how quickly the number of test cases is reduced.</p>
<p class="has-vivid-green-cyan-color has-text-color has-link-color has-large-font-size wp-elements-f0233a092008921b9953348527732451">Applying Pairwise Testing</p>
<p>The first step of pairwise testing is to identify all of your input variables. Next list all possible values for each variable. Variables that have numeric values may be reduced to valid and invalid to begin reducing the number of test cases needed. Then, by creating a table content columns of each variable and its possible outputs, you can get a list of each test case. </p>
<p>This blog&#8217;s examples use tables to illustrate how each test case is created by filling in each column one by one.</p>
<p><img fetchpriority="high" decoding="async" src="https://lh7-us.googleusercontent.com/6Y5T13Wr_S5ks7c9lme2YlfuQkiZpD_ZKhh6jzHW8rBrqV2yFLebeP5x2wl88Hv8qyuVn3DVX9CO1jYYxBg0QYb1qlrAXZL1LxB1fkBBPICz04LCluYEWEaJP1OTuAUHL0YPOIfzq9BfZxGGvaDOGTQ" width="624" height="153"></p>
<p>The example from the blog uses a bookstore and creates a table of every variable. In this example you can see how each pair of variables covers all unique combinations except the book category and enquiry. These variables only test fiction with valid and non fiction with invalid. The other columns fixed this by simply reversing the order of one of the test pairs, but doing this would create the same issue for another combination of variables. In this instance two more test cases are added to the list to ensure the unique combination of book category and enquiry.</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/3zbiQNmKDtTgi7R-QZiHAcp6Rygw3Il8adN0Bz1VdlcLBuPzFgCmIxBNJAa2gKIssaUqJo5P9yWKm--WaDuXVUJEtA2HSNx1_8SaUUYeW7CHv-t6fYItfJJg6DasbEzlm9VerADzZgZvojra2GhJ2to" alt="" /></figure>

<p class="syndicated-attribution"><em>From the blog <a href="https://kbcslearning.wordpress.com">CS@Worcester – CS Learning</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by kbourassa18">kbourassa18</a></em> and used with permission of the author. All other rights reserved by the author.</p>]]></content:encoded>
					
		
		<enclosure url="https://1.gravatar.com/avatar/dcc27d66d339172a193de84bd183aab39a8adc96253ad1306926790595643959?s=96&#038;d=identicon&#038;r=G" length="0" type="" />
<enclosure url="https://lh7-us.googleusercontent.com/6Y5T13Wr_S5ks7c9lme2YlfuQkiZpD_ZKhh6jzHW8rBrqV2yFLebeP5x2wl88Hv8qyuVn3DVX9CO1jYYxBg0QYb1qlrAXZL1LxB1fkBBPICz04LCluYEWEaJP1OTuAUHL0YPOIfzq9BfZxGGvaDOGTQ" length="0" type="" />
<enclosure url="https://lh7-us.googleusercontent.com/3zbiQNmKDtTgi7R-QZiHAcp6Rygw3Il8adN0Bz1VdlcLBuPzFgCmIxBNJAa2gKIssaUqJo5P9yWKm--WaDuXVUJEtA2HSNx1_8SaUUYeW7CHv-t6fYItfJJg6DasbEzlm9VerADzZgZvojra2GhJ2to" length="0" type="" />

		<post-id xmlns="com-wordpress:feed-additions:1">21594</post-id>	</item>
		<item>
		<title>Security Testing</title>
		<link>https://kindlcoding.wordpress.com/2024/05/19/security-testing/</link>
		
		<dc:creator><![CDATA[jkindl]]></dc:creator>
		<pubDate>Mon, 20 May 2024 00:20:23 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[week-18]]></category>
		<guid isPermaLink="false">http://kindlcoding.wordpress.com/?p=82</guid>

					<description><![CDATA[Like my previous blogs about performance and AI tools, I wanted to discuss another area of software testing that covers a specific development aspect. I chose security testing because while performance and functionality are essential, we must ensure our applications are safe for their users. This blog post, “Security Testing: Types, Tools, and Best Practices,” […]]]></description>
										<content:encoded><![CDATA[<p>Like my previous blogs about performance and AI tools, I wanted to discuss another area of software testing that covers a specific development aspect. I chose security testing because while performance and functionality are essential, we must ensure our applications are safe for their users. This blog post, &#8220;Security Testing: Types, Tools, and Best Practices,&#8221; by Oliver Moradov, will outline various aspects of security testing, its importance, and its methodologies.</p>
<p>Oliver&#8217;s blog starts by defining security testing, listing its main goals and principles, and providing an index for many other aspects of security testing. It stresses that security testing is a non-functional testing process that determines the resiliency of software from cyber-attacks and data breaches. Non-functional testing focuses on how the system works rather than if it works. The primary goals are identifying assets, threats, vulnerabilities, and risks and performing remediation. </p>
<p>The blog then discusses the types of security testing, including penetration testing, application security testing, API security testing, and vulnerability management. It also covers security test cases, and security testing approaches such as black box, white box, and grey box testing. The blog finishes by discussing best practices in security testing, such as shifting security testing left, testing internal interfaces, and automating tests.  </p>
<p>&nbsp;I felt the distinction between functional and non-functional testing was&nbsp;important&nbsp;to discuss. Knowing how our data or the company&#8217;s data&nbsp;is handled&nbsp;is much more important for security than making sure the software functions correctly. It could function perfectly within the development team&#8217;s parameters but still fail to protect the company&#8217;s and users assets.&nbsp;</p>
<p>I found it interesting that black box, white box, and grey box testing are applied differently than how they&#8217;re typically used in unit testing. The fundamental uses are the same, limiting and granting information, but there is much more to&nbsp;be gained&nbsp;when using this method in security testing. Testing what a malicious hacker could do with limited or abundant details on the software would be critical to protecting our assets. It also highlights the difference between non-functional and functional because developers use box testing to determine how to make errors occur within the system.&nbsp;In contrast, security tests would use the system functionality&nbsp;itself to create a breach in security.&nbsp;</p>
<p>The sections detailing what security vulnerabilities they look for were enlightening. The authentication, input validation, and application logic sections highlighted what scenarios the security tests may encounter to validate system safety. I&#8217;m glad the blog discussed tools for developers to ensure their code can&#8217;t be exploited. Overall, this blog gave plenty of rudimentary information on security testing, and I urge those interested to check it out. In the future, I plan on using the tools and testing techniques to ensure that my code is safe for its users and owners. </p>
<p>Blog: <a href="https://brightsec.com/blog/security-testing/">https://brightsec.com/blog/security-testing/</a></p>

<p class="syndicated-attribution"><em>From the blog <a href="https://kindlcoding.wordpress.com">CS@Worcester – KindlCoding</a> by <a href="https://cs.worcester.edu/author/0/" title="Read other posts by jkindl">jkindl</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/940e62c19797c0edb72d016878343e79481964ab9934ff715b74b7ebad7a2481?s=96&#038;d=identicon&#038;r=G" length="0" type="" />

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