WerasBlog

What's happening in AI, software, technology and science; plain and sourced.

Subscribe
Software

Software Testing and QA: The Basics for Product Owners

There's no such thing as bug-free software, but there is a testing process that finds bugs before your users do. We cover test types, acceptance testing and what a good bug report looks like.

Software Testing and QA: The Basics for Product Owners
Image: Daniil Komov · Unsplash · Unsplash License

The software testing process is a planned set of checks that confirm software works as expected and that new changes don't break existing features. A healthy process combines automated tests (unit, integration and end-to-end) with tests done by people (exploratory testing and acceptance testing). In this article we explain the test types from a product owner's point of view, your role in acceptance testing, and how to write a good bug report.

Why testing isn't just "the last step"

A common mistake is to think of testing as a check left for the end of development. The later a bug is found, the more it costs to fix: a misunderstood business rule can be fixed with a conversation at the requirements stage, but found after launch it may require data fixes, user communication and an emergency release.

That's why quality assurance (QA) is an approach that runs from the very start of a project:

  • Testable acceptance criteria are defined while requirements are written,
  • Automated tests are written during development,
  • Checks are run in a preview environment at the end of each iteration,
  • Acceptance testing and final checks happen before release,
  • After release, the live environment is monitored with error tracking.

Test types used in the software testing process

Unit tests

These test the smallest pieces of code, such as a discount calculation function, in isolation. They run fast and catch errors in business rules early. As a product owner you won't see them directly, but asking whether complex business rules are protected by unit tests is a fair question.

Integration tests

These check that multiple parts work correctly together: the app talking properly to the database, the payment provider or the accounting system. They matter most in projects that depend on outside systems.

End-to-end tests

These drive a browser automatically, like a real user, to run main flows from start to finish: signing up, logging in, placing an order. Because they're slow and harder to maintain, they're usually written only for the most critical flows.

Regression tests

These confirm that a new change hasn't broken something that used to work. This is where automated tests pay off most: every change triggers a recheck of all critical flows.

Exploratory testing

A tester or developer hunting for bugs by pushing the app without sticking to a script. Unexpected inputs, abandoned transactions, the back button, double clicks: situations like these surface here.

Acceptance testing (UAT)

This is where you and your team confirm, with real scenarios, that the software meets the business need. It's the testing phase you're directly responsible for in the project.

How much testing is enough?

It's neither possible nor necessary to automate tests for everything in every project. The common, practical approach is:

  • Lots of fast unit tests for business rules and calculations,
  • Integration tests for connections to outside systems,
  • A small number of end-to-end tests for critical flows involving money, data loss or access,
  • Manual checks for the interface and usability.

When deciding how much to test, ask: "What happens if this breaks?" If the answer is "a customer gets charged the wrong amount" or "data gets lost," that part needs strong test coverage. If the answer is "a heading slips out of alignment," a visual check by a person may be enough.

Test environments

For tests to mean anything, they have to run in the right environments. A typical project has:

  • Local development environment: The developer's own machine. Unit tests run here constantly.
  • Preview environment: A temporary link created for each change or iteration that you can access too. Most acceptance testing happens here.
  • Staging environment: An environment configured as close to production as possible, where final checks happen before release.
  • Production: The system real users use.

Real personal data shouldn't be used in test environments. Realistic but fake or anonymized data is safer under KVKK (Turkey's data protection law) and also makes test scenarios repeatable. Outside services like payments should run in test mode too; no real money should move during testing.

Your role in acceptance testing

Acceptance testing needs input from the people who know the work best: you and your team. For efficient acceptance testing:

  1. Prepare scenarios in advance. List the ten things you do most often in your daily work and try each one in the software.
  2. Use realistic data. Try real-world cases like long names, Turkish characters, zero-amount orders and large numbers of records.
  3. Test with different roles. Log in with each user role and check that it sees only what it should.
  4. Test on different devices. Use the phones and computers your team actually works on.
  5. Collect findings in one place. Feedback scattered across email, messaging and phone calls gets lost.

A good bug report template

The quality of a bug report directly affects how quickly it gets fixed. You can use this template:

  • Title: Short and descriptive. Example: "Out-of-stock product can be added to cart."
  • Environment: Which link (preview or production), which browser and device.
  • User role: Which account you were logged in with.
  • Steps: The numbered steps to reproduce the bug.
  • Expected result: What did you expect to happen?
  • Actual result: What happened?
  • Screenshot or recording: A screen recording if possible.
  • Severity: Blocker, major or minor.

Using this structure instead of one-word reports like "broken" lets the team reproduce the bug on the first try.

Quality after launch

Testing doesn't end at launch. In production:

  • Error tracking tools automatically report the errors users run into,
  • Performance monitoring shows which pages are slowing down,
  • A user feedback channel surfaces cases the test scenarios missed.

Adding a regression test for every significant bug you find keeps the same bug from coming back.

It's also worth reviewing the testing process itself from time to time. Bugs found in production show which kind of testing is missing: calculation errors point to unit tests, problems caused by outside systems to integration tests, and flows where users get stuck to acceptance test scenarios that need strengthening.

Questions you can ask as a product owner

To get a sense of the testing process, you can ask the development team:

  • Which business rules are protected by automated tests?
  • Do tests run automatically on every change?
  • Which environment and test accounts will we use for acceptance testing?
  • Where will bugs be tracked, and how will they be reported to us?
  • How will we notice errors after launch?

Concrete answers to these questions show whether the team treats quality as a process.

Conclusion

The software testing process is a systematic way to find bugs before your users do. Automated tests protect critical business rules and flows; acceptance testing confirms that the software actually works for your business. At Weras Labs, every iteration is shared via a preview link, so acceptance testing is spread throughout development instead of piling up at the end; you can see how we work on our services page.

#software testing#qa#quality assurance#acceptance testing

From Weras Labs

We can help you with this

We turn what you just read into working software for your business. You talk to the person writing the code; price and timeline are clear from day one.

Frequently asked questions

Who is responsible for acceptance testing?

Acceptance testing is done by the client side to confirm the software meets the business need. The development team can help set up the environment and scenarios, but sign-off comes from the business.

Does everything need automated tests?

No. Critical business rules and flows involving money, data or access should have strong automated coverage. Interface details and usability can be assessed with manual checks.

What is regression testing?

Testing that confirms a new change hasn't broken features that used to work. Automated tests make it possible to recheck critical flows on every change.

What should a good bug report include?

The environment, user role, steps to reproduce, expected and actual results, a screenshot and the severity. This information lets the team reproduce the bug quickly.

About the author

Habip Dayan

Habip Dayan

Founder of Weras Labs

Habip Dayan is the founder of Weras Labs, a company that builds software products for professionals and teams. He has been building software since 2018 and writes about AI, cloud architecture and product design.

Comments

Be respectful; no ads or personal data. Comments that break the rules are removed.