Testing Documentation Writing Test Cases Strategies for Writing Large Systems Roles of People Testing.

Slides:



Advertisements
Similar presentations
Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
Advertisements

Test process essentials Riitta Viitamäki,
Lecture 8: Testing, Verification and Validation
1 Integration Testing CS 4311 I. Burnstein. Practical Software Testing, Springer-Verlag, 2003.
System/Software Testing Error detection and removal determine level of reliability well-planned procedure - Test Cases done by independent quality assurance.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 11: Integration- and System Testing.
Software Architecture Prof.Dr.ir. F. Gielen
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
Integration testing Satish Mishra
Software Testing and Quality Assurance
Illinois Institute of Technology
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 10: Testing and Inspecting to Ensure High Quality Part 3:
Outline Types of errors Component Testing Testing Strategy
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.
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
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
Software System Integration
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Functional Testing Test cases derived from requirements specification document – Black box testing – Independent testers – Test both valid and invalid.
System/Software Testing
ECE 355: Software Engineering
Software Testing. Recap Software testing – Why do we do testing? – When it is done? – Who does it? Software testing process / phases in software testing.
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.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
CPIS 357 Software Quality & Testing
CMSC 345 Fall 2000 Unit Testing. The testing process.
Software testing basic. Main contents  Why is testing necessary?  What is testing?  Test Design techniques  Test level  Test type  How to write.
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.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
 CS 5380 Software Engineering Chapter 8 Testing.
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.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Chapter 9 Testing the System Shari L. Pfleeger Joann M. Atlee
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
Chapter SIX Implementation, Testing and Pragmatics Making it a reality.
Software Construction Lecture 18 Software Testing.
TESTING LEVELS Unit Testing Integration Testing System Testing Acceptance Testing.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
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.
1 Object-Oriented Analysis and Design with the Unified Process Figure 13-1 Implementation discipline activities.
Teaching slides Chapter 9. Chapter 9 Software Testing (Verification & Validation) Introduction Software testing & software engineering methodologies Introduction.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
ANOOP GANGWAR 5 TH SEM SOFTWARE TESTING MASTER OF COMPUTER APPLICATION-V Sem.
Software Testing Strategies for building test group
Software Testing.
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Integration Testing.
Levels Of Testing and Special Tests
Applied Software Implementation & Testing
Lecture 09:Software Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Chapter 10 – Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Chapter 11: Integration- and System Testing
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Chapter 11: Integration and System Testing
Software Testing Strategies
Presentation transcript:

Testing Documentation Writing Test Cases Strategies for Writing Large Systems Roles of People Testing

© Lethbridge/Laganière Documentation Defects Defect: —The software has a defect if: -1) the user manual, -2) reference manual or -3) 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 each potential problem is adequately explained to the user. —Story: reading levels; SCCQ.

© Lethbridge/Laganière Writing Formal Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class of defects in a software system.  Note: the test cases are DESIGNED to detect errors!!!!  There may be a number of individual tests in a test case, such as invalid inputs, invalid formats, missing attributes / fields, and more. A single test case may test for a number of these Lots of errors (combinations!) arise when more than one field is in error…. Each test is a particular running of the test case on a particular version of the system. All are included in a suite of tests…

© Lethbridge/Laganière Test Plans – A Critical Document. Document contains a complete set of test cases for a system —Along with other information about the testing process. —Who does what; when; how; anticipated results; …. The Test Plan is one of the standard forms of documentation. Test Plan - Written long before the testing starts. Test Plan Development: —once you have developed the requirements, planning for testing should start to occur at ‘that’ time. —Many types of tests can be developed directly from Use Cases. —Why not all from the use cases? Discuss. If a project does not have a test plan: —Testing will inevitably be done in an ad-hoc manner. —This will lead to poor quality software.

© Lethbridge/Laganière Information to include in a Formal Test case A. Identification and classification: —Each test case should have a number, title (optional). —Indicate system, subsystem or module being tested —Test case importance – indicate this. — B. Instructions: —Tell the tester exactly what to do. —Tester should not normally have to refer to any other documentation in order to execute the instructions. C. Expected result: —Cite expected results and provide to tester —Report test failure if the expected results are not produced. -All organizations will have some formal procedure for documenting the results of independent testing; failures; successes. - D. Cleanup (when needed): —Inform tester how to restart / recover in the event of failure. —Further, this too should be a specific test.

© Lethbridge/Laganière All Test Cases are Not Created Equal… Level 1: —Critical test cases. —Designed to verify the system runs and is safe. 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. Somewhere in these levels may very well be the testing of non- functional requirements such as testing under peak loading (numbers of simultaneous users, files being accessed, etc.), reliability, performance, recovery, simultaneous / concurrent database access, remote object interfacing, … and more.

© Lethbridge/Laganière Strategies for Testing Large Systems Big Bang Testing versus Integration Testing Big Bang Testing, you take the entire system and test it as a unit Incremental Testing: A better strategy in most cases. —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 Top Down Testing - Stubs User Interface Start here! Underlying functionality may be simulated by stubs. —Do not perform any real computations or manipulate any real data. —Placeholders to be completed ‘later.’ Work downwards, integrating lower and lower levels. Big drawback: Cost of writing the stubs. —You may need to simulate ‘returns’ or ‘responses’ —This can be problematic. —But it is a good technique too.

© Lethbridge/Laganière Bottom-Up testing - Drivers Start at very lowest levels of the software. Expense here: You needs drivers to test the lower layers. —Drivers are simple programs designed specifically for testing that make calls to the lower layers and/or provide parameters. Drivers in bottom-up testing have a similar role to stubs in top-down testing, and are time-consuming to write. Drivers may need to provide various parameters, temporary files, and may have to be coded to recognize the proper value / type of data returned!

© Lethbridge/Laganière Sandwich Testing Hybrid between bottom-up and top down testing. Top down: Test the user interface in isolation, using stubs. Test the very lowest level functions, using drivers. These may be utility functions or pre-existing functions that are being reused… When the complete system is integrated, only the middle layer remains on which to perform the final set of tests. Sandwich testing is very good especially when reusing existing logic.

© Lethbridge/Laganière Vertical Strategies for Incremental Integration Testing What does all this mean to you? Explain.

© Lethbridge/Laganière The “Test-Fix-Test” Cycle When a failure occurs during testing: Each failure report should enter into a failure tracking system. These are likely formalized. Screened and assigned a Priority. Known Bugs List: Low-priority failures might be put here. — May be included with the software’s release notes. Somebody/some office is assigned to investigate a failure. That person/office 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, as the above is quite simplistic and a number of important facts are not noted.

© Lethbridge/Laganière The Ripple Effect – Regression Errors High probability efforts to remove defects adds new defects How so? 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 Maintenance programmer given insufficient time to properly analyze, repair, and adequately repair due to pressures. All programmers are not created equal. Regression Testing —Based on storing / documentation of previous tests. Heuristic: put your sharpest new hire into Maintenance!!!!

© Lethbridge/Laganière Regression Testing Is far too expensive to re-run every single test case every time a change is made to software. Only a subset of the previously-successful test cases is re-run. This process is called regression testing. —The tests that are re-run are called regression tests. Regression test cases - carefully selected to cover as much of the system as possible that can in any way have been affected by a maintenance change or any kind of change. 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 Deciding When to Stop Testing All of the level 1 test cases must have been successfully executed. 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 / integrating all 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 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 and programming —Really, there is/are so many more ‘levels’ than this…Depends on the organization and how ‘they’ undertake testing strategies… —Depending on the architecture, there well may be subsystem testing, system testing, various kinds of integrated testing, etc. (Different shops will call these by different names – perhaps. Independent testing is performed (often) by a separate group. —They do not have 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. —NOT all organizations have independent test groups! (Discuss) —Done after ‘unit’ testing. Perhaps for System Testing < Deployment —Can bet there is an independent test group in medium to large organizations. Discuss: Quality Control Branch; Editors; Independent test groups: to whom do they report? etc.

© Lethbridge/Laganière Testing Performed by Users and Clients Alpha testing —Performed by the user or client, but under the supervision of the software development team. —Generally software is clearly not ready for release; maybe partial. —Maybe testing a particular major feature… Beta testing —Performed by the user or client in a normal work environment. —May be run at client shop… —Recruited from the potential user population. —An open beta release is the release of low-quality software to the general population. (not too low now…) Acceptance testing —Performed by users and customers. —However, the customers exercise the application on their own initiative often in real live situations, loading, etc.. AGAIN, these definitions may vary from organization to organization. (My experience: Environmental Systems Test 1 and 2 and Operational Field Test (OFT))

© Lethbridge/Laganière 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’ Ensure ‘their’ requirements are met Costs! Taken out of their hide! Run applications in parallel? More (may be cut a deal to serve as beta test site)

© Lethbridge/Laganière Acceptance Testing End-user Test the ‘toot’ out of the application Remember: to the end-user, the interface IS the application Testing is usually Black Box Functional; Can users use the application to perform their jobs: utility, usability, functionality, timing, response, … More Black Box: May include non-functional testing such as loading situations, performance, response times, transaction volumes, etc. Despite all levels of testing, there will be bugs! This is a fact of life. Then, Maintenance begins!