Sunteți pe pagina 1din 26

Introduction to software

testing
Hossam Abd Elhady
Contents
What is software testing

Why we need software testing

Software testing life cycle

Software testing types

Software testing levels

Introduction to software
testing
What is software testing
It is the process used to identify

Correctness

Completeness

Quality of a developed software.

Introduction to software
testing
What is software testing

We are not judging people, just indication of software quality.

Introduction to software
testing
What is software testing

Who wants to be a software tester?

Technical Personal

To know the basics of one or more Be able to communicate and represent


development tools
Be a self, fast learner and organized
SQL knowledge, be able to navigate person, also pay attention to the
into DB and deal with different tables different details
and relations
Ready to deal with different mentalities
UNIX and LINUX knowledge
Introduction to software
testing
What is software testing
Definitions

Error, Fault and Failure.


- Error is deviation from actual and expected value. It represents
mistake made by people.

- Fault is incorrect step, process or data definition in a computer


program which causes the program to behave in an unintended or
unanticipated manner.It is the result of the error.

- Failure is the inability of a system or a component to perform


its required functions within specified performance
requirements. Failure occurs when fault executes.

Introduction to software
testing
What is software testing
Validation and Verification.
- Validationis the process of checking whether the
specification captures the customer's needs.
- Verificationis the process of checking that the software
meets the specification.

Test condition.
- An item or event of a component or system that could be
verified by one or moretestcases, e.g., a function, transaction,
feature, quality attribute or structural element.

Test case.
- Describes an input, action, or event and an expected
response, to determine if a feature of a software
application is working correctly. Atest casemay contain
particulars such astest caseidentifier,test casename,
objective,test conditions/setup, input data requirements, steps,
and expected results. Introduction to software
testing
Why we need software testing

We all make mistakes, some of them are expensive or dangerous.

30-85 errors are made per 1000 lines of source code.

Extensive tested software contains 0.5-3 errors per 1000 lines of source
code.

If testing is postponed, the later an error is discovered, the more it costs


to fix it.

Customer satisfaction?

Introduction to software
testing
Why we need software testing
Pepsi - $42 Billion Error In May 1992
Pepsi ran a promotion in the Philippines. It told customers they could win
a million pesos (approx. $40,000) if they bought a bottle of Pepsi and
found the number 349 stamped on the underside of the bottle cap.

Unfortunately, due to a software error, 800,000 bottle caps were


produced with the lucky number instead of just one, It cost the company
dearly as some people pursued their claims through the courts and Pepsi
paid out millions of dollars in compensation.

Introduction to software
testing
Software Testing Life Cycle
Test
Planning
and
Strategy

Retrospectiv Test
es Analysis

Test Life Cycle

Test
Test Design
Reporting

Test
Execution

Introduction to software
testing
Test Planning and Strategy

A software project test plan is a document that describes the objectives,


scope, approach, and focus of a software testing effort. The process of
preparing a test plan is a useful way to think through the efforts needed to
validate the acceptability of a software product.

In this phase also, we create a Work Breakdown Structure (WBS). The


objective of creating a WBS is to help more accurately and specifically
define and organize the scope of the total project, also to help with
assigning responsibilities, resources allocation, monitoring the project,
and controlling the project.
Test Analysis and Design
the activity where general testing objectives are transformed into tangible
test conditions and test designs.

Test analysis and design has the following major tasks:

- Review and analyze the requirements, architecture, design, interfaces and


etc..

- Identifying Test scenarios, test conditions, test requirements and also


required test data based on analysis of test items

- Designing the test cases based on the Test Scenarios or Test Conditions

- Evaluating testability of the requirements and system

- Test environment set-up and identifying any required infrastructure and


tools
Test Implementation and Execution

Test implementation and execution is the activity where test procedures or scripts are
specified by combining the test cases in a particular order and including any other
information needed for test execution, the environment is set up and the test are run.

Test implementation and execution has the following major tasks:


- Developing implementing and prioritizing test cases.

- Developing and prioritizing test procedures, creating test data and, optionally, preparing test harness and writing
automated test scripts.

- Creating test suits from the test procedures for efficient test execution.

- Verifying that the test environment has been set up correctly.

- Executing test procedures, either manually or by using test execution tools, according to the plane sequence.

- Logging the outcome of test execution and recording the identities and versions of the software under test, test
tools and test ware.

- Comparing actual results with expected results.

- Reporting discrepancies as included and analyzing them in order to establish their cause.
Test Report, Exit criteria evaluation

Is the activity where test execution is assessed against the defined


objectives. This should be done for each test level.

Evaluating exit criteria has the following major tasks:

- Checking test logs against the exit criteria specified in test planning.

- Assessing if more tests are needed or if the exit criteria specified


should be changed.

- Writing a test summary report for stakeholders.


Test closure and Retrospectives
Test closure activities collect data from completed test activities to
consolidate experience, test ware, facts and numbers.

Test closure activities include the following major tasks:

- Checking which planned deliverables have been delivered, the


closure of incident reports or raising of change records for any that
remain open.

- Finalizing and archiving test ware, the test environment and the test
infrastructure for later reuse.

- Handover of test ware to the maintenance organization.

- Analyzing lessons learned for future releases and projects.


Software testing types

Non-
Structur
Function
al
al
Testing
Function related
al Softwa to
re changes
Testing
Types
Introduction to software
testing
Functional Testing

Functional testing is primarily used to verify that a piece of software is


providing the same output as required by the end-user or business.

Typically, functional testing involves evaluating and comparing each


software function with the business requirements.

Software is tested by providing it with some related input so that the


output can be evaluated to see how it conforms, relates or varies
compared to its base requirements.

Moreover, functional testing also checks the software for usability, such
as by ensuring that the navigational functions are working as required.
Non-Functional Testing

Non-Functional testing verifies the attributes of the system such as


memory leaks, performance or robustness of the system. Non-Functional
testing is performed at all test levels.

Some Non-Functional Testing Techniques:

- Compatibility, Compliance, Load, Stress, Volume, performance,


Localization, Endurance and Usability testing
Structural Testing

Structural testing, also known as glass box testing or white box testing is
an approach where the tests are derived from the knowledge of the
software's structure or internal implementation.

The other names of structural testing includes clear box testing, open box
testing, logic driven testing or path driven testing.

Advantages of Structural Testing:

- Forces test developer to reason carefully about implementation

- Reveals errors in "hidden" code

- Spots the Dead Code or other issues with respect to best programming
practices.
Testing Related to Changes
During software testing we get failures. In most cases the underlying defects are
corrected and the corrected test object is handed over to the testers for
confirmation. This is the situation where we iterate in the test process and go back
to the test execution process. We go back to perform confirmation testing and
regression testing.

Confirmation testing and regression testing are important activities in test


execution. They can appear in all the test levels from component testing to (one
hopes rarely) acceptance testing and even during maintenance of a product in
operation.

These two types of change-related software testing activities have one thing in
common: they are executed after defect correction. Apart from that, they have
very different goals.
Software Testing Levels

Acceptan
ce

System

Integration

Unit

Introduction to software
testing
Unit Testing

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.

The smallest independent and testable part of the source code is referred
to as a unit. It is the first step in software testing environment and is
generally conducted by the developers or their team mates.

If unit testing is carried out properly then it would also result in a lot of
cost saving as the cost of fixing a defect in the final stages of software
development are much higher than fixing them in the initial stages.

Introduction to software
testing
Integration Testing

Once the unit testing phase is over, it is time to move on to integration


testing. During integration testing the tester checks how one or more units
interact with each other and produce output for various scenarios. This
form of testing is carried out a software testing engineer.

integration testing confirms whether these independent units are able to


perform as per expectations when integrated together. Integration testing
can be broadly classified into:

- Big bang

- Top down and

- Bottom up approach Introduction to software


testing
System Testing
Once the integration testing phase gets successfully completed it is time
to move on to system testing where the system as a whole with all
components well integrated is ready for further testing. This is where the
software is not only tested for performance but also for adherence to
quality standards. As the system is tested as a whole to see if it is in
compliance with the functional and technical specifications and the quality
standards defined by the organization, it is important that this form of
testing is carried out by a highly skilled testing team. For this form of
testing it is very important to create a scenario similar to the real time
scenario where the system will be deployed.

System testing validates and verifies both Application architecture and


business requirements of the client. Introduction to software
testing
User Acceptance Testing (UAT)
Once the system has been thoroughly tested via unit, integration and
system testing it is time for the quality assurance team to come and have
a look at the system and test it for quality with the help of predefined test
scenarios and test cases. The software is tested for accuracy. The
acceptance testing looks at the system from various angles: right from
cosmetic looks to internal functioning. This form of test is very crucial
because there are legal as well as contractual requirements associated
with the software for it to be accepted by the client.

This form of testing is carried out by the actual user before the software is
accepted. It can be performed at the users site or in the software
organization where the software was developed.
Introduction to software
testing
Thank You!

2016 Giza Systems. All rights reserved.


Giza Systems www.gizasystems.com is the number one systems integrator in Egypt and the Middle East providing a wide range of industry specific technology solutions in the Telecom,
Utilities, Oil & Gas, and Manufacturing industries. We have been shaping the IT industry and corporate agendas since 1974. Our consultancy practice provides industry focused services that
enhance value for our clients by streamlining operational and business processes. Operating in the Middle East through Giza Arabia www.gizaarabia.com, our group of companies is focused
on contributing to the local and regional development with our technology solutions, commitment and outstanding customer service. Our team of 700 professionals enables us to extend our
geographic footprint delivering diverse projects and connecting us with clients in the Middle East, Latin America and Russia.

S-ar putea să vă placă și