Friday, 16 May 2014

Difference between Verification & Validation

Difference between Verification & Validation

These two terms are very confusing for people, who use them interchangeably. Let’s discuss about them briefly.



Verification


Validation
Are you building it right?
Are you building the right thing?
Ensure that the software system meets all
the functionality.
Ensure that functionalities meet the
intended behavior.
Verification takes place first and includes
the checking for documentation, code etc.
Validation occurs after verification and
mainly involves the checking of the overall
product.
Done by developers
Done by Testers.
Have static activities as it includes the
reviews, walkthroughs, and inspections to
verify that software is correct or not.
Have dynamic activities as it includes
executing the software against the
requirements.
It is an objective process and no subjective
decision should be needed to verify the
Software.
It is a subjective process and involves
subjective decisions on how well the
Software works.



Difference between Testing, Quality Assurance and Quality Control

Most people are confused with the concepts and difference between Quality Assurance, Quality Control and Testing. Although they are interrelated and at some level they can be considered as the same activities, but there is indeed a difference between them. Mentioned below are the definitions and differences between them:

Quality Assurance
Quality Control
Testing
Activities which ensure the
implementation of
processes, procedures and
standards in context to
verification of developed
software and intended
requirements.
Activities which ensure the
verification of developed
software with respect to
documented (or not in
some cases) requirements.
Activities which ensure the
identification of
bugs/error/defects in the
Software.
Focuses on processes and
procedures rather then
conducting actual testing
on the system.
Focuses on actual testing
by executing Software with
intend to identify
bug/defect through
implementation of
procedures and process
Focuses on actual testing.
Process oriented activities
Product oriented activities
Product oriented activities
Preventive activities
It is a corrective process
It is a preventive process
It is a subset of Software
Test Life Cycle (STLC)
QC can be considered as
the subset of Quality
Assurance.
Testing is the subset of
Quality Control.


Difference between Audit and Inspection
Audit: A systematic process to determine how the actual testing process is conducted within an organization or a team. Generally, it is an independent examination of processes which are involved during the testing of software. As per IEEE, it is a review of documented processes whether organizations implements and follows the processes or not. Types of Audit include the Legal Compliance Audit, Internal Audit, and System Audit.


Inspection: A formal technique which involves the formal or informal technical reviews of any artifact by identifying any error or gap. Inspection includes the formal as well as informal technical reviews. As per IEEE94, Inspection is a formal evaluation technique in which software requirements, design, or code are examined in detail by a person or group other than the author to detect faults, violations of development standards, and other problems.

Formal Inspection meetings may have following process: Planning, Overview Preparation, Inspection Meeting, Rework, and Follow-up.



Difference between Testing and Debugging
Testing: It involves the identification of bug/error/defect in the software without correcting it. Normally professionals with a Quality Assurance background are involved in the identification of bugs. Testing is performed in the testing phase.

Debugging: It involves identifying, isolating and fixing the problems/bug. Developers who code the software conduct debugging upon encountering an error in the code. Debugging is the part of White box or Unit Testing. Debugging can be performed in the development phase while conducting Unit Testing or in phases while fixing the reported bugs.

Who does testing?

It depends on the process and the associated stakeholders of the project(s). In the IT industry, large companies have a team with responsibilities to evaluate the developed software in the context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, following professionals are involved in testing of a system within their respective capacities:

 Software Tester
 Software Developer
 Project Lead/Manager
 End User

Different companies have difference designations for people who test the software on the basis of their experience and knowledge such as Software Tester, Software Quality Assurance Engineer, and QA Analyst etc. It is not possible to test the software at any time during its cycle. The next two sections state when testing should be started and when to end it during the SDLC.


1. When to Start Testing
An early start to testing reduces the cost, time to rework and error free software that is delivered to the client. However in Software Development Life Cycle (SDLC) testing can be started from the Requirements Gathering phase and lasts till the deployment of the software. However it also depends on the development model that is being used. For example in Water fall model formal testing is conducted in the Testing phase, but in incremental model, testing is performed at the end of every increment/iteration and at the end the whole application is tested. Testing is done in different forms at every phase of SDLC like during Requirement gathering phase, the analysis and verifications of requirements are also considered testing. Reviewing the design in the design phase with intent to improve the design is also considered as testing. Testing performed by a developer on completion of the code is also categorized as Unit type of testing.



2. When to Stop Testing
Unlike when to start testing it is difficult to determine when to stop testing, as testing is a never ending process and no one can say that any software is 100% tested. Following are the aspects which should be considered to stop the testing:

 Testing Deadlines.
 Completion of test case execution.
 Completion of Functional and code coverage to a certain point.
 Bug rate falls below a certain level and no high priority bugs are identified.
 Management decision.

Thursday, 15 May 2014

What is testing?

Testing is the process of evaluating a system or its component(s) with the intent to find that whether it satisfies the specified requirements or not. This activity results in the actual, expected and difference between their results. In simple words testing is executing a system in order to identify any gaps, errors or missing requirements in contrary to the actual desire or requirements.

According to ANSI/IEEE 1059 standard, Testing can be defined as A process of analyzing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item.