<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Joep Schuurkes (Posts about test automation)</title><link>https://smallsheds.garden/</link><description></description><atom:link href="https://smallsheds.garden/categories/test-automation.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:site@joep.slmail.me"&gt;Joep Schuurkes&lt;/a&gt; 
&lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" rel="nofollow" target="_blank"&gt;
&lt;img alt="Creative Commons BY-NC License" style="border-width:0;margin: 0px 0px 0px 0px" src="https://licensebuttons.net/l/by-nc/4.0/80x15.png" /&gt;
&lt;/a&gt;
</copyright><lastBuildDate>Wed, 22 Apr 2026 17:46:51 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Some of the things I did after being off for a few weeks</title><link>https://smallsheds.garden/blog/2025/some-of-the-things-i-did-after-being-off-for-a-few-weeks/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;em&gt;I wish people would share more of what they do day-to-day. Especially testers and quality engineers. Show the work you do. On the other hand, I do realize that that's hard. You don't want to share sensitive information. You want to respect the privacy of your team. And then there's the whole practical side. How much of the context do you need to share to have an intelligible story?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Since my current project is open source and my team works in public, I have more options than most. So let's see if this kind of post works out.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Last week was my first week back at work after a few weeks of vacation. So an important part of my week was catching up. Going through emails and chat messages. Talk with my fellow team members. Participate in the usual meetings. Some stuff that didn't make it into this post. More importantly, there are three things I did, that give a good idea of what a significant part of my job looks like.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2025/some-of-the-things-i-did-after-being-off-for-a-few-weeks/"&gt;Read more…&lt;/a&gt; (5 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>exploratory testing</category><category>quality engineering</category><category>software testing</category><category>test automation</category><guid>https://smallsheds.garden/blog/2025/some-of-the-things-i-did-after-being-off-for-a-few-weeks/</guid><pubDate>Tue, 01 Jul 2025 22:00:00 GMT</pubDate></item><item><title>What do you fix when you fix a test?</title><link>https://smallsheds.garden/blog/2024/what-do-you-fix-when-you-fix-a-test/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;You ran the tests&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://smallsheds.garden/blog/2024/what-do-you-fix-when-you-fix-a-test/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt; - or a pipeline did it for you - and some of them failed. Time to fix the tests! But what is it exactly that needs fixing?&lt;/p&gt;
&lt;p&gt;There are quite a few things that might make a test fail:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;an issue with the build&lt;/li&gt;
&lt;li&gt;an issue with the pipeline (if that's where the test runs)&lt;/li&gt;
&lt;li&gt;an issue in the environment the code under test is running on&lt;/li&gt;
&lt;li&gt;an issue in the environment the test code is running on&lt;/li&gt;
&lt;li&gt;a bug in the code under test&lt;/li&gt;
&lt;li&gt;a mistake in the test code&lt;/li&gt;
&lt;li&gt;a mistake in what the test should test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Arguably, on the last three describe a test that fails. The test did its job detecting a problem. In the first four we didn't even get that far. The issues prevented the test from doing its job. So in those cases, it's not the test(s) as such that need fixing.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2024/what-do-you-fix-when-you-fix-a-test/"&gt;Read more…&lt;/a&gt; (5 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>coverage</category><category>quality engineering</category><category>software testing</category><category>test automation</category><category>test strategy</category><guid>https://smallsheds.garden/blog/2024/what-do-you-fix-when-you-fix-a-test/</guid><pubDate>Sat, 24 Aug 2024 22:00:00 GMT</pubDate></item><item><title>Tackling test automation in a new language</title><link>https://smallsheds.garden/blog/2024/tackling-test-automation-in-a-new-language/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;While there's value in learning all the ins-and-outs of one particular language, its ecosystem and its testing libraries, I think there's also a lot of value in having experience in several. Or at least, in two. If you only know one, you don't really know what's essential and what's incidental to the one set of tools you know. You don't know from experience in what ways things could be different.&lt;/p&gt;
&lt;p&gt;Picking up a new language is not trivial though, especially if it's your second one. There will be a lot to learn. You will notice similarities between the new language and the one(s) you already know. Sometimes those similarities will help you, sometimes they will mislead you.&lt;/p&gt;
&lt;p&gt;Also, it's more than picking up a new language. There are also the testing libraries you will use
and the language's ecosystem (e.g. how to install those libraries&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://smallsheds.garden/blog/2024/tackling-test-automation-in-a-new-language/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt; or how to set up a pre-commit hook with a linter). That's quite a package.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2024/tackling-test-automation-in-a-new-language/"&gt;Read more…&lt;/a&gt; (3 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>agile</category><category>communication</category><category>programming</category><category>test automation</category><guid>https://smallsheds.garden/blog/2024/tackling-test-automation-in-a-new-language/</guid><pubDate>Sat, 10 Feb 2024 23:00:00 GMT</pubDate></item><item><title>Metrics, models and conversations</title><link>https://smallsheds.garden/blog/2023/metrics-models-and-conversations/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;A few weeks ago someone suggested we should start measuring how many automated test cases versus how many manual test cases we have. Luckily it was part of a longer list of suggested metrics and it was also presented in that way: a list of options, to be discussed later. And the reason I say "luckily" is because I knew I disagreed with using that metric, but didn't have a good explanation as to why. At that moment I could have given a minutes-long monologue about how that metric doesn't fit how I think we should be thinking about testing. However, I have zero expectations that such a monologue could have worked in that situation. It would be all over the place as I philosophize about testing and make all kinds of connections and analogies. A convincing argument that does not make.&lt;/p&gt;
&lt;p&gt;So since then, I've been thinking: how would I explain my position on measuring manual versus automated test cases? Something to the point, something relatable, something that acknowledges the need behind asking for this metric. And then it hit me: use cooking as an analogy. Now I know plenty of people have made this analogy before. However, I don't remember reading everything I will cover in this post somewhere else. Also, there's value in different people saying similar things, but each in their own voice.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2023/metrics-models-and-conversations/"&gt;Read more…&lt;/a&gt; (4 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>communication</category><category>measurements</category><category>metrics</category><category>test automation</category><category>tools</category><guid>https://smallsheds.garden/blog/2023/metrics-models-and-conversations/</guid><pubDate>Sun, 12 Mar 2023 09:11:25 GMT</pubDate></item><item><title>Your CI/CD pipeline does not run regression tests</title><link>https://smallsheds.garden/blog/2019/your-ci-cd-pipeline-does-not-run-regression-tests/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;h3&gt;CI/CD pipelines&lt;/h3&gt;
&lt;p&gt;The purpose of a CI/CD pipeline is to allow you to deliver small changes in a fast and controlled way. Without any tests in your pipeline you would gain a lot of speed. You'd also lose a lot control, which is why people in general do run tests in their pipeline. The purpose of these tests is to check if that stage of the pipeline meets the minimum level of acceptable quality for that stage.&lt;/p&gt;
&lt;p&gt;For example, commit stage tests will consist of mostly unit tests, a few integration tests, and even fewer end-to-end tests, because early in the pipeline speed is more important than comprehensiveness. When I commit my changes, I want the results fast enough so that I will wait for them - ready to fix any issue that might occur.&lt;/p&gt;
&lt;h3&gt;Regression testing&lt;/h3&gt;
&lt;p&gt;There are many definitions of regression testing, as you can read in &lt;a href="https://arborosa.org/2015/07/31/regression-testing/"&gt;Arborosa's blog post on the topic&lt;/a&gt;. I have always defined regression testing along the lines of "testing the parts that weren't impacted by a change to see if they really weren't impacted." (Which is really weird if you start thinking about it: something is regression testing depending on your knowledge of the system and the change.)&lt;/p&gt;
&lt;h3&gt;The tests in your pipeline are regression tests, …&lt;/h3&gt;
&lt;p&gt;Most of the tests that run in your pipeline are regression tests. Your commits are small and you have a lot of tests, so most of those will cover parts of the system that shouldn't have been impacted by your changes. So yes, regression tests.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2019/your-ci-cd-pipeline-does-not-run-regression-tests/"&gt;Read more…&lt;/a&gt; (3 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>ci/cd</category><category>devops</category><category>regression testing</category><category>semantics</category><category>test automation</category><guid>https://smallsheds.garden/blog/2019/your-ci-cd-pipeline-does-not-run-regression-tests/</guid><pubDate>Mon, 05 Aug 2019 21:47:51 GMT</pubDate></item><item><title>How this tester writes code</title><link>https://smallsheds.garden/blog/2019/how-this-tester-writes-code/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;A long time ago (March 2015) I wrote a post titled "&lt;a href="https://smallsheds.garden/blog/2015/test-automation-five-questions-leading-to-five-heuristics/"&gt;Test automation - five questions leading to five heuristics&lt;/a&gt;". Later that year &lt;a href="https://twitter.com/richrtesting"&gt;Rich Rogers&lt;/a&gt; asked for a follow-up. To which I replied I should do a follow-up post (ahum) "soon".
Then last Wednesday &lt;a href="https://twitter.com/noahsussman"&gt;Noah Sussman&lt;/a&gt; said on &lt;a href="https://twitter.com/noahsussman/status/1136288062651142149"&gt;twitter&lt;/a&gt;: &lt;em&gt;'I don't know that I've *ever* seen "this is how testers write code"'&lt;/em&gt;. To which I replied "challenge accepted", so now here we are, me writing a blog post about how I as a tester write code.&lt;/p&gt;
&lt;p&gt;The format of this post turned out to be advice based on my experiences, so the usual disclaimers apply. And feel free to leave a comment if you have any feedback!&lt;/p&gt;
&lt;h3&gt;The basics&lt;/h3&gt;
&lt;h4&gt;use an IDE&lt;/h4&gt;
&lt;p&gt;An IDE is not just an advanced text editor. It understands your code - to a degree, since it's not interpreting, compiling or executing the code. So not only allows an IDE you to manipulate your code as text, it also allows you to manipulate your code as code.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2019/how-this-tester-writes-code/"&gt;Read more…&lt;/a&gt; (14 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>heuristics</category><category>IDEs</category><category>programming</category><category>python</category><category>test automation</category><guid>https://smallsheds.garden/blog/2019/how-this-tester-writes-code/</guid><pubDate>Sat, 08 Jun 2019 16:21:38 GMT</pubDate></item><item><title>Solving Black Box Puzzle 31 with data analysis</title><link>https://smallsheds.garden/blog/2019/solving-black-box-puzzle-31-with-data-analysis/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;a href="https://twitter.com/workroomprds"&gt;James Lyndsay&lt;/a&gt; has created a number of amazing &lt;a href="http://blackboxpuzzles.workroomprds.com/"&gt;Black Box Puzzles&lt;/a&gt;: tiny applications that challenge you to figure out what they do. (You can support him in creating more of these at &lt;a href="https://www.patreon.com/workroomprds"&gt;his Patreon page&lt;/a&gt;.) Two of these Puzzles, &lt;a href="http://blackboxpuzzles.workroomprds.com/puzzle29/"&gt;29&lt;/a&gt; and &lt;a href="http://blackboxpuzzles.workroomprds.com/puzzle31/"&gt;31&lt;/a&gt;, not only have a GUI to explore, but also an API.&lt;/p&gt;
&lt;p&gt;And that gave me an idea. If you explore these Puzzles through their GUI, you start from the inputs. You try out different inputs in the hope of discovering a pattern in the outputs. And then that pattern feeds back into your exploration.&lt;br&gt;
With an API, however - and because of the nature of Puzzle 31 - it becomes easy to get the outputs for all possible combinations of inputs. Which means you can start your exploration from the outputs instead of the inputs.&lt;/p&gt;
&lt;p&gt;Before I tell you how and what I did, three important remarks.&lt;br&gt;
First of all, I will be spoiling the solution to the Puzzle in this blog post. So this is the right moment to go and solve &lt;a href="http://blackboxpuzzles.workroomprds.com/puzzle31/"&gt;Puzzle 31&lt;/a&gt; for yourself first. Or at least go play a bit with it, so you have an idea what the inputs and outputs are.&lt;br&gt;
Secondly, I had already solved the Puzzle through the GUI a few months ago. So it was more of a "Can I find the solution this way as well?" than a "Can I find the solution?" thing.&lt;br&gt;
Finally, the code and the spreadsheet I created (linked throughout, also available on GitHub &lt;a href="https://github.com/j19sch/blackbox-puzzle-31"&gt;here&lt;/a&gt;), are not very clean. I thought about tidying them up, but my two reasons for not doing so are (1) laziness; (2) the way they are now gives a more honest picture of what I did.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2019/solving-black-box-puzzle-31-with-data-analysis/"&gt;Read more…&lt;/a&gt; (18 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>black box puzzle</category><category>data analysis</category><category>exploratory testing</category><category>python</category><category>test automation</category><guid>https://smallsheds.garden/blog/2019/solving-black-box-puzzle-31-with-data-analysis/</guid><pubDate>Sun, 28 Apr 2019 11:16:34 GMT</pubDate></item><item><title>Test automation - five questions leading to five heuristics</title><link>https://smallsheds.garden/blog/2015/test-automation-five-questions-leading-to-five-heuristics/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;&lt;em&gt;I wrote a &lt;a href="https://smallsheds.garden/blog/2019/how-this-tester-writes-code/"&gt;follow-up&lt;/a&gt; to this post in June 2019 in which I &lt;a href="https://smallsheds.garden/blog/2019/how-this-tester-writes-code/#revisiting-my-blogpost-from-2105"&gt;revisit the heuristics&lt;/a&gt; from this post.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In 1984 Abelson and Sussman said in the Preface to '&lt;a href="https://mitpress.mit.edu/sicp/"&gt;Structure and Interpretation of Computer Programs&lt;/a&gt;':&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Our design of this introductory computer-science subject reflects two major concerns. First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. &lt;strong&gt;Thus, programs must be written for people to read, and only incidentally for machines to execute.&lt;/strong&gt; Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems. [emphasis mine]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This oft-quoted sentence I emphasized, is even more true if the purpose of our programs is test automation&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://smallsheds.garden/blog/2015/test-automation-five-questions-leading-to-five-heuristics/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt;. So let's say you run your test automation program and the result is a list of passes and fails.  The purpose of testing is to produce information. You could say that this list of results qualifies as information and I would disagree. I would say it is data, data in need of interpretation. When we attempt this interpretation, we should consider the following five questions.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2015/test-automation-five-questions-leading-to-five-heuristics/"&gt;Read more…&lt;/a&gt; (6 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>heuristics</category><category>programming</category><category>test automation</category><category>testing and checking</category><guid>https://smallsheds.garden/blog/2015/test-automation-five-questions-leading-to-five-heuristics/</guid><pubDate>Tue, 24 Mar 2015 19:53:24 GMT</pubDate></item><item><title>Lessons learned in some test automation</title><link>https://smallsheds.garden/blog/2013/lessons-learned-in-some-test-automation/</link><dc:creator>Joep Schuurkes</dc:creator><description>&lt;div&gt;&lt;p&gt;In the past two weeks I built a test tool in VBA (Visual Basic for Applications). I did this, because two weeks ago my fellow tester showed me an important test we have to do at least once for each major release. The test consists of having the application generate three reports in Excel format. On two of these reports you apply a set of filters and take the sum of a few columns, rinse and repeat. Then you add several of those sums together and the results of those calculations should match the numbers in the third report. So basically, the point of the test is to check if the numbers in the three reports add up. And it's a lot of work, i.e. about two days.&lt;/p&gt;
&lt;p&gt;After being shown how to perform the test, the first thought that popped into my head, was: "Boring!" The second thought was: "It's automatable!" And since there was little else to do - delivery of the new test environments was delayed - I changed it from automatable to automated.&lt;/p&gt;
&lt;p&gt;So now, after two weeks, I have this tool in VBA. For each of the three reports it contains a sheet in which you define the sets of filters and sums. If you click a big button, the report is opened and the filters and sums are applied. There's also a fourth sheet to do the second set of calculations and to do the check if the numbers match. This last part is not done in VBA; it's all formulas in Excel.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://smallsheds.garden/blog/2013/lessons-learned-in-some-test-automation/"&gt;Read more…&lt;/a&gt; (8 min remaining to read)&lt;/p&gt;&lt;/div&gt;</description><category>programming</category><category>test automation</category><category>VBA</category><guid>https://smallsheds.garden/blog/2013/lessons-learned-in-some-test-automation/</guid><pubDate>Mon, 18 Feb 2013 20:46:02 GMT</pubDate></item></channel></rss>