What is Software Testing?

Software Testing Definition

Software Testing is a process of executing a program or application with the intent of finding the software bugs. It also a process of validating and verifying that a software program or application or product is developed according to the requirements, works as expected with highest quality with no escaped defects.

Software Testing is also known as Software Quality Assurance and it is actually best to describe the Test Engineer as Quality Assurance (QA) Engineer rather than just a Software Tester. The objective of Software Tester / QA Engineer is to help delivering a high quality product / software in a project within the estimated budget.

Testing is about defect detection, Quality Assurance is about defect prevention!!

Software Testing in Details

  • Process: Testing is a process rather than a single activity.
  • All Life Cycle Activities: Testing is a process that’s take place throughout the Software Development Life Cycle (SDLC).
  • Static Testing: It can test and find defects without executing code. Static Testing is done during verification process. This testing includes reviewing of the documents (including source code) and static analysis. This is useful and cost effective way of testing. For example: reviewing, walkthrough, inspection, etc.
  • Dynamic Testing: In dynamic testing the software code is executed to demonstrate the result of running tests. It’s done during validation process. For example: unit testing, integration testing, system testing, etc.
  • Planning: We need to plan as what we want to do. We control the test activities, we report on testing progress and the status of the software under test.
  • Preparation: We need to choose what testing we will do, by selecting test conditions and designing test cases.
  • Evaluation: During evaluation we must check the results and evaluate the software under test and the completion criteria, which helps us to decide whether we have finished testing and whether the software product has passed the tests.
  • Software products and related work products: Along with the testing of code the testing of requirement and design specifications and also the related documents like operation, user and training material is equally important.

Verification & Validation

Verification
"Are you building it right?"

Ensures that the software system meets all the functionality.

Verification takes place first and includes the checking for documentation, code, etc.

It has static activities, as it includes collecting reviews, walkthroughs, and inspections to verify a software.

It is an objective process and no subjective decision should be needed to verify a software.

Validation
"Are you building it the right thing?"

Ensures that the functionalities meet the intended behavior.

Validation occurs after verification and mainly involves the checking of the overall product.

It has dynamic activities, as it includes executing the software against the requirements.

It is a subjective process and involves subjective decisions on how well a software works.

What is Software Quality?

ISO 8402-1986 standard defines quality as “the totality of features and characteristics of a product or service that bears its ability to satisfy stated or implied needs.”

Key aspects of quality for the customer include:

- Good design – looks and style
- Good functionality – it does the job well
- Reliable – acceptable level of breakdowns or failure
- Consistency
- Durable – lasts as long as it should
- Good after sales service
- Value for money

When to Start Testing?

It starts as early as possible after project kick-off. Early start of testing will reduces the cost and time to rework and produce error-free software that is delivered to the user or client. However in Software Development Life Cycle (SDLC), testing can be started from the Requirements Gathering phase, Technical Design Phase and continued till the deployment of the system or software. With the IV&V approach, the Testing activities will need to start from the user requirement phase and even earlier which is during the Project Planning.

When to Stop Testing?

It depends on the Milestones. During the User Requirement Gathering phase, the Testing to be done is to verify and review the SRS (System Requirement Specification) document until it get signed-off. Next, Testing may need to be performed on Technical Design document by the Developers. In the meantime, Test Design, Test Coverage and Test Cases should be prepared and then reviewed by all the project team such as System Architect, Developers and event Users. Next, once the software is depolyed then Testing need to be carried on the running system.

Testing will never stop! Regression Testing on the higher priority test cases must always been run or repeated if there are any software patches applied to the system or software. The use of Test Automation tool is the best option for the Regression Testing as we don't want to run all those hundreds of test cases written before in every week!