0% found this document useful (0 votes)
19 views12 pages

Lecture 4 and 5

The document outlines the four levels of software testing: Unit Testing, Integration Testing, System Testing, and Acceptance Testing, each serving a distinct purpose in ensuring software quality. It further distinguishes between functional and non-functional testing, detailing their methodologies and types. The text emphasizes the importance of conducting all testing levels before software launch to meet user requirements and expectations.

Uploaded by

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

Lecture 4 and 5

The document outlines the four levels of software testing: Unit Testing, Integration Testing, System Testing, and Acceptance Testing, each serving a distinct purpose in ensuring software quality. It further distinguishes between functional and non-functional testing, detailing their methodologies and types. The text emphasizes the importance of conducting all testing levels before software launch to meet user requirements and expectations.

Uploaded by

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

Lecture 4: Levels of testing

There are four levels of testing.


1. Levels of Testing
2. Unit Testing.
3. Integration Testing.
4. System Testing. (ST and SIT eg banking system which is integrating with external
systems)
5. Acceptance Testing.
4 Levels of Testing
There are mainly four Levels of Testing in software testing :

Unit Testing : checks if software components are fulfilling functionalities or not.


Integration Testing : checks the data flow from one module to other modules.
System Testing : evaluates both functional and non-functional needs for the testing.
Acceptance Testing : checks the requirements of a specification or contract are met as per its
delivery.

Unit Testing

This is ideally our first level of testing software. How does it work? Here, specific lines of code,
distinct functionalities, and desired procedures are isolated and tested. These lines of code,
functionalities, and procedures are termed software units because they are combined to make up
the software. They can also be referred to as components of the software.

For example, a line of code in a “calculator software” can have the function of implementing
“addition,” while another line of code implements “multiplication,” etc. These addition and
multiplication functions and other functions of the calculator software must be individually
tested to ensure that the calculator operates flawlessly. You do not want to start a calculator that
implements a division when users click on the add sign.

Unit testing is a process that mostly involves testing the internal workings of the software. It’s
easy and quick to do because it deals with the software unit by unit, not as a whole.
Who Performs a Unit Test?

Unit testing should be done by the software tester(s).

Integration Testing

This testing level involves combining all the components that make up the software and testing
everything as a whole instead of individually as done during unit testing. Also, from this level,
tests can be split into functional and non-functional types. Why is integration testing needed?

First, the integrated codes could have been written by different developers, and need to be tested
to ensure their correctness. By testing, we can identify and correct inter-working defects,
simultaneous operation defects, parallel operation defects, etc.

Simply put, it helps us ascertain how well the units work together, and the condition of the
interfaces between each of them. For example, we could verify if the following conditions from
the checklist were met:

 If communication between the systems is carried out correctly


 If linked documents can run smoothly on all platforms
 Whether security specifications work during communication between systems
 Whether the software can withstand network breakdowns between the web servers and
app servers
The condition of an interface may be poor, such that it might take a long time for the software to
switch between functions. A good interface switches between functions immediately the user
initiates it.

Sometimes, a line of code may work properly when tested alone. However, when combined with
other lines of code to achieve the desired function, an error can occur, indicating that the
integration of one or more lines of code into the rest of the code was unsuccessful.

Unit testing can prove that everything works as expected, while integration testing can prove
otherwise. This is why we ensure that all recommended levels of software tests are carried out
rigorously, to avoid potential pitfalls.
There are 4 main approaches we use to carry out integration testing for our clients. They include:

 Top-Down Integration testing: The rule of thumb when applying the top-down approach
is to test higher units before checking the lower levels. In other words, the performer has
to test from top to bottom.
 Bottom-Up Integration testing: On the other hand, in bottom-up integration, the
performer tests in the opposite direction ― from bottom to top. You ultimately try lower
units and step up to the higher components.
 Big-Bang Integration testing: Big bang integration testing refers to when all elements are
tested concurrently in a single phase. The big-bang model is also applicable when
validating small applications, where the top-down and bottom-up models can be
bypassed. The modules are all programmed, combined, and tested together.
 Mixed (sandwiched) Integration testing: Available modules are being tested, whether
they belong to high or low code lines. This means that no priority is given to either
component by the performer. Unresponsive modules are simulated to determine how well
the available code will work when the coding is completed and combined.

Who Performs an Integration Test?

Integration testing should be handled by the tester(s).

System Testing

System testing has to do with verifying the required operations of the software and its
compatibility with operating systems. In other words, we test both the technicalities and the
business logic of the software; we run functional tests to check what the various functions of a
system do, and non-functional tests to check how those functions work.
For instance, in functional testing, we check if a login feature responds when the user enters a
password. But in non-functional testing, we check how long it takes the user to log in after
password entry.

To be done effectively, it has to be tested by external software testers that have absolutely
nothing to do with the development of the software. System testing helps to determine how
compatible the software is with the operating systems for which it has been designed.

Thus, all the software’s completed versions are tried out on all the possible operating systems
that users may have. There are cases where the Android version of an application may be
functioning correctly, but the iOS version may have some issues.

System testing exposes such errors, and developers can detect and correct them before they’re
launched. System testing, in addition, ascertains how good the design of the software is. The
internal code can work adequately, but the outward design might have some operational issues.
This is why system testing is essential. Hence, all design abnormalities can be detected and
corrected.

The general behavior of the software is also another aspect that system testing helps to
authenticate. The software may be appropriately developed and yet malfunction, due to various
system specifications.

System testing helps identify any abnormal behavior and helps organizations to outline the
software’s best system specifications. Failure to gather these requirements can lead to scope
creep. This also means that the project can accrue more costs, longer duration, and a need for
extra resources. The system too, will not live up to its promise of delivering business value for
your organization

The identified system specifications are then relayed to the end-users as requirements that their
devices must meet or exceed. Today, every authentic software you buy comes with operating
system minimum requirements.

Who Performs a System Test? - System testing should be carried out by a QA team of

software testers.
Acceptance Testing

This level of software testing is similar to the system testing, but here, the test is carried out by
some selected end-users. This is the only software testing stage that is carried out by users. This
stage determines if the software is finally ready to be launched to the general public.

All the selected users give their various opinions about the operation of the software; they let the
organization know whether the software meets their diverse requirements, and recommend areas
that may need to be improved upon. Acceptance testing can also be referred to as User
Acceptance Testing.

Though each organization may conduct acceptance testing using its own specifics — who and
where to test — it is vital that we select users with different demographics, operating systems,
and unique past experiences of using similar software.

There are two types of Acceptance Testing:

 Alpha Testing
 Beta Testing

Alpha Testing:

Alpha testing is carried out by selected users but together with an internal team of developers
who control the testing environment and try to mimic realistic conditions during testing. Here,
the selected users are given passwords or access keys that will allow them to log in and out of the
developer’s platform without any hindrance to use and test the developed software/ application.
During alpha testing, minor errors can still be found and fixed.

Beta Testing:
Beta testing is carried out by the selected users on their own devices and operating systems.
Here, the finished software is sent to the selected users to use it and test it over a while, before
giving their various feedback. At the beta level, the software is expected to be void of defects,
run perfectly, and meet the users’ needs.

Who Performs an Acceptance Test?

The end-user(s).

How to Perform the Different Levels of Software Testing in the SDLC

In conclusion, all the levels of software testing are essential and have to be completed before the
application is launched.
Lecture 5 functional and Non-functional Testing

What is functional testing?

Functional testing verifies that the operational execution of a program or mobile app happens
according to the technical and business requirements. Only if every feature of a software system
works correctly, it can pass a functional test.
Functional testing is usually conducted before non-functional testing and is done manually. The
tester provides specific inputs to the program and compares the result with the expected output.
Functional testers are not concerned about the source code but focus on checking the
functionality.
In layman terms, when you conduct functional testing you are interested in what the system can
do. It is necessary to do this type of testing to ensure that the product does not have bugs or
vulnerabilities.

What is non-functional testing?

Non-functional testing checks all the aspects not covered in functional tests. It includes the
performance, usability, scalability, and reliability of the software.
We conduct non-functional testing to make sure that the interests of the end-user are respected.
The product will not enjoy success unless you manage to meet customer expectations. Non-
functional testing is essential to add market value to the product.
This type of testing demands much more creativity from a tester. It has nothing in common with
the mechanical work of clicking the right buttons. The testing specialist has to develop a strategy
to collect customer expectations and offer a set of tests to check how these expectations are met.
The results of non-functional testing are measured on the scale. If functional testing specifies
what the program should do, non-functional tests describe how it should behave. For example,
how intuitive the interface is or how well the system operates under high load.
Non-functional testing is often automated. Specialized tools help to model a real-life
environment and see how the software is going to behave under pre-set conditions. Non-
functional tests also rely on customer feedback and focus groups, especially in what concerns
usability testing.

Difference between functional and non-functional testing

The easiest way to understand the domains of functional and non-functional testing is to have a
look at some questions they help to answer.

Functional testing questions

 Is a confirmation email sent after the user registers on a website?


 Does the feedback notification appear if the user uploads a larger file than the system
asks it?
 When the user clicks on an icon that is supposed to be clickable, does the new page load?

Non-functional testing questions

 How much time does it take for the user to receive a registration confirmation email?
 Does the feedback notification comply with the principles of user-friendly push
notifications design?
 Is it transparent for the user where to click to load a new page?
Functional testing questions can often be answered with a simple yes or no. Non-functional
testing gives gradable answers.

Functional Testing Non-Functional Testing


Tests features/functions Tests non-functional aspects
Evaluated as either present or not present Evaluated on the scale
Usually done manually Usually automated
Checks the accordance to customer requirements Checks the accordance to end-user expectations
Tests what the product does Tests how the product works
Requirements are easy to specify Requirements are hard to specify

Which type of testing is better? The answer is none. They cannot be used interchangeably.
Functional and non-functional testing cover different aspects of software systems and should be
both used for quality assurance.

Functional testing types

There are different functional testing strategies that you can use for your benefit. The best way to
ensure functional coverage is to use both manual and automation testing methods.
 Smoke testing. Before the actual testing, smoke testing is conducted to see that the main
functionalities are working fine before fine-tuning other testing procedures.
 Sanity testing. After a bug was fixed or functionality added, you need to understand that
there are no issues that appeared due to this change.
 Unit testing. Unit tests are done to check individual units or components of the system.
 Integration testing. To test whether multiple software components function well
together as a group, you will need integration testing.
 Boundary value testing. When the software system sets limits on the input data, you
need to check that this functionality is working correctly. Example: a password field that
should include at least eight characters, one number, one uppercase letter, one lowercase
letter, and one special symbol.
 API testing. Integrating third-party services is always a potential source of bugs and
memory leakages. If your project uses APIs, you should test that they are working
correctly.
 User acceptance. It validates that the functionality, accessibility, and quality are high
enough for the application to be used in real-life.
 Regression testing. This one is done to verify that the recent changes or updates have no
negative effect on the already existing functionality.
 Globalization testing. Organizations today strive to design products that can perform
successfully in international markets. This type of testing validates that the product will
be accessible to users from foreign countries.
 Interoperability testing. It confirms that the software can interact with other software
systems and components without any compatibility issues.
 Interface testing. To check whether the users will interact with the interface as expected,
you need interface testing. To conduct it, you gather an end-user group that will perform
specific tasks. It helps identify the elements of the software that the user often uses and
whether these elements behave according to the requirements. It is essential not to
confuse interface testing with usability testing. User interface testing checks that the
interface works fine and passes the data to the system. Usability testing is done to see
whether end-users will find the application convenient and useful.

Non-functional testing types

 Availability testing. You need to test how often the product is going to be used and
whether it is accessible when the users need it. For example, you want to minimize
failure events or predict how much time the repair can take before the system goes back
to normal.
 Performance testing. The tester executes this type of testing to verify that the website or
application performs well under the expected workload.
 Compatibility testing. This type of testing validates how seamlessly the product operates
with other components: OS, browsers, hardware, and so on.
 Localization testing. Localization testing checks that the product meets the expectations
of a local audience. For example, if you localize a mobile app designed for the USA to
the Chinese market and translate it in Chinese, you will have to use this type of testing.
 Volume testing. This type of testing analyzes how well the system operates under the
ever-growing volume of processed data.
 Scalability testing. The software testing procedure that ensures that the product can grow
in proportion to the increasing demands of the end-users is called scalability testing.
 Usability testing. Use it to validate how human-friendly your application is.
 Reliability testing. This software testing strategy combines stress, security, and
functionality testing, and describes whether the software product meets the standards of
functionality.
 Security testing. The tester tries to find the system’s vulnerabilities and determine how
well the confidential data and internal resources are protected.
 Load testing. To know how the software will behave under a particular load is vital if
you want to guarantee the interoperable performance to the users. Load testing helps you
to check the quality of your system under high peak loads.
 Endurance testing. This type of testing is used to estimate the efficiency of a program
under high loads. However, the load is continuously increasing and lasts for a long time.
 Compliance testing. This type of software testing verifies that the product meets
international standards of software development, usually developed by global companies.
For instance, it is important for a mobile application to be compliant to the App Store or
Google Play regulations.
 Stress testing. Conduct this type of testing to see how the program behaves under
varying load and stress to the app’s functionality.
 Maintainability testing. The ability of a program to safely go through changes and
updates is crucial. Maintainability testing measures how well the system copes with
changes.
 Portability testing. It determines how easy it is to transport a software component or
application from one hardware or OS to another.
 Disaster recovery testing. This type of testing is applied to estimate how much time it
takes to recover and how well the software manages to recover data after crashes or
network blackouts.

Functional Testing Strategies Non-functional Testing Strategies


Unit testing Availability testing
Integration testing Performance testing
Boundary value testing Compatibility testing
API testing Localization testing
User acceptance Volume testing
Regression testing Scalability testing
Globalization testing Usability testing
Interoperability testing Reliability testing
Interface testing Security testing
Smoke testing Load testing
Functional Testing Strategies Non-functional Testing Strategies
Sanity testing Endurance testing
System testing Compliance testing
Installation testing
Stress testing
Maintainability testing
Portability testing
Disaster recovery testing

Summing up

Applying both functional and non-functional testing techniques, you verify your software
product’s functionality and make sure that it corresponds with the highest standards of quality.
Do not trust your digital product’s success to the wheel of fortune – address a professional QA
agency that has experience in different types of testing. They will advise you on the best
strategies and make sure that your app’s quality is outstanding.

You might also like