Week 13 - Testing (Part 2) - OBE
Week 13 - Testing (Part 2) - OBE
Engineering
AAPP003-4-2-Introduction to Software Engineering (version1)
AAPP003-4-2 Slide 2 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Key Terms
• Acceptance Criteria
• Beta Testing
• Component
• Re-testing
AAPP003-4-2 Slide 3 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Chapter Structure
• Component testing
• Testing policies
• Approach in Testing
• Types of user testing
AAPP003-4-2 Slide 4 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Component testing
AAPP003-4-2 5 Slide 5 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Interface testing
AAPP003-4-2 6 Slide 6 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Interface testing
• Interface misuse
– A calling component calls another component and makes an
error in its use of its interface e.g. parameters in the wrong order.
• Interface misunderstanding
– A calling component embeds assumptions about the behaviour
of the called component which are incorrect.
• Timing errors
– The called and the calling component operate at different speeds
and out-of-date information is accessed.
AAPP003-4-2 8 Slide 8 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Interface testing guidelines
AAPP003-4-2 9 Slide 9 of 32
TESTING (Part 2)
Introduction to Software Engineering-
System testing
AAPP003-4-2 10 Slide 10 of 32
TESTING (Part 2)
Introduction to Software Engineering-
System and component testing
AAPP003-4-2 11 Slide 11 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Testing policies
AAPP003-4-2 12 Slide 12 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Test-driven development
AAPP003-4-2 13 Slide 13 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Test-driven development
AAPP003-4-2 14 Slide 14 of 32
TESTING (Part 2)
Introduction to Software Engineering-
TDD process activities
AAPP003-4-2 15 Slide 15 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Benefits of test-driven
development
• Code coverage
– Every code segment that you write has at least one associated
test so all code written has at least one test.
• Regression testing
– A regression test suite is developed incrementally as a program
is developed.
• Simplified debugging
– When a test fails, it should be obvious where the problem lies.
The newly written code needs to be checked and modified.
• System documentation
– The tests themselves are a form of documentation that describe
what the code should be doing.
AAPP003-4-2 16 Slide 16 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Regression testing
AAPP003-4-2 17 Slide 17 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Release testing
AAPP003-4-2 18 Slide 18 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Release testing and system
testing
• Release testing is a form of system testing.
• Important differences:
– A separate team that has not been involved in the
system development, should be responsible for
release testing.
– System testing by the development team should
focus on discovering bugs in the system (defect
testing). The objective of release testing is to check
that the system meets its requirements and is good
enough for external use (validation testing).
AAPP003-4-2 19 Slide 19 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Requirements based testing
AAPP003-4-2 20 Slide 20 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Requirements tests
AAPP003-4-2 21 Slide 21 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Features tested by scenario
AAPP003-4-2 22 Slide 22 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Performance testing
AAPP003-4-2 23 Slide 23 of 32
TESTING (Part 2)
Introduction to Software Engineering-
User testing
AAPP003-4-2 24 Slide 24 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Types of user testing
• Alpha testing
– Users of the software work with the development
team to test the software at the developer’s site.
• Beta testing
– A release of the software is made available to users
to allow them to experiment and to raise problems
that they discover with the system developers.
• Acceptance testing
– Customers test a system to decide whether or not it is
ready to be accepted from the system developers and
deployed in the customer environment. Primarily for
custom systems.
AAPP003-4-2 25 Slide 25 of 32
TESTING (Part 2)
Introduction to Software Engineering-
The acceptance testing process
AAPP003-4-2 26 Slide 26 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Stages in the acceptance testing
process
• Define acceptance criteria
• Plan acceptance testing
• Derive acceptance tests
• Run acceptance tests
• Negotiate test results
• Reject/accept system
AAPP003-4-2 27 Slide 27 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Agile methods and acceptance
testing
• In agile methods, the user/customer is part of the
development team and is responsible for making
decisions on the acceptability of the system.
• Tests are defined by the user/customer and are
integrated with other tests in that they are run
automatically when changes are made.
• There is no separate acceptance testing process.
• Main problem here is whether or not the embedded user
is ‘typical’ and can represent the interests of all system
stakeholders.
AAPP003-4-2 28 Slide 28 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Summary
AAPP003-4-2 Slide 29 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Review Questions
AAPP003-4-2 Slide 30 of 32
TESTING (Part 2)
Introduction to Software Engineering-
Question and Answer Session
Q&A
AAPP003-4-2 Slide 31 of 32
TESTING (Part 2)
Introduction to Software Engineering-
What we will cover next
AAPP003-4-2 Slide 32 of 32
TESTING (Part 2)
Introduction to Software Engineering-