Joep Schuurkes (Posts about semantics)https://smallsheds.garden/categories/semantics.atom2023-11-26T10:50:51ZJoep SchuurkesNikolaQuality: different purposes, different definitionshttps://smallsheds.garden/blog/2022/quality-different-purposes-different-definitions/2022-08-24T19:41:25+02:002022-08-24T19:41:25+02:00Joep Schuurkes<div><p>For years when asked to define quality, I've said "value to a person who matters"<sup id="fnref:1"><a class="footnote-ref" href="https://smallsheds.garden/blog/2022/quality-different-purposes-different-definitions/#fn:1">1</a></sup>. Not too long ago I used that definition in the <a href="https://smallsheds.garden/blog/2021/choosing-your-value-system/">first post</a> of my four-part series "Thinking about quality". However, in the <a href="https://smallsheds.garden/blog/2021/thinking-about-quality-so-what-to-do/">fourth post</a> of that series I also said that quality is something emergent. And I continued with:</p>
<blockquote>
<p>We can have long discussions about what quality is, but that's a different question from how do you get quality?</p>
</blockquote>
<p>Today I took this one step further, when I realized that depending on the context, I talk very differently about quality. And while I may not define 'quality' explicitly in every conversation, implicitly I'm still using different definitions. That alone, I think is interesting: instead of a single, general definition of quality that always applies, I have different definitions depending on their purpose<sup id="fnref:2"><a class="footnote-ref" href="https://smallsheds.garden/blog/2022/quality-different-purposes-different-definitions/#fn:2">2</a></sup>.</p>
<p><a href="https://smallsheds.garden/blog/2022/quality-different-purposes-different-definitions/">Read more…</a> (1 min remaining to read)</p></div>"Tester" is an overloaded variablehttps://smallsheds.garden/blog/2022/tester-is-an-overloaded-variable/2022-08-04T11:39:25+02:002022-08-04T11:39:25+02:00Joep Schuurkes<div><p>Yesterday I came across a post on LinkedIn explaining why there are no testers in Scrum<sup id="fnref:1"><a class="footnote-ref" href="https://smallsheds.garden/blog/2022/tester-is-an-overloaded-variable/#fn:1">1</a></sup>. What struck me most about the post was the amount of work the word "tester" was doing. In one sentence it meant one thing (a role in a team), in the next sentence something else (a step in the process), and so on. Hence the title of this post: the word "tester" was being used as an overloaded variable. So let's do some unpacking.</p>
<h2>Testers to people management</h2>
<p><em>"Having a tester"</em> means that there are people with the official title of "tester" or "QA engineer" or whatever within the company. For the purposes of people management<sup id="fnref:2"><a class="footnote-ref" href="https://smallsheds.garden/blog/2022/tester-is-an-overloaded-variable/#fn:2">2</a></sup>, there's a distinction between this role and the other roles in the company. This allows for more specific expectations about the role, for different career paths and salary scales, etc.</p>
<p><a href="https://smallsheds.garden/blog/2022/tester-is-an-overloaded-variable/">Read more…</a> (4 min remaining to read)</p></div>Getting [name] from "Name: [name]" in Python - an engineering problemhttps://smallsheds.garden/blog/2019/getting-name-from-name-name-in-python-an-engineering-problem/2019-08-26T21:27:38+02:002019-08-26T21:27:38+02:00Joep Schuurkes<div><p>Today I was presented with an interesting engineering problem. (Important later: context was the code of an auto-test.) Given a string of the format "Name: [name]", what's the best way to get the [name] in Python?</p>
<p>There are several options:</p>
<ul>
<li><code>lstrip()</code></li>
<li><code>split()</code></li>
<li><code>replace()</code></li>
<li>string slicing</li>
<li>regex</li>
</ul>
<p>So let's look at each of them and then I'll explain which one I prefer and why. All examples are in Python 3.6, using the <a href="https://docs.python.org/3.6/tutorial/interpreter.html">Python Interpreter</a>.</p>
<p><a href="https://smallsheds.garden/blog/2019/getting-name-from-name-name-in-python-an-engineering-problem/">Read more…</a> (5 min remaining to read)</p></div>Your CI/CD pipeline does not run regression testshttps://smallsheds.garden/blog/2019/your-ci-cd-pipeline-does-not-run-regression-tests/2019-08-05T23:47:51+02:002019-08-05T23:47:51+02:00Joep Schuurkes<div><h3>CI/CD pipelines</h3>
<p>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.</p>
<p>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.</p>
<h3>Regression testing</h3>
<p>There are many definitions of regression testing, as you can read in <a href="https://arborosa.org/2015/07/31/regression-testing/">Arborosa's blog post on the topic</a>. 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.)</p>
<h3>The tests in your pipeline are regression tests, …</h3>
<p>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.</p>
<p><a href="https://smallsheds.garden/blog/2019/your-ci-cd-pipeline-does-not-run-regression-tests/">Read more…</a> (3 min remaining to read)</p></div>Regression testing, it means less than you thinkhttps://smallsheds.garden/blog/2016/regression-testing-it-means-less-than-you-think/2016-01-03T19:42:26+01:002016-01-03T19:42:26+01:00Joep Schuurkes<div><p>The past weeks I have made several attempts at a blog post about regression testing. About how we use it to refer to different things: tests running on a CI server, people executing test scripts, etc. And about how often the term really doesn't mean much at all, yet nobody questions you when you use it: "What are you doing?" "Regression testing." "Oh good, carry on." The point of the post would be to argue we should use the term 'regression testing' a lot less, because most of the time we can be more specific without having to be more verbose.</p>
<p>However, the more I thought about (what I would qualify as) proper regression testing, the more I felt that regression versus progression (or progressive) testing is a distinction without difference. One interesting observation in this regard is that "regression testing" returns 30 times more results on Google than "progression testing" and "progressive testing" combined. So what's going on here if we have a dichotomy with one member producing so much more discussion than the other? And there's more: regression testing is commonly contrasted with test types like functional testing and usability testing. But how then should I categorize a regression test focusing on functionality<sup id="fnref:1"><a class="footnote-ref" href="https://smallsheds.garden/blog/2016/regression-testing-it-means-less-than-you-think/#fn:1">1</a></sup>?</p>
<p><a href="https://smallsheds.garden/blog/2016/regression-testing-it-means-less-than-you-think/">Read more…</a> (7 min remaining to read)</p></div>Why the testing/checking debate is so messy - a fruit salad analogyhttps://smallsheds.garden/blog/2015/why-the-testingchecking-debate-is-so-messy-a-fruit-salad-analogy/2015-11-15T12:17:12+01:002015-11-15T12:17:12+01:00Joep Schuurkes<div><p>Five days ago James Thomas posted <a href="https://www.linkedin.com/grp/post/55636-6069749695687770112?trk=groups-post-b-title">the following</a> in the Software Testing & Quality Assurance group on LinkedIn:</p>
<blockquote>
<p><strong>Are Testing and Checking different or not?</strong><br>
This <a href="http://gerrardconsulting.com/?q=node/659">article by Paul Gerrard</a> explains why we shouldn't be trying to draw a distinction between checking and testing, but should be paying more attention to the skills of the testers we employ to do the job.</p>
</blockquote>
<p>I posted a reply there, but I think I can do better than those initial thoughts, so here we go.</p>
<p>Let's imagine the following scene: Alice and Bob are preparing a fruit salad together.<br>
<em>Alice</em>: "Ok, let's make a nice fruit salad. We need some apples and some fruit."<br>
<em>Bob</em>: "Euh, aren't apples fruit?"<br>
<em>Alice</em>: "Yes. Of course. But when I say 'fruit', I mean 'non-apple fruit'."</p><p><a href="https://smallsheds.garden/blog/2015/why-the-testingchecking-debate-is-so-messy-a-fruit-salad-analogy/">Read more…</a> (3 min remaining to read)</p></div>What's the word for the part of testing that's not checking?https://smallsheds.garden/blog/2015/whats-the-word-for-the-part-of-testing-thats-not-checking/2015-08-17T20:19:25+02:002015-08-17T20:19:25+02:00Joep Schuurkes<div><h3>The question I asked</h3>
<p>Yesterday <a href="https://twitter.com/j19sch/status/632910141751447552">I asked on twitter</a>:</p>
<blockquote>
<p>Question: what's the proper word for the part of testing that's not checking? #cdt #testing #semantics<br>
- Joep Schuurkes (@j19sch) August 16, 2015</p>
</blockquote>
<p>The reason I asked, is that I noticed I needed that word in discussions about testing and checking. If checking is part of testing - and in the RST namespace it most definitely is, see '<a href="http://www.satisfice.com/blog/archives/856">Testing and checking refined</a>' -, then what can I contrast checking with? Contrasting checking with testing (as in 'checking versus testing') isn't going to work: there's one thing that's checking and then there's this other thing, testing, that contains that one thing and some other stuff<sup id="fnref:1"><a class="footnote-ref" href="https://smallsheds.garden/blog/2015/whats-the-word-for-the-part-of-testing-thats-not-checking/#fn:1">1</a></sup>, but it's like a completely different thing. See the difference? Conceptually that just doesn't work - at least not in my mind.</p>
<h3>The answers I got</h3>
<p>So I figured I'd ask twitter in all its infinite testing wisdom and lo and behold, not only did people reply, a discussion ensued with the following people (listed in no particular order) participating in different configurations: <a href="https://twitter.com/eddybruin">@eddybruin</a>, <a href="https://twitter.com/mariakedemo">@mariakedemo</a>, <a href="https://twitter.com/SandroIbig">@SandroIbig</a>, <a href="https://twitter.com/TestPappy">@TestPappy</a>, <a href="https://twitter.com/dwiersma">@dwiersma</a>, <a href="https://twitter.com/ilarihenrik">@ilarihenrik</a>, <a href="https://twitter.com/PhilipHoeben">@PhilipHoeben</a>, <a href="https://twitter.com/huibschoots">@huibschoots</a> and <a href="https://twitter.com/deefex">@deefex</a>. Thank you all!</p>
<p><a href="https://smallsheds.garden/blog/2015/whats-the-word-for-the-part-of-testing-thats-not-checking/">Read more…</a> (4 min remaining to read)</p></div>Three arguments against the verification-validation dichotomyhttps://smallsheds.garden/blog/2015/three-arguments-against-the-verification-validation-dichotomy/2015-03-24T20:53:24+01:002015-03-24T20:53:24+01:00Joep Schuurkes<div><p>Last week while talking with two colleagues, one of them mentioned the verification/validation thing. And I noticed it made me feel uneasy. Because I know well enough what is meant by the distinction, but on a practical level I simply can't relate to it. When I think about what I do as a software tester and how verification versus validation applies to it, nothing happens. Blank mind. Crickets. Tumbleweed.
So after giving it some thought, I present you with three arguments against the verification-validation dichotomy.</p>
<p>First of course, we have the obligatory interlude of defining these two terms. A place to start is the Wikipedia page on <a href="http://en.wikipedia.org/wiki/Software_verification_and_validation">Software verification and validation</a>. Unfortunately it contains conflicting definitions, so if anyone cares enough, please do fix. Luckily there's also the general <a href="http://en.wikipedia.org/wiki/Verification_and_validation">Verification and validation</a> page of Wikipedia, which gives us (among others) the tl;dr version of the distinction:</p>
<ul>
<li>Verification: <em>Are we building the product right?</em></li>
<li>Validation: <em>Are we building the right product?</em></li>
</ul>
<p>Finally there's the <a href="http://www.istqb.org/downloads/finish/20/145.html">ISTQB glossary v2.4</a> that borrows from ISO 9000:</p>
<ul>
<li>Verification: <em>Confirmation by examination and through provision of objective evidence that specified requirements have been fulfilled.</em></li>
<li>Validation: <em>Confirmation by examination and through provision of objective evidence that the requirements for a specific intended use or application have been fulfilled.</em></li>
</ul>
<p>Now on to the three arguments.</p>
<p><a href="https://smallsheds.garden/blog/2015/three-arguments-against-the-verification-validation-dichotomy/">Read more…</a> (3 min remaining to read)</p></div>Five leftover thoughts on software testinghttps://smallsheds.garden/blog/2013/five-leftover-thoughts-on-software-testing/2013-08-03T12:28:32+02:002013-08-03T12:28:32+02:00Joep Schuurkes<div><p>Defect severity 'Skynet': If this gets to production, we're screwed. Really screwed.</p>
<p>The problem with templates is that the people who need them shouldn't be writing the document in the first place and that the people who don't need them, have trouble shaking off the vague sense of obligation to adhere to them.</p>
<p>Happy path application: application that works perfectly fine as long as you stick to the beaten path with your eyes half-closed.</p>
<p>The contents of a test plan can be divided into the following four categories: good stuff, cover your ass, bullshit, trivialities.</p>
<p>Buddhist software development: there is no progress, only a never-ending cycle of suffering.</p>
<p><a href="https://smallsheds.garden/blog/2013/five-leftover-thoughts-on-software-testing/">Read more…</a> (1 min remaining to read)</p></div>