Do we need automated tests, or is manual testing enough?
Most products need both, in different proportions. Automation earns its keep on the flows you run every release and cannot afford to break — login, checkout, payment callbacks, role permissions — because a machine re-runs them for free. Manual and exploratory testing catches what no script thinks to ask: the odd layout on a small screen, the confusing error message, the state nobody planned for. The honest trade-off is timing, since automating a screen that is still being redesigned weekly means paying for it twice, so we hold off until the flow settles.
When in the project should testing actually start?
Before code, ideally. A tester reading the acceptance criteria will find contradictions and missing cases while they still cost nothing to fix — what happens if a coupon expires mid-checkout, what an instructor can see that a student must not. Bring us in at the end and we will still test properly, but expect some findings to be design decisions rather than defects, and those are the expensive kind to change late.
What does a test plan cover, and what does it leave out?
It names what we are testing, on which browsers, devices and environments, with what data, and what has to pass before a release goes out. It also fixes severity levels up front, so "critical" means the same thing to your team and ours. What it deliberately leaves out is exhaustive coverage of every possible combination — that is not achievable at any budget — along with load and performance work unless you commission it separately. For third-party systems such as payment gateways or government tax endpoints, we test our integration and how it behaves when they fail, not their service itself.
What happens once you find a bug?
It gets written up with reproducible steps, environment, build number, and a screen recording or log where that helps, then triaged for severity and passed to the engineer who owns that area. The fix goes on a branch and is retested by the person who raised it, on the environment where it failed — a bug closes on verification, never on a developer saying it is done. If we have seen that failure before, a regression check joins the suite so it cannot come back quietly. Cosmetic, low-severity items are often batched into a later release; that call is yours, and we will tell you which ones we think can wait.
Who keeps the automated tests working as the product keeps changing?
We do, for as long as we are engaged. Test updates go into the same pull request as the change that broke them, rather than a backlog nobody clears, and flaky tests get fixed or deleted — a suite people have learned to ignore is worse than no suite. If you take the work in-house, we hand over the CI configuration, the Docker setup that runs everything, and a short runbook. Be realistic about what follows: without a named owner, an automated suite degrades within a couple of release cycles.