SOFTWARE TESTING AND SOFTWARE TESTING AND SOFTWARE DEVELOPMENT SOFTWARE DEVELOPMENT
PROCESS (SDP)PROCESS (SDP)
Aloysius Ochola
2010/HD18/431U
MAKERERE UNIVERSITY
School of Computing and Informatics Technology
MCN 8108 MCN 8108 Software Quality Assurance & Software Quality Assurance & TestingTesting
MCN 8108 MCN 8108 Software Quality Assurance & Software Quality Assurance & TestingTesting
MscCS Class Presentations. Nov. 2011
Software TestingSoftware Testing Programs are implemented to provide a
concrete representation of an algorithm◦ major concern is with the correctness and
performance of the implementation.Engineers must then ensure that their
software systems achieve an appropriate level of quality
Software verification (through correctness proof)◦ Technique to assist during the specification, design,
and implementation of a software system Software testing (alternative for verification)
◦ Process of assessing the functionality and correctness of a program through execution or analysis
◦ Basically a methodology to find bugs in a software with an intent to fix them
2 Software Testing and the SDP
Software Testing (cont)Software Testing (cont)
Software testing is more than just error detection.
Looked at as operating the software under controlled conditions to verify that it behaves as specified to detect errors and validate that what has been specified is what the user actually wanted.◦ Verification - check or test items, including
software, for conformance and consistency by evaluating the results against pre-specified requirements. Check if we are building what the customer wants Qn. Are we building the system right?
◦ Error Detection - Testing should intentionally attempt to make things go wrong. Determine if things happen when they shouldn’t or
things don’t happen when they should.
3 Software Testing and the SDP
Software Testing (cont)Software Testing (cont)
◦Validation (system correctness) - process of checking that what has been specified is what the user actually wanted. Check if we are building that system
correctly Qn. Are we building the right system?
Both verification and validation are necessary, but different components of any testing activity.
4 Software Testing and the SDP
Limits of Software TestingLimits of Software TestingCan not test a program completely
◦ Completeness means that at the end of testing, there are no undiscovered software errors. Whether they've been fixed is a different issue, but all problems must be known and understood
◦ Why complete testing is impossible The domain of possible inputs is too large to test There are too many possible paths through the
program to test The user interface issues (and thus the design
issues) are too complex to completely test
5 Software Testing and the SDP
Limits of S.T(cont…)Limits of S.T(cont…)Testing can only prove the presence
of bugs but never their absenceYou can not test the program’s
response to every possible input◦The number of test inputs, even for this
simple a program, is huge.You can not test every path the
program can take◦As with testing input data, it is important
to realize that you have not completely tested the program unless you have exercised every path.
◦No such paths as safe to skip
Software Testing and the SDP6
Limits of S.T(cont…)Limits of S.T(cont…)You can not find every design error
◦ A program meets the specification by doing exactly what a specification says it should
◦ If specification goes wrong? Ex. Asks for 1x1=11
◦ Being in the specification doesn't make them right
◦ You can't completely test a program if you can't find all of its design errors
You can not prove programs correct using logic
◦ can only validate the internal consistency of the program
◦ What if the specifications were wrong?
Software Testing and the SDP7
Limits of S.T(cont…)Limits of S.T(cont…)
You can not verify that the program works correctly◦A tester is interested in verifying the
program◦How? If the program can not be
tested completely
Software Testing and the SDP8
Objectives of Testing Objectives of Testing SoftwareSoftware
The purpose of testing is verification, validation and error detection in order to find problems. And the purpose of finding those problems is to get them fixed.
Testing Software to Find Problems◦ Executing a program with the intent of
finding an error◦ Check if the system meets the
requirements and be executed successfully in the Intended environment
◦ Check if the system is “ Fit for purpose”◦ Check if system does what it is expected
to do
9 Software Testing and the SDP
Objectives of Testing Objectives of Testing SoftwareSoftware
Finding Problems to Fix them◦One benefit of testing is that it results
in improved quality◦uncovering yet undiscovered errors◦Fixing bugs◦You take a destructive attitude toward
the program when you test
Software Testing and the SDP10
Testing Life-Cycle PhasesTesting Life-Cycle PhasesBasically 5 stages involved includeRequirements Study◦ Understanding of the requirements is very essential for
testing a product◦ So we set a starting point to the study of the client’s
requirements◦ Involves the analysis and planning phase, encapsulates
Test objective and coverage Overall schedule Standards and Methodologies Resources required, including necessary training Roles and responsibilities of the team members Tools used
Software Testing and the SDP11
Testing Life-cycle phasesTesting Life-cycle phasesTest Case Design and Development◦ Identify Components◦ Test Specification Design◦ Test Specification ReviewsTest Execution◦ Code Review◦ Test execution and evaluation◦ Performance and simulationTest Closure◦ Test summary report◦ Project DocumentationTest Process Analysis◦ Done on the reports and improving the performance of
application by implementing new technology.
Software Testing and the SDP12
Software Testing Software Testing TechniquesTechniques
Different techniques are used for software techniques. The commonly used are the following
Black Box Testing (functional/behavioural)◦ No knowledge of internal design or code required.
13 Software Testing and the SDP
◦ focus on outputs in response to selected inputs and execution conditions
◦ Tests are based on requirements and functionality.
White box testing White box testing (Glass box)
◦ Takes into account the internal mechanism of the system
◦ White Box is most appropriate when we must assure that the calculations are correct.
◦ Covering every possible path through a module is usually not practical
Goal is to ensure that all conditional statements have been executed at least once
◦ Requirements fulfilments and interface availability and working assurance
Grey Box TestingGrey Box Testing◦ The combination of White and Black box
testing
Software Testing and the SDP14
Stages of Software TestingStages of Software TestingUnit Testing Micro scale of testing done on particular functions or
code modules Internal program design and code knowledge is
required Thus, done by Programmers after modules have been
coded. Objectives
◦ To test the function of a program or unit of code such as a module
◦ To test internal logic◦ To verify internal design◦ To test path and conditions coverage◦ To test exception conditions & error handling
White box testing and test coverage techniques deployed
Tools guiding unit testing include; Debug, Re-structure, code analyzers and path coverage tools
Software Testing and the SDP15
Integrated Testing
Testing of combined parts of an application to determine their functional correctness
Done to technically verify proper interfacing between modules and within sub-systems.
Always carried out by developers after modules are unit tested
White Box, Black box and configuration management, techniques used.
Types of Integrated Testing◦ Bottom - up testing (test harness)◦ Top - down testing (stubs).◦ Modified top - down testing - test levels
independently.◦ Big Bang◦ Sandwich testing
Software Testing and the SDP16
System Testing
Major objectives include◦ Verify that system components perform control
functions◦ To perform inter-system test◦ To perform appropriate types of tests relating to
transaction flows, installation, reliability, regression, etc
It is done by both users and the development team after integration testing
System integrated testing is often carried out after system testing but outside the project life cycle
◦ Tests the co-existence of products and applications that are required to perform together in a production-like operational environment
Software Testing and the SDP17
Acceptance Testing
This is performed by the end usersTo verify that the system meets
their requirements.Black box technique is appliedTools used may include:
◦Comparison◦Keystroke capture◦Playback◦Regression testing
Software Testing and the SDP18
Types of Software TestingTypes of Software TestingWe have come across so many types
of software testingTwo major approaches of software
testing◦ Manual testing – done by man. Tester runs
the software for errors. Consumes a lot of time because testing has to be repeated after every change (regression testing)
◦ Automated testing – Testing employing software tools which execute tests without manual intervention performed by writing test drivers that can run
automatically and produce test results
19 Software Testing and the SDP
Major Types of TestingMajor Types of TestingLoad Testing◦ Testing an application under heavy loads◦ Ex, Testing of a web site under a range of loads to
determine, when the system response time degraded or fails.
Stress Testing◦ Program is checked to see how well it deals with
abnormal resource demands◦ Testing under heavy loads, heavy repetition of
certain actions or inputs◦ Ex. input of large numerical values, large complex
queries to a database
Software Testing and the SDP20
Performance Testing◦ Tests the run-time performance of software◦ How well does the application comply to
performance requirements? Recovery Testing◦ Checks system’s ability to recover from failures◦ How well can it recovers from crashes, hardware
failures or other problems? Conversion Testing◦ Testing of programs or procedures used to convert
data from existing systems for use in replacement system
◦ Ensures that the existing data should not change, while converting it into the new updated version of the application
Software Testing and the SDP21
Usability Testing◦ A method by which users of a product are
asked to perform certain tasks in an effort to measure the product's ease-of-use, task time, and the user's perception of the experience
◦ Testing the ease with which users can learn and use a product
Configuration Testing◦ Focuses on measuring a human-made product's
capacity to meet its intended purpose◦ Causes the application to fail to meet its
configurability requirements so that the underlying defects can be identified, analyzed, fixed, and prevented in the future
Software Testing and the SDP22
Software Development Software Development ProcessProcess
A structure imposed on the development of a software product
There are several models for such processes, each describing approaches to a variety of tasks or activities that take place during the process.
Activities involved◦ Planning ◦ Design ◦ Coding and Documentation ◦ Testing and Fixing ◦ Post-Release Maintenance and Enhancement Testing is involved mainly in the functional
phases of the software development process.It is necessary that it is encapsulated in the
whole process
23 Software Testing and the SDP
SummarySummary
Testing in itself cannot ensure the quality of software
Only gives us a certain level of confidence in the software
Testing though, proves that under specific controlled conditions, the software functioned as expected by the test cases executed
Testing never ends as long as a software is still in use
24 Software Testing and the SDP
ReferencesReferences
Manish Parashar: Software Testing, Introduction to Software Engineering; Lecture Notes
C. Kaner , J. Falk and H.Q Nguyen: Testing Computer Software.
Different types of software retrieved Nov 2011 from http://www.wisegeek.com/what-are-the-different-types-of-system-software.htm
Roger S. Pressman: Software Engineering; 5th Edition.
Ram Chillarege (1999): Software Testing Best Practices, IBM Research Technical Report
What is Software Testing … ? Retrieved Nov. 2011 from: http://bazman.tripod.com/what_testing.html
Antonia Bertolino (2001): Software Testing
25 Software Testing and the SDP