SoftwareEngineering-Module-IV
SoftwareEngineering-Module-IV
MODULE – IV
Coding and Testing of Software: Unit Testing, Black Box Testing, White Box Testing, Debugging,
Program Analysis Tools, System Testing.
Software Reliability and Quality Assurance: Reliability Metric.
Software Quality Assurance: ISO 9000 and SEI CMM and their Comparison.
SOFTWARE TESTING
Software testing is a process where we validate that the product developed is as per the requirement of
the client. Software is ensured that it is defect free, safe to use, and validated against different metrics.
Software is tested for security, user experience, speed, performance, load capacity, and many other
parameters. The process of software testing aims not only at finding faults in the existing software but
also at finding measures to improve the software in terms of efficiency, accuracy, and usability.
Software bugs can cause potential monetary and human loss. There are many examples in history that
clearly depicts that without the testing phase in software development lot of damage was incurred. Below
are some examples:
1985: Canada’s Therac-25 radiation therapy malfunctioned due to a software bug and resulted in lethal
radiation doses to patients leaving 3 injured and 3 people dead.
1994: China Airlines Airbus A300 crashed due to a software bug killing 264 people.
1996: A software bug caused U.S. bank accounts of 823 customers to be credited with 920 million US dollars.
1999: A software bug caused the failure of a $1.2 billion military satellite launch.
2015: A software bug in fighter plan F-35 resulted in making it unable to detect targets correctly.
2015: Bloomberg terminal in London crashed due to a software bug affecting 300,000 traders on the financial
market and forcing the government to postpone the 3bn pound debt sale.
Starbucks was forced to close more than 60% of its outlet in the U.S. and Canada due to a software failure in
its POS system.
Nissan cars were forced to recall 1 million cars from the market due to a software failure in the car’s airbag
sensory detectors.
Page 1|7
SOFTWARE ENGINEERING
1. Accuracy: Software testing answers all the necessary questions like how much load a server can
take, the speed of the site, and the safety of data to define the reliability of the product.
2. Saves cost: It's a well-known concept in the software development world that the earlier the defect
is detected, the cheaper its cost of fixing. Because once that defect goes to the user's end, the
damage could cost the company.
3. Saves time: Saves time: Software testing saves time in the long run as it does not lead the new
changes to go to the next stage till has been tested properly but the testing team against all the
necessary parameters which ensures a high-quality product is going every next stage.
4. Product quality: Since the product is tested against the necessary metrics, product quality
improves. A well-tested product reaches the market.
5. Trust factor: Software testing builds trust in the company as well as among users. As the product
is well tested, the company remains confident in handling any possible outburst. And that
confidence gets reflected in their product marketing and hence among users.
Software Testing can be Divided into Two Steps: Verification and Validation
Verification and Validation is the process of investigating whether a software system satisfies
specifications and standards and fulfils the required purpose.
Step 1: Verification
It refers to the set of tasks that ensure that the software correctly implements a specific function. It means
“Are we building the product, right?”.
Software testing ensures that the product we are building is defect free, and secure, as per the client's
requirement and user's expectations. It is tested against all the parameters to deliver a quality product.
Step 2: Validation
It refers to a different set of tasks that ensure that the software that has been built is traceable to customer
requirements. It means “Are we building the right product?”.
Validation in software testing emphasizes where the product is being built is the right fit for the market.
For instance, when Google Glass was built, it was a high-quality product that checked all the technical
parameters. But when Google Glass was brought into the industry, it was immediately banned by a lot of
Page 2|7
SOFTWARE ENGINEERING
governments because of security and privacy obligations. So, Google Glass was a well-verified but not
validated product.
Verification Validation
It includes checking documents, design, codes and It includes testing and validating the actual
programs. product.
Verification is done on all the technical parameters Validation focuses on market size, pricing of
like performance, load, and security. product, industry requirement, use cases, etc.
It can find the bugs in the early stage of the It can only find the bugs that could not be found by
development. the verification process.
Page 3|7
SOFTWARE ENGINEERING
1. Functional Testing: It is a type of software testing that validates the software systems against the
functional requirements. It is performed to check whether the application is working as per the
software’s functional requirements or not. Various types of functional testing are Unit testing,
Integration testing, System testing, and so on.
2. Non-Functional Testing: It is a type of software testing that checks the application for non-
functional requirements like performance, scalability, stress, load, etc. Various types of non-
functional testing are Performance testing, Usability Testing, and so on.
Page 4|7
SOFTWARE ENGINEERING
Apart from the above classification, Software Testing can be further divided into two more ways of
testing:
1. Manual Testing: It includes testing software manually, i.e., without using any automation tool or
script. In this type, the tester takes over the role of an end-user and tests the software to identify
any unexpected behavior or bug. There are different stages for manual testing such as unit testing,
integration testing, system testing, and user acceptance testing. Testers use test plans, test cases,
or test scenarios to test software to ensure the completeness of testing. Manual testing also
includes exploratory testing, as testers explore the software to identify errors in it.
2. Automation Testing: It is also known as Test Automation, is when the tester writes scripts and uses
another software to test the product. This process involves the automation of a manual process.
Automation Testing is used to re-run the test scenarios quickly and repeatedly, that were
performed manually in manual testing. It increases the test coverage, improves accuracy, and
saves time and money when compared to manual testing.
1. Black Box Testing: Testing in which the tester doesn’t have access to the source code of the
software and is conducted at the software interface without any concern with the internal logical
structure of the software known as black-box testing.
2. White Box Testing: Testing in which the tester is aware of the internal workings of the product, has
access to its source code, and is conducted by making sure that all internal operations are
performed according to the specifications is known as white box testing.
3. Grey Box Testing: Testing in which the testers should have knowledge of implementation,
however, they need not be experts.
Also known as closed box/data-driven testing. Also known as clear box/structural testing.
End users, testers, and developers are involved. Normally done by testers and developers.
Page 5|7
SOFTWARE ENGINEERING
It validates the code based on output obtained It helps to find some missing case scenarios.
Example: Performance testing, Speed testing, and Example: Path testing, Condition testing, Loop
many more. testing, and many more.
1. Unit Testing: It a level of the software testing process where individual units/components of a
software/system are tested. The purpose is to validate that each unit of the software performs as
designed.
2. Integration Testing: It is a level of the software testing process where individual units are combined
and tested as a group. The purpose of this level of testing is to expose faults in the interaction
between integrated units.
3. System Testing: It is a level of the software testing process where a complete, integrated
system/software is tested. The purpose of this test is to evaluate the system’s compliance with the
specified requirements.
4. Acceptance Testing: It is a level of the software testing process where a system is tested for
acceptability. The purpose of this test is to evaluate the system’s compliance with the business
requirements and assess whether it is acceptable for delivery.
The Software Testing industry is growing and changing at a rapid pace. Every few days new tools are
introduced in the market. No code or codeless tools are also available. Below are some of the most in-demand
tools in the industry.
Page 6|7
SOFTWARE ENGINEERING
NOTE: End Semester Examination Syllabus will be covered till Software Testing topic.
---
Page 7|7