advanced software engineering: software testing · advanced software engineering 16 history of...

Post on 13-Apr-2020

24 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Web: http://www.megadatasys.com Assisted with templates

Advanced Software Engineering: Software Testing

COMP 3705(L5)

Sada Narayanappa

Anneliese Andrews Thomas Thelin

Carina Andersson

Advanced Software Engineering 2

News/Project/PapersQuestions:

Advanced Software Engineering 3

LectureChapter 8

– OrganizationChapter 14

– Tools– Test automation

Advanced Software Engineering 4

Organization• Support for decision making• Enhance teamwork• Independency• Balance testing – quality• Assist test management• Ownership of test technology• Resources utilization• Career path

Advanced Software Engineering 5

Test OrganisationDegrees of freedom

– Tall or flat

– Market or product

– Centralized or decentralized

– Hierarchical or diffused

– Line or staff

– Functional or project

Advanced Software Engineering 6

7 approaches to test organisation1. Each person’s responsibility2. Each unit’s responsibility3. Dedicated resource4. Test organisation in QA5. Test organisation in development6. Centralized test organisation7. Test technology centre

ExplanationBenefitsDrawbacks( Example )( Change )

Advanced Software Engineering 7

1. Each person’s responsibility

Product developers

M

P P P P P

PT

Advanced Software Engineering 8

2. Each unit’s responsibility

Product developers

M

P P P P P

PT

PT

Advanced Software Engineering 9

3a. Dedicated resource

Product developers

M

P P P P P

P T

Advanced Software Engineering 10

3b. Dedicated resource on a large scale

Product developers

M

P P P P P

Product developers

M

P P P P P

Test developers

TM

T T T T T

Advanced Software Engineering 11

4. Test organisation in QA

Test Development

QAO

Group

Product Development

PDO

Group

Advanced Software Engineering 12

5. Test organisation in development

Test Development

Group

Product Development

PDO

Group

Advanced Software Engineering 13

6. Centralized test organisation

Test Development

Group

Product Development

VP

Group

Advanced Software Engineering 14

7. Test technology centre

Test Development

Group

Product Development

VP

Group

Test Technology

Group

SE

Advanced Software Engineering 15

What criteria to consider?

Which organisation should we choose?

Size

Maturity

Focus

Advanced Software Engineering 16

History of software testing

Defect prevention & Test

process1950 1960 1970 1980 1990 2000

Fix bugs

Exhaustive

testing

Prove it worksProve it does

not work

Early test designInternet (Agile)

Test automation

tools

Advanced test

automation

Automated business

optimization

Advanced Software Engineering 17

ToolsGood at repeating tasks

Good at organising data

Requires training

Introduced incrementally

No “silver bullet”

Ease of usePowerRobustnessFunctionalityEase of insertionQuality of supportCostCompany policies and goals

Advanced Software Engineering 18

Test tools

Test management tools

Testexecution and comparison tools

Dynamic analysis tools

Debuggingtools

Coverage toolsStatic analysis tools

Test design tools

Architectural design

Detailed design

Code

Requirement specification

Unit test

Integration test

Performancesimulator tools

System test

Acceptance test

Advanced Software Engineering 19

Tools categories by activityReviews and inspections

Test planning

Test design and development

Test execution and evaluation

Testing support

Test DesignTools

Static Analysis

Tools

Execution:

•Unit•Integration•System•Acceptance

Advanced Software Engineering 20

Reviews and inspectionsComplexity analysis

– Identify problem areas

Code comprehension– Show different views of the

artefact

Syntax and semantic analysis– Check and warn

Test DesignTools

Static Analysis

Tools

Execution:

•Unit•Integration•System•Acceptance

Advanced Software Engineering 21

Test planningTemplates for test plan documentation

Test schedule and staffing estimates

Complexity analyser

To large extent general project management tools

Advanced Software Engineering 22

Test design and developmentTest data generator

Requirements-based test design tool

Capture/replay

Coverage analysis

Often integrated with test execution tools

Advanced Software Engineering 23

Test execution and evaluationCapture/replay

Coverage analysis

Memory testing

Test case management

Simulators and performance

Advanced Software Engineering 24

Capture/replay

Static c/r tools (without scripting language)

Static c/r tools (with scripting language)

Variable c/r tools

Advanced Software Engineering 25

Coverage analysisMonitoring execution

Pre-processing code

Problem: intrusive, in particular for real-time systems if-then-else

while-loop

case-of

Advanced Software Engineering 26

Memory testingLeaks (allocate but not free memory)

Array bounds

Initialization of variables

Easy to use, low cost

Advanced Software Engineering 27

Simulators and performanceHardware emulators

Environment simulators

Load generators

PC target HWHW emul

SWSW

target HWSWsimulator simulator

target HWSWgenerator

Advanced Software Engineering 28

Test case managementKeep track of test ware

Manage test execution

Seamless integration with other tools

Automated test reporting

Not yet available :-(

Advanced Software Engineering 29

Testing support toolsTrouble reporting

– Report, Dispatch, Follow-up

Configuration management– Manage, control and coordinate changes

Advanced Software Engineering 30

Test automationEffectiveness – independent of automationEfficiency – can be improved by automation

Automation takes 2-10(-30) times the time for first run!

Advanced Software Engineering 31

Different levels of automation

Select/identify test cases to runSet up test environment

Create test environmentLoad test dataRepeat for each test caseSet up test prerequisitesExecuteCompare resultsLog resultsAnalyze test failuresReport defectsClear up after test case

Clear up test environmentDelete unwanted test dataSave important data

Summarize results

Select/identify test cases to runSet up test environment

Create test environmentLoad test data

Repeat for each test caseSet up test prerequisitesExecuteCompare resultsLog resultsClear up after test case

Clear up test environmentDelete unwanted test dataSave important dataSummarize resultsAnalyze test failuresReport defects

Advanced Software Engineering 32

Test automation levels [Bob Binder, ISSRE04]

10 000 test/hFull test automation*5

1000 tests/hModel-based testing4

100 tests/hAutomated test scripting3

10 tests/hManual testing2

1 test/hTest by poking around1

* Evaluation is the bottle-neck of automated testing (Oracle)

Advanced Software Engineering 33

Test automation promises

1. Efficient regression test2. Run tests more often3. Perform difficult tests (e.g. load, outcome check)4. Better use of resources5. Consistency and repeatability6. Reuse of tests7. Earlier time to market8. Increased confidence

Advanced Software Engineering 34

Common problems1. Unrealistic expectations2. Poor testing practice ”Automatic chaos just gives faster chaos”3. Expected effectiveness4. False sense of security5. Maintenance of automatic tests6. Technical problems (e.g. Interoperability)7. Organizational issues

Advanced Software Engineering 35

What can be automated?

IntellectualPerformed once

RepeatedClerical

1. Identify

2. Design

3. Build

4. Execute

5. Check

Advanced Software Engineering 36

Cost distributionManual testing

Same tests automated

More mature automation

Edit Set up Execute Analyze Clear up

Advanced Software Engineering 37

Limitations of automating testingDoes not replace manual testingManual tests find more defects than automated tests

– Does not improve effectivenessGreater reliance on quality of tests

– Oracle problemTest automation may limit the software development

– Costs of maintaining automated tests

Advanced Software Engineering 38

Limitations of automating testing

Advanced Software Engineering 39

What to automate first?

Most important testsA set of breadth tests (sample each system area overall)Test for the most important functionsTests that are easiest to automateTests that will give the quickest paybackTest that are run the most often

Advanced Software Engineering 40

Tests...... to Automate

Tests that are run often– Regression tests– Important but trivial

Expensive to perform manually– Multi-user tests– Endurance/reliability tests

Difficult to perform manually– Timing critical– Complex tests– Difficult comparisons

... not to automateTests that are run rarelyTests that are not important

– will not find severe faultsHard to recognize defects

– Usability tests– Do the colours look nice?

Advanced Software Engineering 41

There is no silver bullet!The Reckless assumptions of automation

“Automated tests execute a sequence of actions without human intervention. This approach helps eliminate human error, and provides faster results. Since most products require tests to be run many times, automated testing generally leads to significant labour cost savings over time. Typically a company will pass the break-even point for labour costs after just two or three runs of an automated test.”

Advanced Software Engineering 42

Reckless assumptions of automationTesting is a sequence of actions that we can automate

– Manual testing is a process that adapts easily to change and can cope with complexity

– Humans are able to detect and evaluate problem patterns– How do you automatically interpret test results?

Advanced Software Engineering 43

Reckless assumptions of automation

Testing means repeating the same actions over and over

– Regression testing, no new defects found– Stepping in someone else’s footprints minimizes the chance of

being blown up by a land mine

Advanced Software Engineering 44

Reckless assumptions of automationAn automated test is faster, because it needs no human intervention

– It can be surprisingly hard to create a test suite that runs without human intervention

– E.g. interpreting results, fixing/maintaining tests, problems and bugs in the test tools, changes to software under test, ...

Advanced Software Engineering 45

Reckless assumptions of automationAutomation reduces human errors

– Some errors are amplified – any error that goes unnoticed when the test scripts and result files are created will go systematically unnoticed over and over again

Advanced Software Engineering 46

Reckless assumptions of automationWe can quantify the costs and benefits of manual vs. automated testing

– Two different processes that reveal different failures – a fare comparison is difficult

– Test automation is one part of a test strategy – not a substitute for manual testing

Advanced Software Engineering 47

Reckless assumptions of automationAutomation will lead to significant labour cost savings

– Developing automationWriting test scripts is software developmentTesters are seldom competent codersThe quality of test code must be good

– Operating automated tests– Maintaining automated test suites– Probably does not significantly reduce the need for manual testing

Advanced Software Engineering 48

Reckless assumptions of automationAutomation will not harm the test process

– It’s dangerous to automate something we don’t understand-(GIGO – Garbage in Garbage out) - this only creates garbasefaster

– The result will be a large mass of test code that nobody understands

top related