I figured it was time for a review of some modern testing terms. Feel free to challenge me if you don’t like my definitions, which are very conversational. I selected terms I find valuable and stayed away from terms I’m bored with (e.g., “Stress Testing”, “Smoke Testing”).
Afterwards, you can tell me what I’m missing. Maybe I’ll update the list. Here we go…
Tester – Never refer to yourself as QA. That’s old school. That’s a sign of an unskilled tester. By now, we know writing software is different than manufacturing cars. We know we don’t have the power to “assure” quality. If your title still has “QA” in it, convince your HR department to change it. Read this for more.
Sapient Tester – A brain-engaged tester. It is generally used to describe a skilled tester who focuses on human “testing” but uses machines for “checking”. See James Bach’s post.
Manual Tester – A brain-dead tester. Manual testers focus on “checking”.
Test (noun) – Something that can reveal new information. Something that takes place in one’s brain. Tests focus on exploration and learning. See Michael Bolton’s post.
Check – An observation, linked to a decision rule, resulting in a bit (e.g., Pass/Fail, True/False, Yes/No). Checks focus on confirmation. A check may be performed by a machine or a human. Repetition of the same check is best left to a machine, lest the tester becomes a “Manual Tester”, which is not cool. See Michael Bolton’s posts, start here.
Developer – It takes a tester, business analyst, and programmer to develop software; even if they’re just different hats on the same person. That means if you’re a tester, you’re also a developer.
Programmer – Person on the development team responsible for writing the product code. They write code that ships.
Prog – Short version of “Programmer”. See my post.
Test Automation Engineer – This is a Tester who specializes in writing automated checks. This is the best I have so far. But here are the problems I have with it. Test Automation Engineers are also programmers who write code. That means the term “Programmer” is ambiguous. A Test Automation Engineer has the word “Test” in their title when, arguably, a test can’t be automated.
Heuristic - a fallible method for solving a problem or making a decision. Like a rule of thumb. It's fallible though, so use it with care. Why is this term in a tester dictionary? Skilled testers use heuristics to make quick decisions during testing. For example: a tester may use a stopping heuristic to know when to stop a test or which test to execute next. Testers have begun capturing the way they solve problems and creating catchy labels for new heuristics. Said labels allow testers to share ideas with other testers. Example: the 'Just In Time Heuristic' reminds us to add test detail as late as possible, because things will change. Example: the' Jenga Heuristic' reminds us that if we remove too many dependencies from a test, it will easily fall down...instead, try removing one dependency at a time to determine the breaking point.
Test Report – Something a team member or manager may ask a tester for. The team member is asking for a summary of a tester’s findings thus far. Skilled testers will have a mnemonic like MCOASTER or MORE BATS to enable a quick and thorough response.
Context Driven Testing – an approach to software testing that values context. Example: when joining a new project, Context Driven testers will ask the team what level of documentation is required, as opposed to just writing a test plan because that is what they have always done. IMO, Context Driven testers are the innovators when it comes to software testing. They are the folks challenging us to think differently and adjust our approaches as the IT industry changes. See Context Driven Testing.
Bug – Something that bugs someone who matters.
Issue – It may result in a bug. We don’t have enough information to determine that yet.
Escape – A bug found in production. A bug that has “escaped” the test environment. Counting “escapes” may be more valuable than counting “bugs”.
Follow-on Bug – A bug resulting from a different bug. “we don’t need to log a bug report for BugA because it will go away when BugB gets fixed”. I first heard it used by Michael Hunter (I think).
Safety Language – Skilled testers use it to tell an honest accurate story of their testing and preserve uncertainty. Example: “This appears to meet the requirements to some degree”, “I may be wrong”. See my post.
Test Idea – less than 140 characters. Exact steps are not necessary. The essence of a test should be captured. Each test ideas should be unique among their set. The purpose is to plan a test session without spending too much time on details that may change. Test Ideas replace test cases on my team.
Test Case Fragment – see “Test Idea”. I think they are the same thing.
AUT – Application Under Test. The software testers are paid to test. See my post and read the comments to see why I like AUT better than competing terms.
Showstopper – An annoying label, usually used to define the priority of bugs. It is typically overused and results in making everything equally important. See my post.
Velocity, Magnitude, Story Points – Misunderstood measurements of work on agile development teams. Misunderstood because Agile consultants do such a poor job of explaining them. So just use these terms however you want and you will be no worse off than most Agile teams.
Session-Based-Test-Management (SBTM) – A structured approach to Exploratory Testing that helps testers be more accountable. It involves dividing up test work into time-based charters (i.e., missions), documenting your test session live, and reviewing your findings with a team member. The Bach brothers came up with this, I think. Best free SBTM tool, IMO, is Rapid Reporter.