Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 10: Testing and Inspecting to Ensure High Quality Part 3:

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Configuration management
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 11: Integration- and System Testing.
Software Testing 3 Damian Gordon.
Software Testing By Marcin Starzomski :P. What is Testing ? Testing is a process used to help identify the correctness, completeness and quality of developed.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
Integration testing Satish Mishra
Software Testing and Quality Assurance
Illinois Institute of Technology
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
Software Quality: Testing and Verification I. © Lethbridge/Laganière 2001 Chapter 9: Architecting and designing software2 1.A failure is an unacceptable.
Testing - an Overview September 10, What is it, Why do it? Testing is a set of activities aimed at validating that an attribute or capability.
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 11: Integration- and System Testing.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Software Testing & Strategies
Software Engineering Lecture 13 Software Testing Strategies 1.
Software Testing Introduction. Agenda Software Testing Definition Software Testing Objectives Software Testing Strategies Software Test Classifications.
Software System Integration
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Testing Documentation Writing Test Cases Strategies for Writing Large Systems Roles of People Testing.
CCSB223/SAD/CHAPTER141 Chapter 14 Implementing and Maintaining the System.
ECE 355: Software Engineering
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
TESTING.
INFO 637Lecture #81 Software Engineering Process II Integration and System Testing INFO 637 Glenn Booker.
SOFTWARE TESTING STRATEGIES CIS518001VA : ADVANCED SOFTWARE ENGINEERING TERM PAPER.
Teaching material for a course in Software Project Management & Software Engineering – part II.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
 CS 5380 Software Engineering Chapter 8 Testing.
Configuration Management (CM)
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
Chapter SIX Implementation, Testing and Pragmatics Making it a reality.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
Chapter 10: Testing Lecturer: Dr. Mai Fadel. Basic Definitions A failure is an unacceptable behavior exhibited by a system. E.g. the production of incorrect.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Big Bang Approach No testing of Individual Units Advantages Cost can be saved No stubs/Drivers Very fast Disadvantages Hard to debug Location of defect.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
Integration testing Integrate two or more module.i.e. communicate between the modules. Follow a white box testing (Testing the code)
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
CS451 Software Implementation and Integration Yugi Lee STB #555 (816) Note: This lecture was designed.
What is a level of test?  Defined by a given Environment  Environment is a collection of people, hard ware, software, interfaces, data etc.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 8 Testing the Programs. Integration Testing  Combine individual comp., into a working s/m.  Test strategy gives why & how comp., are combined.
Applied Software Project Management SOFTWARE TESTING Applied Software Project Management 1.
Software Testing Kobla Setriakor Nyomi Faculty Intern (Programming II)
Software Testing Strategies for building test group
Group mambers: Maira Naseer (BCS ).
Testing and Inspecting to Ensure High Quality
Verification and Testing
Chapter 18 Software Testing Strategies
Levels Of Testing and Special Tests
Applied Software Implementation & Testing
Lecture 09:Software Testing
Software System Integration
Chapter 10 – Software Testing
Baisc Of Software Testing
Welcome to Corporate Training -1
Integration Testing CS 4311
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software System Integration
Chapter 11: Integration- and System Testing
Test Cases, Test Suites and Test Case management systems
Software Testing Strategies
Presentation transcript:

Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 10: Testing and Inspecting to Ensure High Quality Part 3: Documentation Defects Writing Formal Test Cases and Developing Formal Test Plans

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality Documentation defects Defect: —The software has a defect if the user manual, reference manual or on-line help: -gives incorrect information -fails to give information relevant to a problem. Testing strategy: —Examine all the end-user documentation, making sure it is correct. —Work through the use cases, making sure that each of them is adequately explained to the user.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality Writing Formal Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class of defect in a software system. A test case can give rise to many tests. Each test is a particular running of the test case on a particular version of the system.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality4 Test plans A test plan is a document that contains a complete set of test cases for a system —Along with other information about the testing process. The test plan is one of the standard forms of documentation. If a project does not have a test plan: —Testing will inevitably be done in an ad-hoc manner. —Leading to poor quality software. The test plan should be written long before the testing starts. You can start to develop the test plan once you have developed the requirements. They can be readily developed in many cases (but certainly not all) directly from Use Cases.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality5 Information to include in a formal test case A. Identification and classification: —Each test case should have a number, and may also be given a descriptive title. (We will relate them to Use Cases in many cases.) —The system, subsystem or module being tested should also be clearly indicated. —The importance of the test case should be indicated. B. Instructions: —Tell the tester exactly what to do. —The tester should not normally have to refer to any documentation in order to execute the instructions. C. Expected result: —Tells the tester what the system should do in response to the instructions. —The tester reports a failure if the expected result is not encountered. D. Cleanup (when needed): —Tells the tester how to make the system go ‘back to normal’ or shut down after the test.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality6 Levels of importance of test cases Level 1: —First pass critical test cases. —Designed to verify the system runs and is safe. —No further testing is possible. Level 2: —General test cases. —Verify that day-to-day functions correctly. —Still permit testing of other aspects of the system. Level 3: —Detailed test cases. —Test requirements that are of lesser importance. —The system functions most of the time but has not yet met quality objectives.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality7 Determining test cases by enumerating attributes It is important that the test cases test every aspect of the requirements. Each detail in the requirements is called an attribute. —An attribute can be thought of as something that is testable. —A good first step when creating a set of test cases is to enumerate the attributes. —A way to enumerate attributes is to circle all the important points in the requirements document. However there are often many attributes that are implicit. Here we must consider explicit (use cases and non- functional requirements) and implied attributes.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality Strategies for Testing Large Systems Big bang testing versus integration testing In big bang testing, you take the entire system and test it as a unit A better strategy in most cases is incremental testing: —You test each individual subsystem in isolation —Continue testing as you add more and more subsystems to the final product —Incremental testing can be performed horizontally or vertically, depending on the architecture -Horizontal testing can be used when the system is divided into separate sub-applications

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality9 Top down testing Start by testing just the user interface. The underlying functionality are simulated by stubs. —Pieces of code that have the same interface as the lower level functionality. —Do not perform any real computations or manipulate any real data. Then you work downwards, integrating lower and lower layers. The big drawback to top down testing is the cost of writing the stubs.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality10 Bottom-up testing Start by testing the very lowest levels of the software. You needs drivers to test the lower layers of software. —Drivers are simple programs designed specifically for testing that make calls to the lower layers. Drivers in bottom-up testing have a similar role to stubs in top-down testing, and are time-consuming to write.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality11 Sandwich testing Sandwich testing is a hybrid between bottom-up and top down testing. Test the user interface in isolation, using stubs. Test the very lowest level functions, using drivers. When the complete system is integrated, only the middle layer remains on which to perform the final set of tests.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality12 Vertical strategies for incremental integration testing

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality13 The test-fix-test cycle When a failure occurs during testing: Each failure report is entered into a failure tracking system. It is then screened and assigned a priority. Low-priority failures might be put on a known bugs list that is included with the software’s release notes. Some failure reports might be merged if they appear to result from the same defects. Somebody is assigned to investigate a failure. That person tracks down the defect and fixes it. Finally a new version of the system is created, ready to be tested again. We will discuss in detail!!

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality14 The ripple effect There is a high probability that the efforts to remove the defects may have actually added new defects The maintainer tries to fix problems without fully understanding the ramifications of the changes The maintainer makes ordinary human errors The system regresses into a more and more failure-prone state Often maintainer is given insufficient time to properly analyze, repair, and adequately repair due to pressures. Regression Testing —Based on storing / documentation of previous tests.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality15 Regression testing It tends to be far too expensive to re-run every single test case every time a change is made to software. Hence only a subset of the previously-successful test cases is actually re-run. This process is called regression testing. —The tests that are re-run are called regression tests. Regression test cases are carefully selected to cover as much of the system as possible. The “law of conservation of bugs”: The number of bugs remaining in a large system is proportional to the number of bugs already fixed

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality16 Deciding when to stop testing All of the level 1 test cases must have been successfully executed. Certain pre-defined percentages of level 2 and level 3 test cases must have been executed successfully. The targets must have been achieved and are maintained for at least two cycles of ‘builds’. —A build involves compiling and integrating all the components. —Failure rates can fluctuate from build to build as: -Different sets of regression tests are run. -New defects are introduced. But the notion of ‘stopping’ is quite real. Discuss: Show stoppers!!!!

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality17 The roles of people involved in testing The first pass of unit and integration testing is called developer testing. —Preliminary testing performed by the software developers who do the design. —Really, there is/are more ‘levels’ than this… Independent testing is performed by a separate group. —They do not have a vested interest in seeing as many test cases pass as possible. —They develop specific expertise in how to do good testing, and how to use testing tools. Discuss: Quality Control Branch; Editors; Independent test groups: to whom do they report? ETC.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality18 Testing performed by users and clients Alpha testing —Performed by the user or client, but under the supervision of the software development team. Beta testing —Performed by the user or client in a normal work environment. —Recruited from the potential user population. —An open beta release is the release of low-quality software to the general population. Acceptance testing —Performed by users and customers. —However, the customers do it on their own initiative.

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality19 Beta Testing Discuss: Selection of beta-test sites sizes / dependencies of shops small, medium, large local; distributed; platforms….. motivations for them / us early look at software see about interfaces get a leg up on ‘market share’ more Costs! taken out of their hyde! run applications in parallel?

© Lethbridge/Laganière 2001 Chapter 10: Testing and Inspecting for High Quality20 Acceptance Testing End-user Test the ‘tar’ out of the application Remember: to the end-user, the interface IS the application. Despite all levels of testing, there will be bugs! This is a fact of life.