<?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>Software Testing &#8211; CS@Worcester</title>
	<atom:link href="https://cs.worcester.edu/category/software-testing/feed/" rel="self" type="application/rss+xml" />
	<link>https://cs.worcester.edu</link>
	<description>Worcester State University Computer Science Department</description>
	<lastBuildDate>Sat, 13 Apr 2024 21:30:03 +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>Code Reviews for Quality Assurance</title>
		<link>https://csworcester0.wordpress.com/2024/04/13/code-reviews-for-quality-assurance/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Sat, 13 Apr 2024 21:30:03 +0000</pubDate>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Collaborative Programming]]></category>
		<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[software-engineering]]></category>
		<category><![CDATA[Week 13]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=97</guid>

					<description><![CDATA[As we continue in CS443 – Software Quality Assurance and Testing, we’ve delved into the test strategy/skill of group code reviews for debugging. So, this week I chose to search for a blog about effective code reviews with a focus on good practices to extract the most value from participating in them and found a […]]]></description>
										<content:encoded><![CDATA[<p>As we continue in CS443 &#8211; Software Quality Assurance and Testing, we’ve delved into the test strategy/skill of group code reviews for debugging. So, this week I chose to search for a blog about effective code reviews with a focus on good practices to extract the most value from participating in them and found a valuable article posted on Vates.com. This article is from August 2023, so it is modestly recent and applicable to our current learning materials and discusses best practices and habits.</p>
<p>Code review is a pivotal practice in software development, offering more than just bug detection. It serves as a collaborative process where developers meticulously inspect code changes before integration into the main codebase. By doing so, it not only identifies defects but also enhances code quality, ensures alignment with project requirements, and upholds coding standards. The process fosters collaboration among team members, facilitates knowledge sharing, and integrates multiple perspectives, ultimately leading to the creation of reliable, maintainable, and efficient software.</p>
<p>To maximize the benefits of code review, it&#8217;s essential to implement effective strategies. This begins with establishing clear objectives tailored to the project&#8217;s goals. By defining specific focuses, such as code quality improvements, security enhancements, or performance optimizations, teams can streamline the review process and prioritize areas of concern.</p>
<p>Moreover, involving the right team members is crucial. Senior developers, subject matter experts, and team leads contribute diverse viewpoints, enriching the review process and leading to better outcomes. Adhering to a comprehensive code style guide ensures consistency in coding practices, which is vital for long-term maintainability. Utilizing code review tools further enhances efficiency by automating checks, highlighting changes, and facilitating collaborative discussions.</p>
<p>Promoting a culture of constructive feedback is equally important. Emphasizing that reviews aim to enhance overall code quality rather than criticize individuals encourages open communication and continuous improvement. Balancing review speed with depth ensures timely feedback without compromising quality, fostering agility while maintaining code integrity.</p>
<p>Lastly, following up on review feedback is essential for iterative improvement. Addressing comments promptly, clarifying questions, and implementing necessary changes contribute to a learning culture within the team, leading to continuous enhancement of development practices.</p>
<p>Vates is a leading provider of IT and software services and the host of this blog. They provide tools and resources to enable teams to unlock the full potential of code review, IoT consulting, and software testing services. This collaboration empowers organizations to elevate their software development practices, delivering exceptional value to stakeholders through collaborative development and effective code review implementation.</p>
<p>Source:</p>
<p><a href="https://www.vates.com/the-art-of-code-review-effective-strategies-for-collaborative-development" rel="nofollow">https://www.vates.com/the-art-of-code-review-effective-strategies-for-collaborative-development</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">21093</post-id>	</item>
		<item>
		<title>Decision Tables from a Template</title>
		<link>https://csworcester0.wordpress.com/2024/03/13/decision-tables-from-a-template/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Wed, 13 Mar 2024 17:58:17 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Week 9]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=88</guid>

					<description><![CDATA[Over the past few weeks in CS443 – Software Quality Assurance and Testing, we’ve been learning how to apply our boundary test classes to create Decision Tables and apply somewhat similar logic to create Program and DD-Path Graphs for code segments. Decision tables are visual tools used in software testing and analysis to specify actions […]]]></description>
										<content:encoded><![CDATA[<p>Over the past few weeks in CS443 &#8211; Software Quality Assurance and Testing, we’ve been learning how to apply our boundary test classes to create Decision Tables and apply somewhat similar logic to create Program and DD-Path Graphs for code segments. Decision tables are visual tools used in software testing and analysis to specify actions based on given conditions. The strategy we learned in class of assessing all possibilities then systematically combining them based on the decision outcomes and particularly “Don’t care” scenarios seems like a useful and interesting way to map out test designs.</p>
<p>So, I decided to look into blogs discussing Decision Tables and their implementation in software testing and found a great post on ShiftAsia with abstract and specific examples alongside general discussion. This post is also quite recent &#8211; posted on January 9, 2024 &#8211; which is something I always appreciate as the software/tech world is constantly changing. It opens by describing how to create a Decision Table by representing it with the following matrix:</p>
<figure class="wp-block-table">
<table>
<tbody>
<tr>
<td><strong>Condition Stub</strong></td>
<td>Condition Entries</td>
</tr>
<tr>
<td><strong>Action Stub</strong></td>
<td>Action Entries</td>
</tr>
</tbody>
</table>
</figure>
<p><strong>Condition stub</strong>: List of all conditions in consideration</p>
<p><strong>Condition entries</strong>: Filled out with Y/N (or X) to cover all possible combinations of conditions</p>
<p><strong>Action stub</strong>: List of all possible actions/output</p>
<p><strong>Action Entries</strong>: Marked (generally with X or blank) to show outcome and an association between a condition and result.</p>
<p>This is then illustrated with an example of being able to register according to conditions of having a valid email, registered email, and valid password. I found this template and example helpful to better understand Decision Tables in general by comparing them to the steps we did in our In-Class Assignment 7. And, using the example of an altogether invalid email forcing all results to be “Invalid” makes sense logically for the column consolidation.</p>
<p>The process of combining columns and simplifying Decision Tables is reminiscent of CS254 &#8211; Computer Architecture and Organization concepts, particularly using K-Maps to calculate Sum of Products and Product of Sums. Based on similar responses to a variety of inputs, we are able to essentially combine and simplify the K-Map table and in turn the expression it produces. While K-Map logic works based on binary math laws rather than actual outcomes, there’s a clear correlation here as we represent outcomes with boolean values that can be easily represented in binary &#8211; as either a 0(false) or 1(true). My personal experience in CS254 wasn’t the best &#8211; I didn’t totally understand how many of the concept we learned are applicable in practical situations, so it’s cool and exciting to see it applied in software testing &#8211; an area I would’ve probably least expected it.</p>
<p>Sources:</p>
<p><a href="https://blog.shiftasia.com/use-decision-table-in-software-development" rel="nofollow">https://blog.shiftasia.com/use-decision-table-in-software-development</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">20860</post-id>	</item>
		<item>
		<title>Another Look at Boundary Value Analysis and Equivalence Class Partitioning</title>
		<link>https://csworcester0.wordpress.com/2024/03/04/another-look-at-boundary-value-analysis-and-equivalence-class-partitioning/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Mon, 04 Mar 2024 23:48:49 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Week 7]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=83</guid>

					<description><![CDATA[Recently in CS443 – Software Quality Assurance and Testing we’ve been learning some of the conceptual aspects of code testing that are required to identify the relevant points of programs to test as likely break points. We’ve primarily learned about Boundary Value and Equivalence Class testing strategies, so I decided to find a blog to […]]]></description>
										<content:encoded><![CDATA[<p>Recently in CS443 &#8211; Software Quality Assurance and Testing we’ve been learning some of the conceptual aspects of code testing that are required to identify the relevant points of programs to test as likely break points. We’ve primarily learned about Boundary Value and Equivalence Class testing strategies, so I decided to find a blog to learn more about each of these from a third-party perspective. I landed upon a (relatively) recent blog on TestSigma &#8211; a (automatic) testing platform &#8211; from June 2023.</p>
<p>The post discusses the overall importance of software testing in ensuring functionality and reliability of software products focusing on the defining aspects of the two methods we’ve been learning: ‘Bound. Value Analysis’ (BVA) and ‘Equiv. Class Partitioning’ (ECP). BVA concentrates on testing the boundaries of a system to identify vulnerabilities, while ECP groups similar items into equivalence classes, helping testers target specific areas with a higher likelihood of containing bugs.</p>
<p>Benefits of applying BVA and ECP in software testing include improved understanding of the system, simplified test design, better test coverage, prioritization, and risk management. The applications of these techniques extend to various scenarios, such as database testing, network testing, hardware testing, time-based functionality, and UI testing. An interesting point that the article emphasizes is that BVA and ECP are often used together, providing an example of testing a form that accepts age as a number. It suggests partitioning the age range into groups for more effective testing while also considering likely break points.</p>
<p>Common challenges discussed to avoid when using BVA and ECP include restricting testing to input values alone, making assumptions about limits and classes, ignoring user behavior, over-relying on these techniques, and neglecting edge cases. The post concludes by comparing BVA and ECP, highlighting their differences in testing approaches and summarizing them as thought processes that enhance testers&#8217; understanding of the system, leading to improved test coverage and strategy.</p>
<p>Test automation for BVA and ECP using tools like TestSigma (or other softwares) is also discussed, highlighting the potential benefits of saving time, ensuring accuracy, and achieving better test coverage. However, the decision to automate tests should be made considering the cost and benefit of automation and set-up.</p>
<p>Overall, this post taught me some interesting differences between BVA and ECP as well as reinforcing the benefits and basics we learned in class. One interesting aspect of this blog that I noticed in review is that it was written by author Apoorva Ram, a non-white woman in the computer science and specifically software engineering industry. This demographic represents a sparse minority in the computer science field and worth recognizing alongside their contribution with this and other blogs.</p>
<p>Sources:</p>
<p><a href="https://testsigma.com/blog/boundary-value-analysis-and-equivalence-class-partitioning" rel="nofollow">https://testsigma.com/blog/boundary-value-analysis-and-equivalence-class-partitioning</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">20739</post-id>	</item>
		<item>
		<title>Interesting Features of JUnit 5</title>
		<link>https://csworcester0.wordpress.com/2024/02/26/interesting-features-of-junit-5/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Mon, 26 Feb 2024 15:19:59 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[JUnit 5]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Week 6]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=74</guid>

					<description><![CDATA[Since beginning to work with code in CS443 – Software Quality Assurance and Testing, we’ve used JUnit framework for designing and running our test cases. So I decided to search for a blog post discussing some interesting features that I may not have come across yet, but could be useful and landed upon Exploring the […]]]></description>
										<content:encoded><![CDATA[<p>Since beginning to work with code in CS443 &#8211; Software Quality Assurance and Testing, we’ve used JUnit framework for designing and running our test cases. So I decided to search for a blog post discussing some interesting features that I may not have come across yet, but could be useful and landed upon <em>Exploring the Exciting New Features of JUnit 5</em>. This post is from December 2023, so it should be relatively up-to-date and I recall a conversation with Dr. Wurst at one point where he briefly mentioned considering switching to a newer version of JUnit for some attractive features &#8211; hopefully we can delve into some of these.</p>
<p>Several feature additions come with JUnit 5 and specifically version 5.4. One that immediately stood out to me was support for more/new annotations and assertions like @Nested. We’ve looked at some basic annotations like @BeforeEach and @AfterAll in class but the idea of nesting tests is newer &#8211; however it makes perfect sense from a practical perspective. Depending on the outcome of an initial test, testers may want to run further tests on one branch or two different tests depending on which branch is followed. Proper annotating likely helps the compiler recognize the nested nature of the tests preceded and manage potentially complex webs of nested tests most efficiently.</p>
<p>There’s also improvements to the assertEquals() functions and overall flexibility through enhancements to API and insertion features for handling Lambda functions. This goes hand in hand with a new feature of JUnit 5 &#8211; the ability for tests to be dynamically generated during test runtime and implemented (if needed) using a Factory class/method. Last semester in Software Construction Design and Architecture, we learned about the Factory architecture and methodology so it was cool to see it applied to enhance features in professional software.&nbsp;</p>
<p>Another cool feature of JUnit 5 which represents a considerable change from JUnit 4 is the transition to a modular structure, meaning there is a separate test runner and classes which operate independently from the main program. I could imagine that this separation isolates any issues that may arise during testing and protect the main program, while also preventing any unintended interactions with the main from interacting with properly designed tests.</p>
<p>JUnit 5 offers some major features and enhancements over the previous versions with the ability to tag and implement nested tests, improved Lambda function support and Factory method for dynamic test creation and implementation. Considering these, I can see how JUnit could be effective for designing automated test runs. I’m looking forward to implementing more of these features in our class and homework activities for CS443, and trying some extra tests and methods that I read about in this.</p>
<p>Source:&nbsp;</p>
<p><a href="https://blog.machinet.net/post/exploring-the-exciting-new-features-of-j-unit-5" rel="nofollow">https://blog.machinet.net/post/exploring-the-exciting-new-features-of-j-unit-5</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">20683</post-id>	</item>
		<item>
		<title>TestProject Tutorial Conclusion – Advanced API Testing and Scheduling</title>
		<link>https://csworcester0.wordpress.com/2024/02/13/testproject-tutorial-conclusion-advanced-api-testing-and-scheduling/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Tue, 13 Feb 2024 22:52:10 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Job Structure]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Scheduling]]></category>
		<category><![CDATA[Week 5]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=66</guid>

					<description><![CDATA[We return again this week looking at the online TestProject blog tutorial focusing on the final two chapters 5 and 6 focusing on Advanced API Testing Automation and Scheduling API Automation Flows and CI/CD Execution respectively. In class, we’ve been working with JUnit integrated with VSCode so it’s been interesting seeing a very different User […]]]></description>
										<content:encoded><![CDATA[<p>We return again this week looking at the online TestProject blog tutorial focusing on the final two chapters 5 and 6 focusing on Advanced API Testing Automation and Scheduling API Automation Flows and CI/CD Execution respectively. In class, we’ve been working with JUnit integrated with VSCode so it’s been interesting seeing a very different User Interface in TestProject.</p>
<p>Chapter 5 looks at “Advanced” API Testing Automation, which primarily looks at more complex interactions and tests involving JSON objects and schemas. It also goes into some other more complicated calls and tests such as formatting URL-encoded requests, reading and using predefined user data sets and tests involving dynamic parameters. This chapter references public NASA API and tools; a key component that stuck out to me was the error report file generation that’s shown which easily identifies and organizes issues. Compared to previous chapters, I found this one to be less relatable and applicable to the things we’re doing in class, but I still learned a lot and was intrigued by the methodologies for test situations with multiple JSON paths to one target.</p>
<p>Chapter 6 focuses on the scheduling aspect of testing automation in TestProject and interactions with CI/CD/CMD pipelines. As always, there are an abundance of screenshots and images to walk readers through an example test set-up &#8211; beginning with the interface for scheduling tests and TestProject’s system of creating and assigning ‘jobs’. Tests are aggregated into jobs (typically as a bundle) which can then be executed as a one-time event or assigned a recurrence time frame. The interface to do so is clear and intuitive and reminds me a lot of CS383 &#8211; Cloud Computing where we are working on modules in AWS Academy learning about Amazon Web Services. AWS uses a similar interface and logical structure for assigning roles, jobs, permissions and many other facets making it intuitive for me to follow this TestProject tutorial. This chapter also discusses testing within a Docker container, which we used to implement for Dr. Wurst’s assignments but have recently switched to GitPod.</p>
<p>With this reading, we conclude the TestProject tutorial I originally found at the beginning of this semester. There’s been a lot of really valuable material and examples within these tutorials, particularly in chapters 1-4 as they focus on beginner concepts and I’ve just been getting started with learning about software testing and quality assurance. Probably most interesting and encouraging from this set of tutorials was how frequently concepts came up from other courses like Database Design and Cloud Computing. Software that interacts with those areas must be tested too so it’s important to know how to work my way around them and see visual examples of tests being designed and executed. In conclusion &#8211; TestProject seems like a great platform with many features, particularly an intuitive scheduling component, however JUnit’s interface remains my current favorite.</p>
<p>Sources:</p>
<p>Tutorial Intro:<a href="https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/"> https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/</a></p>
<p>Chapter 5: <a href="https://blog.testproject.io/2020/11/10/advanced-api-test-automation-and-validation-flows/">https://blog.testproject.io/2020/11/10/advanced-api-test-automation-and-validation-flows/</a></p>
<p>Chapter 6: <a href="https://blog.testproject.io/2020/11/10/scheduling-api-automation-flows-and-ci-cd-execution/">https://blog.testproject.io/2020/11/10/scheduling-api-automation-flows-and-ci-cd-execution/</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">20571</post-id>	</item>
		<item>
		<title>TestProject – API Test Automation with Databases and Shell/File Interactions</title>
		<link>https://csworcester0.wordpress.com/2024/02/01/testproject-api-test-automation-with-databases-and-shell-file-interactions/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Thu, 01 Feb 2024 19:58:38 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Local File Interactions]]></category>
		<category><![CDATA[Shell Commands]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Week 3]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=62</guid>

					<description><![CDATA[This week, I continued reading through the TestProject Tutorial blog I began last week moving onto Chapters 3 and 4, which focused on API Test Automation involving database communications, shell commands, and local file interactions. The Chapter 3 tutorial focusing on database implementation provides examples of testing connections and querying common types of databases, including […]]]></description>
										<content:encoded><![CDATA[<p>This week, I continued reading through the TestProject Tutorial blog I began last week moving onto Chapters 3 and 4, which focused on API Test Automation involving database communications, shell commands, and local file interactions.</p>
<p>The Chapter 3 tutorial focusing on database implementation provides examples of testing connections and querying common types of databases, including Oracle Database, Teradata Database, and MySQL Database using TestProject&#8217;s Database Addons. It walks through a specific example of testing a connection to an Oracle Database, showing the successful establishment of the connection. This is taken a step further with an example showing the steps of creating a new table with data extracted from an API request, then setting up and performing an HTTP GET request extracting JSON paths and data from the API response and creating a dynamic query into an Oracle Database Table. I found this portion to be particularly valuable as these tasks seem highly applicable and like common requests of a software dev./analyst, like I plan to be after graduating in May.</p>
<p>Chapter 4 focuses on API test automation flows that incorporate a combination of Shell Commands and/or Local File interactions. As an example demonstration, it shows the steps to access a web page and extract the text using CMD shell commands in conjunction with a GET request, then writing the web page contents to the text file. These functionalities can also be easily implemented using SSH commands, which is also demonstrated. Finally, it goes into how to create and edit/interact with .csv files as a part of the test automation workflow, which can be used for test results and report generation (amongst others).</p>
<p>After going through four of the six chapters in this TestProject tutorial, I can confidently say that it’s a valuable resource and reference in learning about software testing and specifically automation, even if I never end up using the platform. I have been finding the examples to be extremely helpful in demonstrating how to actually use the software and perform some simple real-world tasks, breaking it down into individual test steps. While CS courses commonly include some form of tutorial or demonstration exercise, I personally find that they are often simplified to such a degree that the examples are “unusable”, in that no professional in a real situation would encounter and deal with such a simple task. However, these examples go into more complex applications, such as the earlier example using a combination of commands to extract text from a website, create a new file and write to it. Also, the examples within these tutorials tend to cover a variety of platforms/methods depending on the topic (i.e. a variety of popular databases) maximizing the likelihood for the content to be useful to readers. I’m looking forward to finishing out the last two chapters soon!</p>
<p>Sources:<br />Tutorial Intro: <a href="https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/">https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/</a><br />Chapter 3: <a href="https://blog.testproject.io/2020/11/10/api-test-automation-flows-combined-with-database-flows/">https://blog.testproject.io/2020/11/10/api-test-automation-flows-combined-with-database-flows/</a><br />Chapter 4: <a href="https://blog.testproject.io/2020/11/10/api-test-automation-with-combination-of-shell-commands-and-local-files/">https://blog.testproject.io/2020/11/10/api-test-automation-with-combination-of-shell-commands-and-local-files/</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">20469</post-id>	</item>
		<item>
		<title>An Intro to TestProject as an Automated Testing Tool</title>
		<link>https://csworcester0.wordpress.com/2024/01/25/an-intro-to-testproject-as-an-automated-testing-tool/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Thu, 25 Jan 2024 17:27:09 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[CS-343]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[postman]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Quality Assurance]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[TestProject]]></category>
		<category><![CDATA[Tricentis]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=53</guid>

					<description><![CDATA[Classes restarted last week, and during the first week I found myself reading and writing a lot of introductory blog posts about upcoming semester course topics. As part of my setup tasks for CS-443 Software QA and Testing, I read about one of the most popular manual API Testing tools Postman and saw reference to […]]]></description>
										<content:encoded><![CDATA[<p>Classes restarted last week, and during the first week I found myself reading and writing a lot of introductory blog posts about upcoming semester course topics. As part of my setup tasks for CS-443 Software QA and Testing, I read about one of the most popular manual API Testing tools Postman and saw reference to TestProject, an automated testing tool from the same company Tricentis. So, I decided to do some further reading into TestProject as I understood the basics of manual testing, but had not seen automated testing in action yet. To do so, I found a blog post on the Tricentis site containing an overview tutorial of API testing and how platforms like Postman and TestProject can be valuable.</p>
<p>The post begins by discussing the value in API Testing and mentions the utility of Postman, but also brings up some of the limitations that are commonly encountered such as test automation, scheduling, and end-to-end test reporting. Intro TestProject → This testing platform offers solutions for end-to-end API testing by providing an environment to not only test API’s, manually but also to automate API-based test flows, schedule and run them periodically, and generate execution reports without the need for third party tools or writing any code.</p>
<p>The blog also contains a six chapter tutorial on using TestProject, so I delved into Chapter 1 &#8211; Basic API Test Automation. This emphasizes the platform’s ability to handle a wide variety of input sources like HTML, Databases, and more, then showing the application GUI and taking the reader through how to add ‘test steps’ in TestProject to set up automated testing for a GET HTTP request using NASA’s public APIs including search parameters and discussion on Dynamic Endpoint URLs (and implementing them) amongst others. Chapter 2 offers another brief tutorial discussing the value of scheduling automated tests with image steps (guide) to doing so with interactions to Android and iOS systems.</p>
<p>From these introductory chapters, I was able to get a basic idea of how to use TestProject to design calls, execute tests and access result reports. The other chapters in this TestProject tutorial cover more advanced API testing and validation flows, shell commands, scheduling API automation and more. As an introduction to Quality Assurance Testing and the course in general, this chapter was intriguing and valuable to get an idea of what an automated software testing tool looks like and how to use it in a basic sense. Stay tuned to read more about these other chapters and other topics in software quality assurance and testing and other exciting computer science related topics!</p>
<p>Sources:<br />General TP Post: <a href="https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/">https://blog.testproject.io/2020/11/10/automating-end-to-end-api-testing-flows/</a></p>
<p>Chapter 1: <a href="https://blog.testproject.io/2020/11/10/basic-api-test-automation/">https://blog.testproject.io/2020/11/10/basic-api-test-automation/</a>Chapter 2: <a href="https://blog.testproject.io/2020/11/10/api-test-automation-flows-combined-with-mobile-functional-test/">https://blog.testproject.io/2020/11/10/api-test-automation-flows-combined-with-mobile-functional-test/</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">20410</post-id>	</item>
		<item>
		<title>CS443 – Introduction</title>
		<link>https://csworcester0.wordpress.com/2024/01/17/cs443-introduction/</link>
		
		<dc:creator><![CDATA[jelbirt]]></dc:creator>
		<pubDate>Wed, 17 Jan 2024 21:37:56 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Software Testing]]></category>
		<guid isPermaLink="false">http://csworcester0.wordpress.com/?p=45</guid>

					<description><![CDATA[Hello everyone, we are back and doing it again this semester. Tech Worth Talking About returns with posts about two courses, CS443 – Software Quality Assurance and Testing as well as CS448 – Software Development Capstone.CS443 will focus more on strategies and tools for automating code testing as well as how testing incorporates into the […]]]></description>
										<content:encoded><![CDATA[<p>Hello everyone, we are back and doing it again this semester. Tech Worth Talking About returns with posts about two courses, CS443 &#8211; Software Quality Assurance and Testing as well as CS448 &#8211; Software Development Capstone.<br />CS443 will focus more on strategies and tools for automating code testing as well as how testing incorporates into the overall development process. This goes far beyond simply debugging.</p>
<p>Welcome, and stay tuned!</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">20335</post-id>	</item>
		<item>
		<title>If It’s Broke Don’t Fix it: Treating Bugs Like Buddha</title>
		<link>https://wurmpress.wordpress.com/2019/10/29/if-its-broke-dont-fix-it-treating-bugs-like-buddha/</link>
		
		<dc:creator><![CDATA[wurmpress]]></dc:creator>
		<pubDate>Tue, 29 Oct 2019 15:53:20 +0000</pubDate>
				<category><![CDATA[Bug Testing]]></category>
		<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[cswsu]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Week 9]]></category>
		<guid isPermaLink="false">http://wurmpress.wordpress.com/?p=125</guid>

					<description><![CDATA[For my last blog for this course instead of taking one particular course subject, summarizing it, and theorizing about what actual implementations may look like &#8211; I&#8217;d like to look at the whole course and do the same. More specifically, I would like to cover how bugs or defects are actually addressed, or not, in [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>For my last blog for this course instead of taking one<br />
particular course subject, summarizing it, and theorizing about what actual<br />
implementations may look like – I’d like to look at the whole course and do the<br />
same. More specifically, I would like to cover how bugs or defects are actually<br />
addressed, or not, in Software Development and Testing. To do this I have found<br />
some interesting blog posts which argue that 100% of bugs may be able to be<br />
fixed, but shouldn’t be. Instead, one should focus on serving the vast majority<br />
of users under expected circumstances. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Both blogs<br />
focus on how impractical, and expensive, maintaining 100% stability or up-time<br />
is. In the first focusing on bugs specifically they give many reasons why this<br />
goal is unadvisable. The first is the prevalence of Agile Development,<br />
dominating nearly the entire software development landscape. As such, the constraints<br />
of this fast-paced development style limit the ability to do traditional QA testing;<br />
if a program can have several revisions in a week, maybe even a day, then how<br />
could a team reasonable test all these iterations. Instead, the author suggest<br />
a stability monitoring tool to automatically test each revision. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; In<br />
addition, they suggest that eliminating 100% of bugs would eliminate many which<br />
users would never see, so why waste resources addressing them? Even if you<br />
could fix everything how could you possibly know? This focus is reinforced when<br />
considering the truly incredible breadth of devices that one may have consider,<br />
and specifically in mobile development: where they cite the over 24,000<br />
different android devices on the market. One must focus on the average expected<br />
user experience and not waste time fussing with the outliers until, presumably,<br />
a bug report is filed. </p>
<p>The second blog discusses<br />
defects in systems in a similar way, covering more or less the same points, although<br />
mentioning a rather obscure possibility: being legally challenged for claiming<br />
that your product has no defects. Instead, what I believe they are trying to emphasize<br />
is that products are always fallible, and the amount of resources required to<br />
get them even close is impossible or impractical. As a result, as we move<br />
forward in this class and towards graduation I think we should resist the impulse<br />
to try for complete perfection and instead focus on what is achievable and<br />
provides the best experience for the majority of users. </p>
<h3 class="has-text-align-center">Sources</h3>
<p><a href="https://www.bugsnag.com/blog/not-all-bugs-are-worth-fixing">Not all bugs are worth fixing and that&#8217;s okay</a><br /><a href="http://testerstories.com/2019/10/the-zero-defect-fallacy/">The Zero Defect Fallacy</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">12061</post-id>	</item>
		<item>
		<title>Clarifying Edge Testing</title>
		<link>https://wurmpress.wordpress.com/2019/10/24/clarifying-edge-testing/</link>
		
		<dc:creator><![CDATA[wurmpress]]></dc:creator>
		<pubDate>Thu, 24 Oct 2019 23:59:00 +0000</pubDate>
				<category><![CDATA[CS-443]]></category>
		<category><![CDATA[CS@Worcester]]></category>
		<category><![CDATA[cswsu]]></category>
		<category><![CDATA[Edge Testing]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Week 8]]></category>
		<guid isPermaLink="false">http://wurmpress.wordpress.com/?p=122</guid>

					<description><![CDATA[I happened upon a very interesting blog recently, searching for more examples of edge case testing, wherein the author provides an interesting set of common edge cases. While they use the same names or similar ones as those we&#8217;ve seen lately in class some have new meaning here. In addition, they may have an actual [&#8230;]]]></description>
										<content:encoded><![CDATA[<hr class="wp-block-separator" />
<p>I happened upon a very<br />
interesting blog recently, searching for more examples of edge case testing,<br />
wherein the author provides an interesting set of common edge cases. While they<br />
use the same names or similar ones as those we’ve seen lately in class some<br />
have new meaning here. In addition, they may have an actual value tied to the<br />
name – such as zero, one, and two – but their values are defined otherwise. </p>
<p>&nbsp;In order they<br />
are as such:</p>
<ul>
<li><strong>Zero</strong> “represents<br />
any form of null input”, including the actual value zero but also null, an empty<br />
List or Array, et cetera. This of course is to test the capability of a program<br />
to deal with input that isn’t properly usable by it. </li>
<li><strong>One</strong> represents what<br />
we have referred to as nominal up to this point, meaning a valid normal input<br />
which should test proper functionality of a program under ideal conditions.</li>
<li><strong>Two</strong> does not<br />
correspond to the value two, but rather refers to testing the same code twice,<br />
usually in sequence, to see how repeated executions affect a system. </li>
<li><strong>Two to Max-1</strong> is<br />
most like one, in that it represents a nominal value as well, but in opposition<br />
this value should not be the absolute simplest needed to function but an average<br />
use case; meaning possibly complicated.</li>
<li><strong>Max </strong>is<br />
fairly self-explanatory, used to test the upper limit accepted by a program, and<br />
can sometimes be an extreme value. As such, it can test the limits of the<br />
program under incredible load.</li>
<li><strong>Max + 1</strong> is<br />
used to ensure that limits placed on an application are working and that anything<br />
that does not correspond to a valid range is rejected in a reasonable manner. </li>
</ul>
<p>These would most closely correspond to Normal Boundary Value Testing as we have covered in class but they are each less abstract than those counterparts. They provide an insight on what these values look like in actual QA testing, as well as expectations upon being used. Two for example does not have an actual value associated with it, but rather refers to a testing orthodoxy outlined above. One example of a test in this vein is found in another blog, in which the author proposes the edge case of the same user trying to log in from two different computers. I believe between the two of these blogs a clearer picture of the concepts we have covered can be found through these more concrete examples of the testing procedure.</p>
<h3 class="has-text-align-center">Sources</h3>
<p><a href="https://www.freecodecamp.org/news/a-beginners-guide-to-testing-implement-these-quick-checks-to-test-your-code-d50027ad5eed/">A Beginner’s Guide to Testing: Error Handling Edge Cases</a><br /><a href="http://www.qarevolution.com/build-strong-edge-test-cases/">Build Strong Edge Test Cases</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">12043</post-id>	</item>
	</channel>
</rss>
