Beginner Guide to Software Testing

programmedraj
2 min readMay 25, 2023

--

Photo by David Travis on Unsplash

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:

  1. Shift left terminology — Move testing to the earlier phases in the development process, this approach is taken for compliance-critical projects.
  2. Test fixture — Set of required objects to run tests in a well-known environment.
  3. 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
  4. Cycle time — Time taken for developing from start to delivery.
  5. Lead time — Time taken to resolve issues before moving to production.
  6. 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 OrchestrationAnsible
  • 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 ;-)

--

--