Category Archives: CS@Worcester

Sprint #3 Retrospective

 Hello

I cannot believe how quickly this year has come to a close. It seems like just yesterday I was struggling comprehending what I was doing in this course, but now I have gotten to the point where I feel like I have a grasp on how things are actually going. In terms of what got done, I implemented Rabbit at long last, and it only took me 3 sprints to get here! Along with that I made sure the messages we were sending matched the specifications posted on discord, and I made sure that the messages were only being sent if the requests themselves were valid (i.e. weight isn’t null, and it won’t take more than the inventory has). I think I really came into my own near the end of my time in this class,  I did a good job speaking to my group more often, I put out a number of good commits, and overall I had a better grasp on what was actually going on, which I certainly couldn’t say at the start. Though if I had to pinpoint something that didn’t work very well, I definitely think it was my communication with my group about what all of my work actually does. I get consistently asked what certain ports are being used for, and near the end of the sprint we ran into a snag relating to a library I was using. If I had explained what everything was more thoroughly, it could have prevented some headaches in my opinion. Our team continues to work quite well together, we communicate pretty openly at meetings, and I am not afraid to ask questions like I was before. I think near the end of the sprint we kind of lost focus a bit, and we, myself included, started slacking off on things once the majority of the sprint’s work had been done. We might have been able to come up with some other issues than the ones we have posted on Gitlab, but perhaps we wouldn’t have, who can really say for sure, our stuff is basically already done from my understanding. As for me, I am trying not to slack on any of the work required for this class in the last weeks of the semester. While the last presentation is a good week or so away, I am trying to make myself as available as possible, and I am trying to keep on top of everything so that the presentation isn’t rushed. 

For the design pattern I’ve chosen for this post, I went with something that I feel really encapsulates all of the work I’ve done over the course of the semester, and that is Sustainable Motivations. The pattern states that a software craftsman should hone their skills to cope with ever changing specifications and demands from customers. It recommends trying to remain motivated by writing things down that motivate you about your work, and trying to keep in mind that not every day programming will be perfect. Throughout the course of the semester I have had a kind of moving target problem with the scope of my work. At the beginning, the issue I was assigned requested I use RabbitMQ to send messages on inventory actions, but it did not mention the fact that RabbitMQ wasn’t implemented in the Inventory Backend at all. So suddenly, the scope of my work had changed dramatically, and I spent most of the first sprint stressing that I wasn’t doing as much as I should while I got RabbitMQ running. Later on, things like queue creation and library conflicts became a problem, and it seemed like the further I got in, the farther away completion of my goal was. I think if I had read this pattern at the start of the semester, or even at the start of sprint 3, I would have taken some time to actualize that I was never going to have a static goal with this kind of work, and perhaps I would have cut myself a little slack in that regard. 

Overall I’ve enjoyed this class quite a bit, and my time in college in general, since I am graduating. I’ve learned a lot from this course, and gained a lot of experience that I will doubtlessly use in industry. So, all that remains now is for me to coast through the finish line, and see where my career takes me from there.

Thanks for reading my blog! Who knows when or if I’ll post again, but it’s been interesting writing about all the work I’ve been doing for classes in a public facing way. I might even try this whole thing again sometime, who knows! :p

 

Merge Requests:

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/69

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/68

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/66

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Sprint #3 Retrospective

 Hello

I cannot believe how quickly this year has come to a close. It seems like just yesterday I was struggling comprehending what I was doing in this course, but now I have gotten to the point where I feel like I have a grasp on how things are actually going. In terms of what got done, I implemented Rabbit at long last, and it only took me 3 sprints to get here! Along with that I made sure the messages we were sending matched the specifications posted on discord, and I made sure that the messages were only being sent if the requests themselves were valid (i.e. weight isn’t null, and it won’t take more than the inventory has). I think I really came into my own near the end of my time in this class,  I did a good job speaking to my group more often, I put out a number of good commits, and overall I had a better grasp on what was actually going on, which I certainly couldn’t say at the start. Though if I had to pinpoint something that didn’t work very well, I definitely think it was my communication with my group about what all of my work actually does. I get consistently asked what certain ports are being used for, and near the end of the sprint we ran into a snag relating to a library I was using. If I had explained what everything was more thoroughly, it could have prevented some headaches in my opinion. Our team continues to work quite well together, we communicate pretty openly at meetings, and I am not afraid to ask questions like I was before. I think near the end of the sprint we kind of lost focus a bit, and we, myself included, started slacking off on things once the majority of the sprint’s work had been done. We might have been able to come up with some other issues than the ones we have posted on Gitlab, but perhaps we wouldn’t have, who can really say for sure, our stuff is basically already done from my understanding. As for me, I am trying not to slack on any of the work required for this class in the last weeks of the semester. While the last presentation is a good week or so away, I am trying to make myself as available as possible, and I am trying to keep on top of everything so that the presentation isn’t rushed. 

For the design pattern I’ve chosen for this post, I went with something that I feel really encapsulates all of the work I’ve done over the course of the semester, and that is Sustainable Motivations. The pattern states that a software craftsman should hone their skills to cope with ever changing specifications and demands from customers. It recommends trying to remain motivated by writing things down that motivate you about your work, and trying to keep in mind that not every day programming will be perfect. Throughout the course of the semester I have had a kind of moving target problem with the scope of my work. At the beginning, the issue I was assigned requested I use RabbitMQ to send messages on inventory actions, but it did not mention the fact that RabbitMQ wasn’t implemented in the Inventory Backend at all. So suddenly, the scope of my work had changed dramatically, and I spent most of the first sprint stressing that I wasn’t doing as much as I should while I got RabbitMQ running. Later on, things like queue creation and library conflicts became a problem, and it seemed like the further I got in, the farther away completion of my goal was. I think if I had read this pattern at the start of the semester, or even at the start of sprint 3, I would have taken some time to actualize that I was never going to have a static goal with this kind of work, and perhaps I would have cut myself a little slack in that regard. 

Overall I’ve enjoyed this class quite a bit, and my time in college in general, since I am graduating. I’ve learned a lot from this course, and gained a lot of experience that I will doubtlessly use in industry. So, all that remains now is for me to coast through the finish line, and see where my career takes me from there.

Thanks for reading my blog! Who knows when or if I’ll post again, but it’s been interesting writing about all the work I’ve been doing for classes in a public facing way. I might even try this whole thing again sometime, who knows! :p

 

Merge Requests:

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/69

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/68

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/66

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Sprint #3 Retrospective

 Hello

I cannot believe how quickly this year has come to a close. It seems like just yesterday I was struggling comprehending what I was doing in this course, but now I have gotten to the point where I feel like I have a grasp on how things are actually going. In terms of what got done, I implemented Rabbit at long last, and it only took me 3 sprints to get here! Along with that I made sure the messages we were sending matched the specifications posted on discord, and I made sure that the messages were only being sent if the requests themselves were valid (i.e. weight isn’t null, and it won’t take more than the inventory has). I think I really came into my own near the end of my time in this class,  I did a good job speaking to my group more often, I put out a number of good commits, and overall I had a better grasp on what was actually going on, which I certainly couldn’t say at the start. Though if I had to pinpoint something that didn’t work very well, I definitely think it was my communication with my group about what all of my work actually does. I get consistently asked what certain ports are being used for, and near the end of the sprint we ran into a snag relating to a library I was using. If I had explained what everything was more thoroughly, it could have prevented some headaches in my opinion. Our team continues to work quite well together, we communicate pretty openly at meetings, and I am not afraid to ask questions like I was before. I think near the end of the sprint we kind of lost focus a bit, and we, myself included, started slacking off on things once the majority of the sprint’s work had been done. We might have been able to come up with some other issues than the ones we have posted on Gitlab, but perhaps we wouldn’t have, who can really say for sure, our stuff is basically already done from my understanding. As for me, I am trying not to slack on any of the work required for this class in the last weeks of the semester. While the last presentation is a good week or so away, I am trying to make myself as available as possible, and I am trying to keep on top of everything so that the presentation isn’t rushed. 

For the design pattern I’ve chosen for this post, I went with something that I feel really encapsulates all of the work I’ve done over the course of the semester, and that is Sustainable Motivations. The pattern states that a software craftsman should hone their skills to cope with ever changing specifications and demands from customers. It recommends trying to remain motivated by writing things down that motivate you about your work, and trying to keep in mind that not every day programming will be perfect. Throughout the course of the semester I have had a kind of moving target problem with the scope of my work. At the beginning, the issue I was assigned requested I use RabbitMQ to send messages on inventory actions, but it did not mention the fact that RabbitMQ wasn’t implemented in the Inventory Backend at all. So suddenly, the scope of my work had changed dramatically, and I spent most of the first sprint stressing that I wasn’t doing as much as I should while I got RabbitMQ running. Later on, things like queue creation and library conflicts became a problem, and it seemed like the further I got in, the farther away completion of my goal was. I think if I had read this pattern at the start of the semester, or even at the start of sprint 3, I would have taken some time to actualize that I was never going to have a static goal with this kind of work, and perhaps I would have cut myself a little slack in that regard. 

Overall I’ve enjoyed this class quite a bit, and my time in college in general, since I am graduating. I’ve learned a lot from this course, and gained a lot of experience that I will doubtlessly use in industry. So, all that remains now is for me to coast through the finish line, and see where my career takes me from there.

Thanks for reading my blog! Who knows when or if I’ll post again, but it’s been interesting writing about all the work I’ve been doing for classes in a public facing way. I might even try this whole thing again sometime, who knows! :p

 

Merge Requests:

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/69

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/68

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/66

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Sprint #3 Retrospective

 Hello

I cannot believe how quickly this year has come to a close. It seems like just yesterday I was struggling comprehending what I was doing in this course, but now I have gotten to the point where I feel like I have a grasp on how things are actually going. In terms of what got done, I implemented Rabbit at long last, and it only took me 3 sprints to get here! Along with that I made sure the messages we were sending matched the specifications posted on discord, and I made sure that the messages were only being sent if the requests themselves were valid (i.e. weight isn’t null, and it won’t take more than the inventory has). I think I really came into my own near the end of my time in this class,  I did a good job speaking to my group more often, I put out a number of good commits, and overall I had a better grasp on what was actually going on, which I certainly couldn’t say at the start. Though if I had to pinpoint something that didn’t work very well, I definitely think it was my communication with my group about what all of my work actually does. I get consistently asked what certain ports are being used for, and near the end of the sprint we ran into a snag relating to a library I was using. If I had explained what everything was more thoroughly, it could have prevented some headaches in my opinion. Our team continues to work quite well together, we communicate pretty openly at meetings, and I am not afraid to ask questions like I was before. I think near the end of the sprint we kind of lost focus a bit, and we, myself included, started slacking off on things once the majority of the sprint’s work had been done. We might have been able to come up with some other issues than the ones we have posted on Gitlab, but perhaps we wouldn’t have, who can really say for sure, our stuff is basically already done from my understanding. As for me, I am trying not to slack on any of the work required for this class in the last weeks of the semester. While the last presentation is a good week or so away, I am trying to make myself as available as possible, and I am trying to keep on top of everything so that the presentation isn’t rushed. 

For the design pattern I’ve chosen for this post, I went with something that I feel really encapsulates all of the work I’ve done over the course of the semester, and that is Sustainable Motivations. The pattern states that a software craftsman should hone their skills to cope with ever changing specifications and demands from customers. It recommends trying to remain motivated by writing things down that motivate you about your work, and trying to keep in mind that not every day programming will be perfect. Throughout the course of the semester I have had a kind of moving target problem with the scope of my work. At the beginning, the issue I was assigned requested I use RabbitMQ to send messages on inventory actions, but it did not mention the fact that RabbitMQ wasn’t implemented in the Inventory Backend at all. So suddenly, the scope of my work had changed dramatically, and I spent most of the first sprint stressing that I wasn’t doing as much as I should while I got RabbitMQ running. Later on, things like queue creation and library conflicts became a problem, and it seemed like the further I got in, the farther away completion of my goal was. I think if I had read this pattern at the start of the semester, or even at the start of sprint 3, I would have taken some time to actualize that I was never going to have a static goal with this kind of work, and perhaps I would have cut myself a little slack in that regard. 

Overall I’ve enjoyed this class quite a bit, and my time in college in general, since I am graduating. I’ve learned a lot from this course, and gained a lot of experience that I will doubtlessly use in industry. So, all that remains now is for me to coast through the finish line, and see where my career takes me from there.

Thanks for reading my blog! Who knows when or if I’ll post again, but it’s been interesting writing about all the work I’ve been doing for classes in a public facing way. I might even try this whole thing again sometime, who knows! :p

 

Merge Requests:

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/69

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/68

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/66

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

Sprint #3 Retrospective

 Hello

I cannot believe how quickly this year has come to a close. It seems like just yesterday I was struggling comprehending what I was doing in this course, but now I have gotten to the point where I feel like I have a grasp on how things are actually going. In terms of what got done, I implemented Rabbit at long last, and it only took me 3 sprints to get here! Along with that I made sure the messages we were sending matched the specifications posted on discord, and I made sure that the messages were only being sent if the requests themselves were valid (i.e. weight isn’t null, and it won’t take more than the inventory has). I think I really came into my own near the end of my time in this class,  I did a good job speaking to my group more often, I put out a number of good commits, and overall I had a better grasp on what was actually going on, which I certainly couldn’t say at the start. Though if I had to pinpoint something that didn’t work very well, I definitely think it was my communication with my group about what all of my work actually does. I get consistently asked what certain ports are being used for, and near the end of the sprint we ran into a snag relating to a library I was using. If I had explained what everything was more thoroughly, it could have prevented some headaches in my opinion. Our team continues to work quite well together, we communicate pretty openly at meetings, and I am not afraid to ask questions like I was before. I think near the end of the sprint we kind of lost focus a bit, and we, myself included, started slacking off on things once the majority of the sprint’s work had been done. We might have been able to come up with some other issues than the ones we have posted on Gitlab, but perhaps we wouldn’t have, who can really say for sure, our stuff is basically already done from my understanding. As for me, I am trying not to slack on any of the work required for this class in the last weeks of the semester. While the last presentation is a good week or so away, I am trying to make myself as available as possible, and I am trying to keep on top of everything so that the presentation isn’t rushed. 

For the design pattern I’ve chosen for this post, I went with something that I feel really encapsulates all of the work I’ve done over the course of the semester, and that is Sustainable Motivations. The pattern states that a software craftsman should hone their skills to cope with ever changing specifications and demands from customers. It recommends trying to remain motivated by writing things down that motivate you about your work, and trying to keep in mind that not every day programming will be perfect. Throughout the course of the semester I have had a kind of moving target problem with the scope of my work. At the beginning, the issue I was assigned requested I use RabbitMQ to send messages on inventory actions, but it did not mention the fact that RabbitMQ wasn’t implemented in the Inventory Backend at all. So suddenly, the scope of my work had changed dramatically, and I spent most of the first sprint stressing that I wasn’t doing as much as I should while I got RabbitMQ running. Later on, things like queue creation and library conflicts became a problem, and it seemed like the further I got in, the farther away completion of my goal was. I think if I had read this pattern at the start of the semester, or even at the start of sprint 3, I would have taken some time to actualize that I was never going to have a static goal with this kind of work, and perhaps I would have cut myself a little slack in that regard. 

Overall I’ve enjoyed this class quite a bit, and my time in college in general, since I am graduating. I’ve learned a lot from this course, and gained a lot of experience that I will doubtlessly use in industry. So, all that remains now is for me to coast through the finish line, and see where my career takes me from there.

Thanks for reading my blog! Who knows when or if I’ll post again, but it’s been interesting writing about all the work I’ve been doing for classes in a public facing way. I might even try this whole thing again sometime, who knows! :p

 

Merge Requests:

https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/69

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/68

 https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/inventorysystem-weight-based/inventorybackend/-/merge_requests/66

From the blog Camille's Cluttered Closet by Camille and used with permission of the author. All other rights reserved by the author.

AI Incorperation In Software Testing

For this weeks’ log entry, I wanted to cover a topic that relates to the class but was not covered. I wanted to conduct some research of my own in regards to how AI is changing the ways in which people are testing code, as well as some of the new testing methods that are being used thanks to implementation of AI. When researching this topic, I came across a podcast titled, “The Role Of AI In Software Testing” by Test & Code on spotify. I also specifically chose this podcast because of both its popularity, as well as because of its recency, given that it was posted just over one week ago.

Over the past few years, AI has exploded in its popularity. Not only is AI able to process basic information with relatively high accuracy, but it is able to do so in such a manner as to allow that information to be processed automatically. One thing that AI is now being used to do within a software testing space is generate tests. In general, many people entering the software testing field or programming in general, do not have a very high level of comfort or practice with writing tests. AI in this case is beginning to be implemented to fill the gaps in knowledge that people have (writing tests in this case), allowing people to theoretically make more progress while working for the same amount of time with less debugging needed. AI technology has even developed far enough to the point where people are using it to completely replace the rest of their role in writing most coding and testing projects. At a point not too long ago, people were using AI to help write tests and code to meet a specification, but now things are much different. People are easily able to use AI to generate not only a specification for itself to write code for, but also write competent code to fulfill that specification that it gave itself, while also writing and running tests for it. AI has become scary good when it comes to being competent at writing almost all kinds of tests and code. For now, the code it writes is just competent. It is able to complete a task but often not in ways that we, as humans, would think to be a logical solution to the specification given, and also often not in the way that we intend. One way that AI is being quickly incorporated into the workplace is through tools and writing or describing how to write certain things for programmers or testers that may not have an expertises in a certain aspect of the job and need assistance with getting started. For those who are more informed in the field, looking at AI responses to questions that people are asking or answers generated, such as how to perform certain tasks, can be jarring and often return responses that are more than unsatisfactory, but in a weird way, when the person who is using the AI is also the person who is uninformed on how to compete a task, the only thing shown is satisfactory by the person who finished their testing earlier than they expected. 

From the blog CS Blogs with Aidan by anoone234 and used with permission of the author. All other rights reserved by the author.

Understanding QA Testing

I’ve always wondered what other roles exist in the tech industry besides software engineers or developers. Then I discovered QA testers, and I wanted to know exactly what they do. I chose to reflect on the article What is QA Testing? because it provides a comprehensive introduction to Quality Assurance (QA) testing. This is a topic we’ve explored in our Software Quality Assurance course. I found this resource particularly useful because it clearly explained the entire QA testing process, from requirement analysis to test execution and verification, while also explaining why QA is essential in software development.

The article defines QA testing as a process used to ensure that a software product meets customer requirements and functions correctly before it is released. Traditionally, QA testing happened at the end of the development cycle. However, modern practices now include QA throughout the entire process. This shift helps QA teams detect and resolve issues earlier, leading to improved efficiency and better teamwork.

The article outlines the QA process in six major stages: analyzing requirements, planning, test case development, test execution, verification, and documentation. Each step is explained in detail, showing how important it is to follow a structured and thoughtful approach to maintain high software quality. The article also introduces best practices such as combining manual and automated testing, using crowdtesting, adopting DevOps workflows, and applying predictive analytics. These practices help teams maintain high standards without slowing down delivery.

I chose this article because I’ve always been curious about how software is tested before it is released. After taking this course, I now understand that QA testing is more than just finding bugs. It involves improving user experience, ensuring reliability, and supporting the development team in delivering better products. This article helped me better understand those ideas and the important role QA plays in every project.

What stood out to me the most was the idea that QA should be an ongoing part of development rather than something saved for the end. This supports what we’ve learned in class, that early testing saves time, money, and effort in the long run. I also learned about tools like bug trackers and test scenario checklists, which help organize the QA process and make it more efficient.

After reading this article, I feel encouraged to explore QA roles further. Even if I am not working as a developer, I now see how I can still make meaningful contributions to a tech team. I’ve learned that skills like analytical thinking, attention to detail, and strong documentation are essential in QA, and these are skills I am actively working to improve. In the future, I plan to apply what I’ve learned by incorporating test planning and QA thinking into every project I work on.

Reference:
Team, The Upwork. “QA Testing: Beginner’s Guide to Quality Assurance.” Upwork.com, Upwork, 6 Sept. 2022, http://www.upwork.com/resources/what-is-qa-testing.

From the blog CS@Worcester – CodedBear by donna abayon and used with permission of the author. All other rights reserved by the author.

Real-World Testing

This week, I read a blog post called “Netflix App Testing at Scale” which is based on an interview with Ken Yee, a Senior Engineer at Netflix. It takes a look at how Netflix tests their Android app, which is one of the most widely used streaming apps in the world. With over a million lines of code, 400+ modules, and support for all kinds of devices (including foldables and Android Go phones), testing at Netflix isn’t just about making sure the app works—it’s about making sure it works everywhere. I chose this article because we’ve been covering testing frameworks and strategies in class, and this felt like the real-world version of everything we’ve been learning. I also use Netflix a lot,  it is interesting to learn how they keep it running smoothly through so many updates and features. This blog helped me connect the theory from class to an actual large-scale product.

Netflix used to have a separate team of SDETs (Software Development Engineers in Test), but now every feature team handles their own testing. That includes unit tests, screenshot tests, and end-to-end tests. They still have two SDETs who help across teams, but quality is everyone’s job now. I thought that was cool—it encourages developers to think about testing earlier and more often, rather than just tossing it over to QA at the end. They also go into the frameworks they use. For unit tests, they use tools like Strikt (for fluent assertions), Turbine (to help with Kotlin Flows), and Mockito (for mocks). They also use Hilt for dependency injection and Robolectric when they need to test Android-specific logic. What stood out to me was how conscious they are of performance—each layer of test framework (plain unit → Hilt → Robolectric → device tests) adds more time, so they encourage developers to keep tests as fast and simple as possible. That’s a great tip I’ll definitely remember for my own projects. I also learned a lot from their section on flakiness. I hadn’t realized how much those little issues could mess up tests—and how fixing them makes everything more reliable. Finally, Netflix uses screenshot testing heavily. They use Paparazzi for Jetpack Compose UI, localization testing for checking designs across different languages, and even visual accessibility checks. It is interesting to find out that they care about accessibility and localization.

This blog gave me a better understanding of how layered and thoughtful good testing needs to be—especially at scale. I’ll definitely use what I learned about speed, flakiness, and strategy in my future development work.

From the blog cameronbaron.wordpress.com by cameronbaron and used with permission of the author. All other rights reserved by the author.

Legacy Tests : A Problem From Mindset

The blog post “What Do You Fix When You Fix a Test?” by Joep Schuurckes explores the nuanced decisions developers and testers face when a test fails. The central question is whether the issue lies in the test itself, the code under test, or possibly even the expectations behind the test. Schuurckes starts with bringing up the topic of legacy tests, legacy test code that makes “more decisions about what and how things are tested than the team.” He encourages readers to reflect before blindly “fixing” a test by editing it to pass again. This is what he calls “tests-as-code” where the developer is trying to change the code of the test so that it passes rather than treating it with the mindset of “tests-as-code”. “Tests-as-code” would be where the developer looks at a failing test as an information dump where each test returns some kind of data and thus any changes must preserve that data return. Part of keeping tests as code is keeping to a naming scheme so that each test is obvious in what you are expecting as a return which is the exact same thing I was taught in class, but now I understand the reasoning a bit more.

This post made me rethink what it means to “fix a test.” I’ve been guilty of tweaking test code just to get everything green in the test runner again, without stopping to think whether the test was telling me something important. Joep’s approach feels like a call for discipline and care in testing—treating tests as important resources in the codebase rather than disposable tools. The idea that tests should be maintained with this way of thinking resonated with me, especially since I’ve seen how neglected or misleading tests can erode trust in automated test suites.

Going forward, I want to adopt a more mindful approach when a test fails. Instead of rushing to “fix” it, I’ll start by asking why it failed. Is the requirement outdated? Is the test too brittle? Has the functionality truly changed? Also, I want to be more deliberate in writing tests—designing them to clearly document behavior and to be resilient against irrelevant changes. This is especially relevant for integration tests, which are often more vulnerable to external factors and instability. By treating each failed test as an opportunity to learn, not just a checklist item to resolve, I hope to contribute to codebases that are easier to maintain and trust.

source :
https://smallsheds.garden/blog/2024/what-do-you-fix-when-you-fix-a-test/

From the blog Coder's First Steps by amoulton2 and used with permission of the author. All other rights reserved by the author.

Testers Aren’t Developers ! Their Role Is There for a Reason

The article “The Difference in Perspective of Testers and Developers” by Vijay provides a comparison of how software testers and developers approach software QA and testing. Developers are often focused on building features that work as intended, with an optimistic mindset geared toward implementation. Testers, on the other hand, adopt a critical mindset, aiming to uncover flaws, edge cases, and unintended consequences. The article explains that while developers ensure that the software does what it’s supposed to do, testers ensure it doesn’t do what it’s not supposed to do. This difference in thought processes is not a conflict but a complement to creating robust, reliable software. The article encourages improved collaboration, mutual respect, and open communication between these roles to produce higher-quality software.

Reading this article gave me a better understanding of how vital both roles are in the software development lifecycle. As a CS student who has done more programming than testing, I’ve often written code with the assumption that if it runs without errors and produces the expected result, it’s good to go. But throughout my QA and Testing class, through reading different blogs, I now see how much that perspective misses. I haven’t always taken the time to think about how a user might unintentionally (or maliciously) use the software, or how fragile assumptions can be unless they’re tested thoroughly. It’s easy to feel like bugs are personal flaws, but this article helped me appreciate the tester’s role and the stark difference in mindsets because I truly saw testing as just another tool in the developer toolkit and not as the fully fleshed-out role it is.

This new understanding is something I plan to apply in future group projects. I want to make a conscious effort to invite feedback from teammates who are testing my code, and more importantly, not take that feedback defensively. I also want to improve my own testing practices by thinking like a tester during development. That means writing unit tests that go beyond the “happy path” and trying to break my own code before someone else does. In larger projects, I now see the importance of collaboration between testers and developers early in the development process, rather than waiting until the end to start thinking about quality. Encouraging open communication can lead to better designs and fewer bugs downstream.

source:
https://www.softwaretestinghelp.com/the-difference-in-perspective-of-testers-and-developers/

From the blog Coder's First Steps by amoulton2 and used with permission of the author. All other rights reserved by the author.