Transcript
Page 1: Software testing and software development process

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

Page 2: Software testing and software development process

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

Page 3: Software testing and software development process

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

Page 4: Software testing and software development process

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

Page 5: Software testing and software development process

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

Page 6: Software testing and software development process

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

Page 7: Software testing and software development process

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

Page 8: Software testing and software development process

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

Page 9: Software testing and software development process

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

Page 10: Software testing and software development process

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

Page 11: Software testing and software development process

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

Page 12: Software testing and software development process

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

Page 13: Software testing and software development process

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.

Page 14: Software testing and software development process

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

Page 15: Software testing and software development process

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

Page 16: Software testing and software development process

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

Page 17: Software testing and software development process

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

Page 18: Software testing and software development process

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

Page 19: Software testing and software development process

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

Page 20: Software testing and software development process

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

Page 21: Software testing and software development process

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

Page 22: Software testing and software development process

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

Page 23: Software testing and software development process

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

Page 24: Software testing and software development process

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

Page 25: Software testing and software development process

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


Recommended