Skip to main content

Software is guilty until proven innocent - What is software testing?


When I was still in college taking up my Information Technology course, our curriculum is mostly centered on programming. We didn't really have a major back but most of the major subjects are about learning C, Java, HTML, CSS, Javascript, Python, game development, mobile development, etc. So yeah, as a student the only career track that I know about this field is being a software developer. No one enrolls in an IT course and says "I want to be a software tester when I graduate!". I don't even know that such a career exists.

For this post, I'm just going to share high-level detail about what we do in software testing.

In a nutshell, software testing is like being in a courtroom

I get this mental image in my head sometimes whenever I do my work so I'll just share this. Forgive me for my poor analogy because I'm not familiar with terms in the court. 

Imagine that you're in a court room where the software is the defendant and the testers are the prosecution. Our job is to present evidence against the defendant to the judge and jury which can be the project teams, product owners, or developers. Sometimes the developers can be the defense attorney ("But it works on my machine!").

However, there's a small difference between when a person and software are put on trial: a person is innocent until proven guilty, while the software is guilty until proven innocent.

This means that when I receive the software or a feature for testing, I already assume that it has bugs and my tests will prove that. If I ran all my tests and I did not spot any issues, then I can declare that the software is innocent and provide the sign-off. If my tests fail then the software is guilty and I just wait until the next trial.

The trial can be short or it can be long and complex. It depends on what's being put into trial, and how much effort I need to put into proving the issue, or sometimes it could be that it's not just a black-and-white type of issue and needs several rounds to conclude.


Popular posts from this blog

Reframing how I identify bug root causes

It's been more than a year now since I've set up our bug tracking in JIRA. In there, I've set up an Issue Root Cause custom field where it had the following options: Incorrect coding Unclear / Missing / Incorrect Requirements Unclear / Missing / Incorrect Design Insufficient / Duplicated / Incorrect Testing Deployment Issue Environment Third-party issue My thoughts when I listed these as options is so that it would be easy to identify which team is responsible for the cause why we had that bug. They're pretty straightforward -  Incorrect coding  is of course when the developers didn't follow the expectations,  Unclear / Missing / Incorrect Requirements is because there's a gap in the requirement, and so on. And also, it's because that was the way it's done in my previous company so that's also my initial knowledge source. Recently, I've been reading a few articles regarding Shift Left, reducing silos, and generally how quality is a team activit...

QA Tools: Custom Test Case Generator in Google Sheet using Google App Script

When testers have to document test cases, it's usually done in the traditional format of putting all your test cases and steps in one sheet. Once it accumulates, for me it can be overwhelming to look at. It looks something like this: As a solution, I decided to make a tool that will help me focus on only drafting my test scenarios and look at my test cases one at a time. I'd like to share this here with everyone else who's like me. Hopefully, it can make your testing journey even a little better. Test Case Generator Tool This tool is for QA or non-QAs who need to write test cases. What it can do: Write your test scenarios in one tab Focus on writing steps for each test case one sheet at a time Generate an import file Generate a test execution document Sample test execution document: Scroll to the bottom to see how it works. Sheet Purpose Test Scenarios This is where you set the details for this test set/the project/story/epic where you're creating the test cases u...

A Bug's Life! Defect Management Process in Software Testing

First things first, what does a "bug" mean in the software development process? A bug is what we call a behavior that is different from what's expected based on the provided requirements. A tester's main purpose is to find and report bugs in the system as early as possible. In some companies, it's sometimes called a "defect". They actually mean slightly different if we go by the book. In this post, I'll be covering the lifecycle of a software bug which are issues that are found during the development phase. You're testing the system and you found a bug. What is the first thing you do? a) You immediately write a bug report b) You try to reproduce it c) You complain "How could this very obvious bug reach QA? Dev should've spotted this earlier ugh." The formal answer is B (I'll just let you figure out what's the informal answer), It's common for a QA to be gaslighted. "I cannot reproduce this bug.", "It doesn...