0% found this document useful (0 votes)
22 views

Eeee1231 Software Engineering - Software Verification and Validation

Uploaded by

volatility75s
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

Eeee1231 Software Engineering - Software Verification and Validation

Uploaded by

volatility75s
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

SOFTWARE VERIFICATION AND VALIDATION

Software testing is evaluation of the software against requirements gathered from users and
system specifications. Testing is conducted at the phase level in software development life
cycle or at module level in program code. Software testing comprises validation and
verification. Thus, Verification and Validation (V&V) is the process of investigating
whether a software system satisfies specifications and standards and fulfills the required
purpose.

The combination of software validation and verification is essential to ensure that a software
product is robust, functions correctly, and is secure before implementation or release. These
processes help reduce costs and risks associated with software issues in production
environments and maintain end-user satisfaction. Verification is followed by validation.

Software Validation
Software validation is the process of examining whether or not the software satisfies the user
requirements .This is done at the end to determine whether it satisfies the intended use and
can meet user needs. - Are we building the right product? Validation ensures that the
software fulfills its intended purpose and aligns with the customer's expectations. This is
typically achieved through user acceptance testing, system testing, and performance testing.

Validation is concerned with the external aspects of the software, assessing its functionality
from a user's perspective and ensuring that it meets real-world requirements. It's about
confirming that the software addresses the actual needs of the users and stakeholders. The
focus is on ensuring that the software meets the user's needs and is fit for its intended
purpose. It's an external process that involves testing the software against real-world
Requirements Validation: It verifies that the software requirements are clear, complete, and
aligned with user needs.scenarios to validate its functionality and usability.

Activities in software validation include:

➢ Functional Testing: Comprehensive testing is conducted to verify that the software


performs its functions according to specified requirements. This includes
functionality, usability, and performance testing.
➢ Regulatory Compliance Validation: Ensures that the software complies with
industry-specific standards and regulations, such as ISO standards, HIPAA, PCI DSS,
among others.
➢ Documentation Validation: Verifies that software documentation, such as user
manuals and technical documentation, is accurate and up-to-date.

Software Verification

Verification is the process of checking that software achieves its goal without any bugs. It is
the process to ensure whether the product that is developed is right or not. It verifies whether
the developed product fulfills the requirements that we have.

Verification : Are we building the product right?


In essence, verification confirms that the software has been developed according to its design
and requirements. Verification answers the question– "Are we developing this product by
firmly following all design specifications ?". It concentrates on the design and system
specifications.The process involves various activities such as code reviews, static analysis,
unit testing, integration testing, and system testing.In verification, the emphasis is on the
internal aspects of the software, examining the code and components to ensure they adhere to
design specifications and coding standards. It's about detecting defects early in the
development process before the software reaches the later stages.The focus on checking if the
software is built correctly according to design and specifications. It's an internal process that
involves code analysis and various levels of testing to catch defects early in development.

Some of the activities that are involved in verification include the following:

➢ Inspections
➢ Reviews
➢ Walkthroughs
➢ Desk-checking

The targets of the software tests are -

➢ Errors - These are actual coding mistakes made by developers. In addition, there is a
difference in output of software and desired output, which is considered as an error.
➢ Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an
error which can cause a system to fail.
➢ Failure - failure is said to be the inability of the system to perform the desired task.
Failure occurs when fault exists in the system.

Manual Vs Automated Testing


Testing can either be done manually or using automated testing tools.

Manual testing is performed without taking help of automated testing tools. The software
tester prepares test cases for different sections and levels of the code, executes the tests and
reports the result to the manager.Manual testing is time and resource consuming. The tester
needs to confirm whether or not the right test cases are used. Major portion of testing
involves manual testing.

Automated testing is a testing procedure done with aid of automated testing tools. There are
software and hardware tools which help testers in conducting tests such as load testing, stress
testing, regression testing. The limitations with manual testing can be overcome using
automated test tools. For example:

A test needs to check if a webpage can be opened in Internet Explorer. This can be easily
done with manual testing. But to check if the web-server can take the load of 1 million users,
it is quite impossible to test manually.

Testing Approaches

Tests can be conducted based on two approaches namely functionality testing and
implementation testing.cWhen functionality is being tested without taking the actual
implementation in concern it is known as black-box testing. The other side is known as
white-box testing where not only functionality is tested but the way it is implemented is also
analysed.

Black-box testing
It is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The
tester in this case, has a set of input values and respective desired results. On providing input,
if the output matches with the desired results, the program is tested ‘ok’, and problematic
otherwise.
In this testing method, the design and structure of the code are not known to the tester, and
testing engineers and end users conduct this test on the software.

Black-box testing techniques are as follows:

➢ Equivalence class - The input is divided into similar classes. If one element of a class
passes the test, it is assumed that all the class is passed.
➢ Boundary values - The input is divided into higher and lower end values. If these
values pass the test, it is assumed that all values in between may pass too.
➢ Cause-effect graphing - In both previous methods, only one input value at a time is
tested. Cause (input) – Effect (output) is a testing technique where combinations of
input values are tested in a systematic way.
➢ Pair-wise Testing - The behavior of software depends on multiple parameters. In
pairwise testing, the multiple parameters are tested pair-wise for their different values.
➢ State-based testing - The system changes state on provision of input. These systems
are tested based on their states and input.
White-box testing
It is conducted to test a program and it’s implementation, in order to improve code efficiency
or structure. It is also known as ‘Structural’ testing.

In this testing method, the design and structure of the code are known to the tester.
Programmers of the code conduct this test on the code.

The below are some White-box testing techniques:

➢ Control-flow testing - The purpose of the control-flow testing to set up test cases
which covers all statements and branch conditions. The branch conditions are tested
for both being true and false, so that all statements can be covered.
➢ Data-flow testing - This testing technique emphasis to cover all the data variables
included in the program. It tests where the variables were declared and defined and
where they were used or changed.

Testing Levels
Testing itself may be defined at various levels of SDLC. The testing process runs parallel to
software development. Before jumping on the next stage, a stage is tested, validated and
verified.

Testing separately is done just to make sure that there are no hidden bugs or issues left in the
software. Software is tested on various levels. These are discussed below.

Unit Testing
While coding, the programmer performs some tests on that unit of program to know if it is
error free. Testing is performed under white-box testing approach. Unit testing helps
developers decide that individual units of the program are working as per requirement and are
error free.

Integration Testing
Even if the units of software are working fine individually, there is a need to find out if the
units if integrated together would also work without errors. For example, argument passing
and data updation etc.

System Testing
The software is compiled as a product and then it is tested as a whole. This can be
accomplished using one or more of the following tests:

➢ Functionality testing - Tests all functionalities of the software against the


requirement.
➢ Performance testing - This test proves how efficient the software is. It tests the
effectiveness and average time taken by the software to do a desired task.
Performance testing is done by means of load testing and stress testing where the
software is put under high user and data load under various environment conditions.
➢ Security & Portability - These tests are done when the software is meant to work on
various platforms and accessed by a number of persons.

Acceptance Testing
When the software is ready to hand over to the customer it has to go through the last phase of
testing where it is tested for user-interaction and response. This is important because even if
the software matches all user requirements and if the user does not like the way it appears or
works, it may be rejected. Types of acceptance testing are as follows:

➢ Alpha testing - The team of developers themselves perform alpha testing by using the
system as if it is being used in a work environment. They try to find out how users
would react to some action in software and how the system should respond to inputs.
➢ Beta testing - After the software is tested internally, it is handed over to the users to
use it under their production environment only for testing purpose. This is not yet the
delivered product. Developers expect that users at this stage will bring minute
problems, which were skipped to attend.
Regression Testing
Whenever a software product is updated with new code, feature or functionality, it is tested
thoroughly to detect if there is any negative impact of the added code. This is known as
regression testing.

Testing Documentation
Testing documents are prepared at different stages, before testing, during testing,and after
testing.

Before Testing

Testing starts with test cases generation. Following documents are needed for reference :

➢ SRS document - Functional Requirements document


➢ Test Policy document - This describes how far testing should take place before
releasing the product.
➢ Test Strategy document - This mentions detailed aspects of the test team,
responsibility matrix and rights/responsibility of test manager and test engineer.
➢ Traceability Matrix document - This is an SDLC document, which is related to the
requirement gathering process. As new requirements come, they are added to this
matrix. These matrices help testers know the source of requirement. They can be
traced forward and backward.

While Being Tested

The following documents may be required while testing is started and is being done:

➢ Test Case document - This document contains a list of tests required to be conducted.
It includes Unit test plan, Integration test plan, System test plan and Acceptance test
plan.
➢ Test description - This document is a detailed description of all test cases and
procedures to execute them.
➢ Test case report - This document contains a test case report as a result of the test.
➢ Test logs - This document contains test logs for every test case report.

After Testing

The following documents may be generated after testing :

Test summary - This test summary is a collective analysis of all test reports and logs. It
summarizes and concludes if the software is ready to be launched. The software is released
under the version control system if it is ready to launch.

Testing vs. Quality Control, Quality Assurance and


Audit
Software testing is different from software quality assurance, software quality control and
software auditing:

➢ Software quality assurance - These are software development process monitoring


means, by which it is assured that all the measures are taken as per the standards of
organization. This monitoring is done to make sure that proper software development
methods were followed.

➢ Software quality control - This is a system to maintain the quality of software


products. It may include functional and non-functional aspects of software products,
which enhance the goodwill of the organization. This system makes sure that the
customer is receiving a quality product for their requirement and the product certified
as ‘fit for use’.

➢ Software audit - This is a review of procedures used by the organization to develop
the software. A team of auditors, independent of the development team, examines the
software process, procedure, requirements and other aspects of SDLC. The purpose of
software audit is to check that software and its development process, both conform to
standards, rules and regulations.

You might also like