I still have doubts about potential bugs and whether the QA tests cover all critical scenarios
I opposed this, insisting I would take responsibility and lead the delivery
Despite my confidence, I’m now questioning whether we’ve done enough to mitigate risks before moving to production.
Pick a lane.
Either you think the product is ready for delivery, or you don't. But you're thinking one thing and telling your lead something else (to the point of overriding them and taking on all the responsibility for the failures that can ensue).
You're flitting between contradictory stances and the only consistent behavior I see from you is rejecting doing what you're supposed to do.
- You skipped testing during development,
- You relied on tests that you now tell us you think don't actually cover everything,
- When given extra time to address those concerns you dismiss them and double down against not only your own judgment but that of your tech lead
- You're now rushing to ensure stability and minimize risks, still somehow glossing over the option of writing the tests that you've so far refused to write since the beginning.
Based on what you've presented, your development style is best described by that of an unguided projectile. You make erratic decisions, don't consider the long term ramifications, and state the opposite of what you believe when communicating to your lead.
What are the best steps to ensure stability and minimize risks at this stage, given the limited testing?
Write the damn tests.
Why do we test things? To make sure that they behave according to specifications.
How do we ensure that things behave according to specifications? We write tests.
You're asking how to confirm that things conform to specifications, but somehow still aren't thinking of writing the tests that confirm this. What answer are you waiting for, because clearly you're ignoring the answer that you already know.
How can I better handle similar situations in the future to balance delivery speed with quality assurance?
Let's start with low hanging fruit: if a lead is telling you that they're okay with delaying the deadline to address concrete concerns with the project, concerns that you very much believe to be true, why on Earth would you reject that?
That's not a balancing issue, that's just outright doing the opposite of what you believe and effectively undermining your entire team's project.
For the future, I think you need to revisit why you think tests need to be written in the first place. I can explain my take on it (which I will), but I can't make you believe/understand it; that part is up to you.
While writing tests adds an additional upfront cost to development, they start paying dividends in the future when you start debugging/maintaining/refactoring your codebase. Don't trick yourself into thinking that you'll do it perfectly the first time. You will need to revisit your logic. You will break things when making those changes. You will fail to catch those introduced bugs if you rely solely on your ability to not make mistakes. The tests that you will already have written by the time you're in that stage will tell you exactly what you've broken.
The upfront cost of writing the tests pales in comparison to the added effort from all the extra bugs and difficulties with debugging that you'd suffer from the lack of tests. For any business application with a sustained lifespan, tests are essential to keeping the codebase maintainable.
If a codebase is not maintainable, the application dies and a new one has to be built from scratch. Not only is this a tremendous waste of effort, it will take a long time of developers needing to deal with an unmaintainable mess before anyone will greenlight any rewriting effort (if ever).
If a contractor builds a house that ends up collapsing in on itself two years into the build, the contractor is to blame. "The customer asked me to rush the build" is not a valid excuse for the contractor to build a shoddy house.
Do not undercut the quality of your codebase, because you will cause suffering for anyone who has to maintain your messy results. That will be you and/or your coworkers.