In 2012, Knight Capital Group deployed software without adequate testing. In 45 minutes of stock market trading, the system made erroneous transactions that cost $460 million. The company went bankrupt in 4 days.
Software testing isn't a formality — it's business risk management.
Types of Software Testing
1. Unit Testing
Tests what: Small code units — individual functions or methods Done by: Developers Tools: Jest, JUnit, PyTest
Example: Testing that a discount calculation function returns the correct result for 10% off.
2. Integration Testing
Tests what: How multiple components work together — API + database, or frontend + backend Done by: Developers / QA engineers
Example: Testing that when a new order is created, the inventory system automatically decrements stock correctly.
3. Functional Testing
Tests what: Whether every feature works according to requirements Done by: QA engineers Method: Write test cases for every user story and execute them in sequence
4. Performance Testing
Tests what: Whether the system performs well under heavy load Done by: QA / DevOps engineers Tools: JMeter, k6, Locust
Example: Testing that the system handles 1,000 concurrent logins without crashing.
5. Security Testing
Tests what: Security vulnerabilities Done by: Security engineers / penetration testers
Examples: SQL injection, XSS, unauthorized access attempts.
6. UAT (User Acceptance Testing)
Tests what: Whether software meets business requirements and works in real conditions Done by: End users / business stakeholders Process:
- Business users receive a test script (list of scenarios to test)
- Test in a staging environment (identical to production but separate)
- Document bugs and feedback
- Sign off when satisfied
UAT is the final gate before go-live. Never skip it.
7. Regression Testing
Tests what: Whether existing features still work correctly after new code is deployed Done by: QA / automated testing When: Every time code changes
Critical Path Test Cases You Must Have
Every system must test 100% of its critical paths — "if this breaks, the business stops":
| System | Critical Path |
|---|---|
| E-commerce | Browse → Add to cart → Checkout → Payment → Confirmation |
| Booking system | Search → Select → Fill info → Payment → Confirmation → Email |
| CRM | Create lead → Assign → Update stage → Close deal |
| HR system | Submit leave → Approve → Deduct balance → Payroll |
Bug Severity Levels
Not every bug must be fixed before go-live — learn to prioritize:
| Severity | Meaning | Example | Fix before go-live? |
|---|---|---|---|
| Critical | System crash or data loss | Payment completes but no confirmation sent | ✅ Must fix |
| Major | Feature unusable | PDF export fails | ✅ Must fix |
| Minor | Feature works but with small issue | Label text has a typo | ⚠️ Fix if possible |
| Trivial | Cosmetic only | Icon slightly oversized | ❌ Post-launch is fine |
Pre-Go-Live Checklist
- All unit tests pass
- Integration tests pass for all critical flows
- Performance test: handles peak load
- Security scan: no critical vulnerabilities
- UAT sign-off from business stakeholders
- Staging deployment successful and stable
- Rollback plan ready if reversion is needed
- Monitoring and alerting configured
- Data backup completed before migration
Summary
Testing is not a step you can cut to save time or budget — it's an investment that prevents massive future costs.
The cost of a bug:
- During design: 1x
- During development: 6x
- During testing: 15x
- After launch: 100x
A professional software house will have a clear QA process and will never skip UAT.
Adowbig has QA engineers on every project with a structured UAT process, ensuring the software we deliver meets the highest quality standards. Learn more