<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Developing In Test]]></title><description><![CDATA[Developing In Test]]></description><link>https://www.developingintest.com</link><image><url>https://www.developingintest.com/img/substack.png</url><title>Developing In Test</title><link>https://www.developingintest.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 16 Jun 2026 14:58:24 GMT</lastBuildDate><atom:link href="https://www.developingintest.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Nathan Thompson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[developingintest@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[developingintest@substack.com]]></itunes:email><itunes:name><![CDATA[Nathan Thompson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Nathan Thompson]]></itunes:author><googleplay:owner><![CDATA[developingintest@substack.com]]></googleplay:owner><googleplay:email><![CDATA[developingintest@substack.com]]></googleplay:email><googleplay:author><![CDATA[Nathan Thompson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Developing the QA Mindset: Curiosity]]></title><description><![CDATA[In this final installment of the QA mindset series I'm providing some examples of how to bring curiosity to your exploration of software.]]></description><link>https://www.developingintest.com/p/developing-the-qa-mindset-curiosity</link><guid isPermaLink="false">https://www.developingintest.com/p/developing-the-qa-mindset-curiosity</guid><dc:creator><![CDATA[Nathan Thompson]]></dc:creator><pubDate>Mon, 08 Jun 2026 15:15:48 GMT</pubDate><content:encoded><![CDATA[<p>Hey folks, I&#8217;m back again with the final installment of the QA mindset series. So far I&#8217;ve talked a lot about how and why we step into the QA mindset, but I haven&#8217;t really touched on what it actually is. If I were to sum it up in one word, I would say it&#8217;s curiosity. The trouble with that answer is it&#8217;s very hard to try to tell someone how to be curious. For today&#8217;s post, I&#8217;m going to try to do so by looking outside of our day-to-day work and exploring a few examples of others applying curiosity to what they do.</p><p>The first example comes from a job many years ago. I worked at a two-sided market place, so our users were both people buying things and people selling things. The sellers were a particularly lucrative target for scammers. The ploy was simple: a scammer would create an account with an avatar and name that appeared to be a site admin, send the seller a message that a sale had failed to process, and ask the seller to provide updated bank account information. I was on a project that was trying to prevent those scammers from contacting our sellers.</p><p>The messages started off easy to identify. The body was plain text, the username was overt, the avatar was simply our company logo. We built an AI model that classified these as spam, and the rate of sellers opening these messages dropped precipitously. In response, the scam messages steadily became more obfuscated. The avatars were just the first letter of our company name in our classic font, then generic clip art of people in tech support. The body became images instead of plain text. As we rolled out optical character recognition, the scammers began tweaking the resolution of the image and tinting the background to try to evade detection while still appearing legitimate enough to convince our sellers.</p><p>The most frustrating part of this work was that the scammers always seemed to have a new tactic that we would have to account for. The relentless evolution of their attacks brought us to a boiling point when one of my team members openly suggested we could have a mole in our company. That&#8217;s when the director overseeing the project brought us back down to Earth. &#8220;It&#8217;s simple,&#8221; he said, &#8220;these scammers are just using the QA mindset to find our weaknesses.&#8221;</p><p>While I&#8217;m not suggesting you start an illegal social engineering ring, the analogy is apt. These scammers were constantly asking, what if? What if I swap out the avatar? What if I darken the image background? What if I tweaked the language here? While their actions had a very specific goal of thwarting our defenses, the crux of their success was relentless curiosity. We can apply that same curiosity to our own testing practices to head off bad actors from doing it themselves.</p><p>My second example isn&#8217;t quite so bleak. Instead of using the QA mindset for nefarious purposes, this creator uses it for entertainment. Josh Knoles of the YouTube channel Let&#8217;s Game It Out regularly posts videos in which he gets an early-access video game and, for lack of a better description, intentionally plays it wrong. He forces his way out of bounds, pushes the limits on all features, and in general finds any way possible to complete his tasks while avoiding what the developer intended. As an example, here he is playing <a href="https://www.youtube.com/watch?v=UuMFCfixvRw">Parcel Simulator</a>. I think this video is great. If you watch it, try to listen to Josh&#8217;s thought process as he goes through the game because it&#8217;s a fantastic model for how to approach an application with curiosity.</p><p>And that&#8217;s it! Four posts on the QA mindset. I hope you&#8217;ve gained some useful knowledge somewhere in all of this. I&#8217;ll be back again next time with a post on a new topic. In the meantime, feel free to keep the conversation going in the comments.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.developingintest.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Developing In Test! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Developing the QA Mindset: Ample Time to Explore]]></title><description><![CDATA[In this installment of the QA mindset series I'm talking about why it's important to carve out time for exploratory testing.]]></description><link>https://www.developingintest.com/p/developing-the-qa-mindset-ample-time</link><guid isPermaLink="false">https://www.developingintest.com/p/developing-the-qa-mindset-ample-time</guid><dc:creator><![CDATA[Nathan Thompson]]></dc:creator><pubDate>Mon, 25 May 2026 15:15:52 GMT</pubDate><content:encoded><![CDATA[<p>Hey folks, I&#8217;m back again with another installment of the QA mindset series. Today I wanted to talk about the importance of allotting ample time to explore. This is a tricky one because it&#8217;s easy to spend a bunch of time testing without ever entering the QA mindset. In order to understand the nuances of testing, let&#8217;s discuss how and why we should be manually testing our application.</p><p>First off, let&#8217;s talk about three primary types of testing: regression, acceptance, and exploratory testing. Regression testing is when you know that a feature or flow has worked in the past and you are ensuring that it still works. Acceptance testing is when you are verifying that a new feature meets the needs outlined in its design. Exploratory testing is when you are trying out new flows that no one thought of before. This latter type once again puts you in <a href="https://www.developingintest.com/p/developing-the-qa-mindset">the role of the tester from the three amigos planning session</a>. Now that you have a functioning app in front of you, you seek out edge cases that no one considered.</p><p>While regression testing is incredibly important, it&#8217;s not reflective of the QA mindset. By the time you&#8217;ve gotten to this style of testing, you have a strong sense of what is supposed to happen. You might even have a complete test plan that you&#8217;ve already run through before. This style of testing can quickly become mindless box-checking that does not play to the strengths of a human. What&#8217;s more, regression testing also has quickly diminishing returns. <a href="https://astqb.org/istqb-foundation-level-seven-testing-principles/">The Pesticide Paradox</a> tells us that the more times you run the same test, the less likely it is to catch a bug. All of these are reasons why we strive to offload regression testing to automated tools that are much cheaper than manual testing.</p><p>Acceptance testing seems like it would involve the QA mindset, but it&#8217;s possible to sidestep that mode of thinking while still verifying the feature. Consider the practice of QA parties. The act of writing a test plan offers us the opportunity to enter the QA mindset when identifying test cases. However, test cases can easily be pulled from the acceptance criteria of the feature, effectively just translating a set of requirements into a series of actions. Similarly, a developer going off-script during the QA party to try a new flow is an exploration, but QA parties frequently involve multiple developers running the same set of tests across different browsers, limiting the class of bugs they can catch. Furthermore, when the person writing the test plan is the same person that wrote the code, then the plan is susceptible to <a href="https://www.developingintest.com/p/developing-the-qa-mindset-distance">the same attentional bias we talked about in the last post</a>.</p><p>So regression testing has a diminishing probability of catching bugs, and acceptance testing typically confirms what we already expected to be true. How do we create space to find the unexpected bug? Ultimately, the most valuable asset humans bring to testing is our novel thinking, and we need time to express that through exploratory testing. This helps ferret out difficult to anticipate failure conditions and creates an overall more polished product for our users. This is the power of the QA mindset. That&#8217;s why we need to intentionally carve out time for high-leverage exploratory testing as part of our standard process, and it&#8217;s the reason why I advocate for peer testing at the pull request stage.</p><p>That&#8217;s all for now. If you have any thoughts about creating space for testing, feel free to drop them in the thread or pop into the comments. Next post we&#8217;ll talk about the most difficult aspect of the QA mindset: how to bring curiosity to your testing. Until then!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.developingintest.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Developing In Test! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Developing the QA Mindset: Distance From The Code]]></title><description><![CDATA[Hey folks! Today I wanted to talk about a key factor for stepping into the QA mindset: distance from the code.]]></description><link>https://www.developingintest.com/p/developing-the-qa-mindset-distance</link><guid isPermaLink="false">https://www.developingintest.com/p/developing-the-qa-mindset-distance</guid><dc:creator><![CDATA[Nathan Thompson]]></dc:creator><pubDate>Mon, 11 May 2026 15:15:33 GMT</pubDate><content:encoded><![CDATA[<p>Hey folks! I&#8217;m back again with another installment of the QA mindset series. Today I wanted to talk about a key factor for stepping into the QA mindset: distance from the code.</p><p>You may be wondering, why is distance from the code so fundamental to the QA mindset? Speaking for myself, I was a QA / SDET for 7+ years. I am very capable of testing things well. However, the difference between when I&#8217;m testing my own code versus when I&#8217;m testing someone else&#8217;s code is night and day. If I just spent a day hammering on a problem, and I finally get it to work, then I often only spend my time on narrow acceptance testing. If I&#8217;m coming in fresh to a change I&#8217;ve never seen before, I&#8217;m much more capable of approaching the task with the curiosity necessary for effective exploratory testing.</p><p>So what accounts for this difference? I attribute this to a form of attentional bias. Attentional bias is the tendency to focus on a particular stimulus that grabs our attention or is somehow emotionally charged, at the expense of missing other, less gripping information. When we as developers have been hard at work writing code, we are more likely to focus on the satisfaction of finishing a difficult feature than the work of ferreting out bugs hidden in edge cases. This inhibits our ability to step into the QA mindset, and it&#8217;s why I always advocate that someone other than the code owner should test a change during the pull request stage. This process is not without its cost. The reviewer needs to fully context switch to review mode, often stashing their own in-flight changes to load up a feature branch in their development environment. However, the cost of not doing so is a test run with blinders on.</p><p>This is also why it&#8217;s so important to have someone play the role of tester in the planning phase. As I described in my last post, the tester is one of the three amigos of planning, and is tasked with thinking about edge cases. Their attention is intentionally drawn away from how the feature should work as they are encouraged to focus on how the feature will break. This can be a difficult role to step into at first, so let&#8217;s take a moment to talk about frameworks for planning and writing work tickets that can make this easier. I&#8217;m a proponent of the INVEST framework, which states a ticket should be:</p><ul><li><p>Independent</p></li><li><p>Negotiable</p></li><li><p>Valuable</p></li><li><p>Estimable</p></li><li><p>Small</p></li><li><p>Testable</p></li></ul><p>I like to apply this framework to any ticket that gets reviewed in refinement or team planning. For teams new to INVEST, I would even suggest explicitly asking these questions for each ticket. &#8220;Is it Independent? Is it Negotiable? Is it Valuable? &#8230;&#8221; As you build this muscle, discussions about story writing will naturally occur in planning. Whether you&#8217;re an expert in this process or giving it a try for the first time, you&#8217;ll likely find that asking whether a ticket is testable inevitably leads to questions of how you will test it and what you will test. This works wonders for improving feature quality. When we create space for these discussions and normalize this mode of thinking, we begin to expand our attention beyond the narrow criteria of the feature. We step into the QA mindset and see the broader space this work occupies in the whole system.</p><p>That&#8217;s it for this post. Next time we&#8217;ll pick up again with a discussion of carving out time for testing!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.developingintest.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Developing the QA Mindset]]></title><description><![CDATA[The QA mindset is a state you need to enter in order to effectively test, well, anything really. In this series, I&#8217;ll detail how I developed my QA mindset.]]></description><link>https://www.developingintest.com/p/developing-the-qa-mindset</link><guid isPermaLink="false">https://www.developingintest.com/p/developing-the-qa-mindset</guid><dc:creator><![CDATA[Nathan Thompson]]></dc:creator><pubDate>Mon, 27 Apr 2026 15:16:02 GMT</pubDate><content:encoded><![CDATA[<p>Welcome folks! To kick off this Substack I wanted to dig into some practical aspects of actually testing code, so I&#8217;m starting with a series about &#10024;The QA Mindset&#10024;</p><p>As the name suggests, the QA mindset is a state of mind that a person needs to enter in order to effectively test, well, anything really. It prepares you to look at a piece of software objectively so that you can identify if it is ready to be sent to our users. Stepping into the QA mindset is a skill unto itself, and interviews for Quality Assurance Engineers typically try to ferret out how well a candidate can leverage this mode of thinking.</p><p>Over the next few posts I&#8217;ll try to capture how I approached the QA mindset during the 7+ years when manual testing was a core function of my work. However, before we get into the what and how of the matter, it&#8217;s important to understand <em>when</em> this mode of thinking should be applied. The obvious answer is that you need it when you are testing a piece of software. While this is objectively correct, if you&#8217;re waiting until a story is dev complete to leverage the QA mindset, then you are likely days if not weeks behind the curve. Discussions about testing should at least happen during story refinement, and for larger initiatives they should take place during product design.</p><p>To understand what those conversations look like, it&#8217;s useful to refer to Cucumber and the tenets of Behavior-Driven Development. Many of you may have used Cucumber as a testing tool, and if so you probably hated it. There&#8217;s a simple reason for that: Cucumber is not a testing tool. As its creators have said, Cucumber is <a href="https://cucumber.io/blog/collaboration/the-worlds-most-misunderstood-collaboration-tool/">the world&#8217;s most misunderstood collaboration tool</a>. Viewed through that lens, it&#8217;s no surprise that <a href="https://bookshop.org/p/books/the-cucumber-book-behaviour-driven-development-for-testers-and-developers-aslak-hellesoy/0565698f84ba85cb">The Cucumber Book</a> spends a significant amount of time discussing the practice of testing. This portion in particular has always stuck with me:</p><blockquote><p><strong>Three Amigos</strong></p><p>The best [test] scenarios are created when the three amigos come together, bringing three very different perspectives:</p><p>- The first amigo is a tester, who thinks about how to break things. The tester will typically come up with lots of scenarios, sometimes covering obscure edge cases and sometimes covering very important ones that no one else had thought of.</p><p>- The second amigo is a programmer, who thinks about how to make things. The programmer will typically add steps to scenarios, as he asks clarifying questions about what exactly should happen.</p><p>- The third amigo is the product owner, who cares about scope. When the tester thinks of scenarios that hit edge cases the product owner doesn&#8217;t care about, she can tell the team to drop that scenario out of scope altogether, or the group can decide to test it with unit tests only. When the programmer explains that implementing a particular scenario will be complicated, the product owner has the authority to help decide on alternatives or to drop it altogether.</p></blockquote><p>You may be wondering, what does that mean for my company that has not hired dedicated Quality Assurance Engineers to be the first amigo? It&#8217;s important to remember that &#8220;tester&#8221; is not a job description. It&#8217;s a role that <em>must</em> be filled on a team. If we do not hire engineers who specialize in that role, then the folks we have must develop the skills necessary to play it themselves. That means it&#8217;s incumbent upon all of us to develop our QA mindset.</p><p>Over the next few posts, I&#8217;ll be digging into the three key factors for effectively entering and leveraging the QA mindset: distance from the code, ample time to explore, and curiosity. Stay tuned!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.developingintest.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item></channel></rss>