Beginner Guide to Software Testing
2 min readMay 25, 2023
Why Software Testing? Well, Software testing is crucial as it helps identify and rectify defects or errors, ensuring the delivery of high-quality software products and enhancing user satisfaction.
Types of testing:
1. Unit — Performed at build time on code / an artifact without external dependencies or deployment.
Tools used:- JUnit, XUnit, Rspec.
2. UI (E2E testing) — Using app as end-user via front-end.
Tools used:- Selenium & Protractor.
3. Integration — Performed to test external dependencies/API.
Tools used:- Abao/RAML, Serverspec.
4. Security — Looks for flaws in code & runtime to prevent data loss in production.
Tools used:- Fortify, FindBugs, GauntLts.
5. Performance — Non-functional software testing to determine software quality on the basis of key metrics like stability, speed, scalability, and responsiveness of an application.
Tools used:- Kinsta APM, Apache JMeter, AppLoader.
Basic concepts to get started with software testing:
- Shift left terminology — Move testing to the earlier phases in the development process, this approach is taken for compliance-critical projects.
- Test fixture — Set of required objects to run tests in a well-known environment.
- System under test (SUT) — The system under test, as opposed to other systems it may interact with, but which are not being explicitly tested. Example:- Testing Ruby on Rails Application on Heroku
- Cycle time — Time taken for developing from start to delivery.
- Lead time — Time taken to resolve issues before moving to production.
- Mock class — Code containing external dependencies designed to enable unit tests.
Testing philosophies:
Test-driven Development (TDD)
Writing failing tests first, and then the code that causes the test to pass.
Behaviour-driven Development (BDD)
Mostly includes producing system documentation that is automatically
checked against the system’s behaviour. Cucumber tool is used.
Acceptance Test-driven Development (ATDD)
Practice of acceptance tests before development to set delivery expectations
for the project.
Big 3 testing Metrics:
- Cycle time
- Velocity
- Customer satisfaction
Top Industry picks!!
- GoConvey is a tool for performing Unit testing of Golang based-apps.
- For deployment use Configuration Management Systems like Chef / Puppet.
- For Orchestration — Ansible
- Source pulls or build systems like bamboo or by AWS Serverless services like Fargate/ EKS or Docker.
- Robot Framework for UI Testing.
- Dynamic Application Security Testing — GauntLt.
- retire.js to checks all JS version & upgrades >> npm install -g retire
#Please feel free to share your tips & Choice of tools in Comments section ;-)