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

SoftwareEngineering-Module-IV

The document discusses software engineering, focusing on the coding and testing of software, including various testing methods like unit testing, black box testing, and white box testing. It highlights the importance of software testing in ensuring product reliability, quality assurance, and preventing costly errors, citing historical examples of software failures. Additionally, it outlines the benefits of testing, the differences between verification and validation, types of testing, and introduces trending tools in the software testing industry.

Uploaded by

kumarabhi90067
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

SoftwareEngineering-Module-IV

The document discusses software engineering, focusing on the coding and testing of software, including various testing methods like unit testing, black box testing, and white box testing. It highlights the importance of software testing in ensuring product reliability, quality assurance, and preventing costly errors, citing historical examples of software failures. Additionally, it outlines the benefits of testing, the differences between verification and validation, types of testing, and introduces trending tools in the software testing industry.

Uploaded by

kumarabhi90067
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

SOFTWARE ENGINEERING

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.

Coding and Testing of Software


Software testing is comparatively easier as compared to software development. Software development
and software testing both are ongoing processes as every time a new functionality gets added, it is tested
for its accuracy.

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.

Need for Software Testing

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

Benefits of Software Testing

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.

Differences between Verification and Validation

Verification Validation

It includes checking documents, design, codes and It includes testing and validating the actual
programs. product.

Verification is the static testing. Validation is the dynamic testing.

Verification is for prevention of errors. Validation is for detection of errors.

Verification is about process, standard and


Validation is about the product.
guidelines.

It checks whether the software meets the


It checks whether the software conforms to
requirements and expectations of a customer or
specifications or not.
not.

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.

Validation is done before a feature goes into


Verification is done after a feature is developed.
development.

It consists of checking of documents/files and is It consists of execution of program and is


performed by human. performed by computer.

Verification is based on the opinion of reviewer


Validation is based on the fact and is often stable.
and may change from person to person.

Types of Software Testing

Page 3|7
SOFTWARE ENGINEERING

Software Testing can be broadly classified into two types:

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.

Different Types of Software Testing Techniques

Software testing techniques can be majorly classified into three categories:

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.

Black Box Testing White Box Testing

Also known as closed box/data-driven testing. Also known as clear box/structural testing.

Internal workings of an application are not


Knowledge of the internal workings is a must.
required.
Test cases are written to validate the output
Test cases are written based on the code structure.
without the knowledge of the code.

End users, testers, and developers are involved. Normally done by testers and developers.

Page 5|7
SOFTWARE ENGINEERING

Data domains and internal boundaries can be


This can only be done by a trial-and-error method.
better tested.

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.

Different Levels of Software Testing

Software level testing can be majorly classified into four levels:

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.

Latest Trending Tools and Technologies in Software Testing

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.

 Selenium tool for UI automation


 Cypress tool for front-end testing
 Katalon Studio for codeless front-end testing
 Appium for mobile automation
 Apache Jmeter for performance testing
 Postman for API testing
 Rest Assured for API testing
 Jira for project and bug management tool

Page 6|7
SOFTWARE ENGINEERING

 QTP for a bug management tool


 HP ALM for project management and reporting tool
 Bugzilla tool for bug management

NOTE: End Semester Examination Syllabus will be covered till Software Testing topic.

---

Page 7|7

You might also like