Software engineering

Download Report

Transcript Software engineering

Software engineering - 2
Section 8
QUIZ
• Show how it is possible to determine the
height of a tall building with the aid of a
barometer.
Niles Bohr
‫مش دايما الحل المعقد هو الحل الوحيد اللى صح‬
‫‪‬‬
What’s software testing
• software testing is an activity to check
whether the actual results match the
expected results and to ensure that the
software system is defect free.
Why software testing is important
• Testing is important because software bugs
could be expensive or even dangerous.
How to do testing ??
• Imagine that we want to test moving a file
from folder A to folder B. How should we test
this operation to ensure that this operations
works correctly ?
– Trying to move the file when it is open
– You do not have the security rights to paste the
file in Folder B
– Folder B is on a shared drive and storage capacity
is full.
– Folder B already has a file with the same name
Exhaustive testing
• Test the entire possible combinations
• EXHAUSTIVE testing is not possible.
80-20 rule
• “80 percent from the possible defects will
come from 20 percent from the overall code”
• Defect Clustering
Pesticide Paradox
• If the same tests are repeated over and over
again, eventually the same test cases will no
longer find new bugs
• To overcome this, the test cases need to be
regularly reviewed & revised, adding new &
different test cases to help find more defects.
Important note
• Software Testing reduces the probability of
undiscovered defects remaining in the
software but even if no defects are found, it is
not a proof of correctness.
Early testing
• Finding and fixing defects does not help if the
system build is unusable and does not fulfill
the users needs & requirements.
• Early Testing - Testing should start as early as
possible in the Software Development Life
Cycle
Early testing
• Also, the costs of fixing a defect increases
across the development life cycle. The earlier
in life cycle a defect is detected, the cheaper it
is to fix it
V Model
Software testing lifecycle
Manual testing
• In Manual Testing , Testers manually execute
test cases without using any automation
tools.
• Any new application must be manually tested
before its testing can be automated. Manual
testing requires more effort, but is necessary
to check automation feasibility.
• Automated testing may be done using some
testing tools to generate test cases
Black-box VS White-box testing
System testing
• System testing is actually a series of different
tests whose sole purpose is to exercise the full
computer based system.
• System testing falls under the black box
testing category of software testing.
Integration testing
• A typical software project consists of multiple software
modules, coded by different programmers. Integration
testing focuses on checking data communication
amongst these modules.
• A Module in general is designed by an individual
software developer whose understanding and
programming logic may differ from other
programmers. Integration testing becomes necessary
to verify the software modules work in unity
Unit testing
• The objective of unit testing is to isolate a
section of code and verify its correctness. In
procedural programming a unit may be an
individual function or procedure
• The goal of unit testing is to isolate each part
of the program and show that the individual
parts are correct. Unit testing is usually
performed by the developer.
Demo
•
•
•
•
•
Regression testing
Code coverage
TESTNG
Selenium
Search for Appium(Android frontend)