Software Testing Fundamentals

What is Quality Assurance and Software Testing?

Quality Assurance: is referred as QA. It is a process to determine whether the software meets the customer needs.
Software Testing: to prevent problems in an application so users don't encounter crashes and bugs.

How To Ensure Quality?

Good quality results in an excellent product, that is built as specified by the end-user and works reliably. Quality can be measured in multiple ways by:

  • Customer happiness
  • Annual Revenue
  • How well the application functions over time

There is no shortcut to ensure quality, It is an on-going process that the whole team needs to be invested in. To ensure quality it is necessary to continue to iterate and improve processes to have the best working software.

Involvement throughout the SDLC

is a process that produces a high-quality product in the shortest amount of time. SDLC is broken down into 6 steps.

Best practice for QA team, is to get involved in the early stage to ensure quality throughout the entire development process. In the planning phase, QA can help in identifying the risks, identify use cases. In the design phase, QA can help in writing the specs and acceptance criteria, define what's in the scope and what is out of scope and write test strategy and test scenarios and define what metrics can be used to measure the success. In the coding phase, QA can solidify test scenarios and get feedback from the development and products team. In the test phase, manual and automated test scripts are completed, perform acceptance testing with the products team. In the Deploy phase, QA can help to validate the release build. After the release, QA can verify the functionality in production is still working as expected. Once the SDCL is completed for one iteration or one sprint the same cycle can start all over again in another iteration.

Test Planning

For each feature, the QA Engineer will create a test plan which describes how features will be tested

Writing Acceptance criteria

User stories help break down a feature into manageable sized pieces of functionality. Acceptance carriers should define how each feature should look and function in detail.

Identify when testing is completed

The team should what is the Definition of Done so that they have a shared understanding and abide by it. It can include, manual, automated testing, and sign off of acceptance criteria from products, design, and QA.

Types of testing QA should focus on:

  1. Black box Testing — which means the box is completed canceled and it is not possible to see inside of it
  2. Manual Testing — follows the step as a user performing workflow in the applications
  3. UI Automation Testing — is like manual testing but uses a script to automate test scenarios. These scripts can be run on any platform or browsers.
  4. Integration Testing — focuses on the interaction between application components.
  5. Performance Testing — benchmark how a system performs under load
  • Security Testing — performed to reveal flaws or vulnerabilities that can be exposed by the users.

Happy Testing! :)

Google Developer Expert for Firebase | Test Automation Engineer | DevOps Engineer