Software Architecture Prof.Dr.ir. F. Gielen

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Software Testing 3 Damian Gordon.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
CMSC 345, Version 11/07 SD Vick from S. Mitchell Software Testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Illinois Institute of Technology
1 Testing. 2 About Testing  The reason the program is in testing is that it probably doesn’t work!  We test to find bugs before our users and hope that.
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
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.
Software Test Plan Why do you need a test plan? –Provides a road map –Provides a feasibility check of: Resources/Cost Schedule Goal What is a test plan?
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.
Types and Techniques of Software Testing
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
Functional Testing Test cases derived from requirements specification document – Black box testing – Independent testers – Test both valid and invalid.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
BY: GARIMA GUPTA MCA FINAL YEAR WHAT IS SOFTWARE TESTING ? SOFTWARE TESTING IS THE PROCESS OF EXECUTING PROGRAMS OR SYSTEM WITH THE INTENT.
System/Software Testing
Extreme Programming Software Development Written by Sanjay Kumar.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
TESTING.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Software Engineering Chapter 23 Software Testing Ku-Yaw Chang Assistant Professor Department of Computer Science and Information.
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.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Testing Workflow In the Unified Process and Agile/Scrum processes.
Dr. Tom WayCSC Testing and Test-Driven Development CSC 4700 Software Engineering Based on Sommerville slides.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Software Testing Yonsei University 2 nd Semester, 2014 Woo-Cheol Kim.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 22 Slide 1 Software Verification, Validation and Testing.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
Software Construction Lecture 18 Software Testing.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005 MIS 161 Systems Development Life Cycle II Lecture 5: Testing User Documentation.
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
Software Testing Process By: M. Muzaffar Hameed.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
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.
CS451 Lecture 10: Software Testing Yugi Lee STB #555 (816)
CPSC 871 John D. McGregor Module 8 Session 1 Testing.
Software Quality Assurance and Testing Fazal Rehman Shamil.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
CS 325: Software Engineering February 16, 2016 Designing a Design Class Diagram Design Class Diagrams DCD: Restaurant Example DCD: ATM Example Software.
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
Software Test Plan Why do you need a test plan? –Provides a road map –Provides a feasibility check of: Resources/Cost Schedule Goal What is a test plan?
SOFTWARE TESTING SOFTWARE TESTING Presented By, C.Jackulin Sugirtha-10mx15 R.Jeyaramar-10mx17K.Kanagalakshmi-10mx20J.A.Linda-10mx25P.B.Vahedha-10mx53.
Testing and Evolution CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Defect testing Testing programs to establish the presence of system defects.
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
Software Testing.
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
PREPARED BY G.VIJAYA KUMAR ASST.PROFESSOR
Software Testing.
John D. McGregor Session 9 Testing Vocabulary
SOFTWARE TESTING OVERVIEW
John D. McGregor Session 9 Testing Vocabulary
John D. McGregor Session 9 Testing Vocabulary
Lecture 09:Software Testing
Testing and Test-Driven Development CSC 4700 Software Engineering
Software testing.
Software Testing “If you can’t test it, you can’t design it”
TYPES OF TESTING.
Presentation transcript:

Software Architecture Prof.Dr.ir. F. Gielen Quality Attributes & Tactics (3) Testability Vakgroep Informatietechnologie – IBCN

Testability Tactics Tactics to Control Testability Goals : to allow easier testing when an increment of software development is completed Architectural techniques for increasing testability Manage input/output Monitoring Tactics to Control Testability Completion of an increment of development Fault detected Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Testability Tactics Manage Input/output Internal Monitoring Record/playback Capturing “macros”, replaying and comparing results Separate Interface from Functionality stubs Specialize access routes/interfaces Internal Monitoring Built-in monitors – the component can be made “visible” showing state, performance load, capacity, … Logging , tracing, trace levels…. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Test Planning and Test Types Test Cycle Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Do this NOW if haven't already !! Test Planning Do this NOW if haven't already !! Test Design parallels Application Design Test harness/driver design. The test plan should be an integrated part of the overall project plan. The test plan must define how success will be measured All requirements must have a test. Many different kinds of tests, some trivial, some not Degree of testing depends on risk considerations Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Step 1: Requirements Analysis Creating a Test Plan Step 1: Requirements Analysis For each requirement choose test types, and methodologies -> document it in the Test Plan Each requirement may need multiple test types and methodologies If you are having trouble choosing a test, the requirement may need to be more clearly specified Functional Requirements have use-cases / scenarios Quality Requirements (e.g performance) may need additional specifications for test purposes A test is defined as a combination of the test types, and methodologies chosen for the requirement Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Creating a Test Plan (Cont’d) Step 2: Prioritize For each test type, determine order (account for dependencies) and priority (critical, important, moderate, low) based on risk considerations Step 3: For each test, specify Test Identification details in a Test Description Step 4: Account for test time/effort and other resource costs in the project plan. Don’t neglect the priories and risks. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Resulting Reduction in Risk Exposure Acceptance, Defect-density testing (all defects equal) Risk Exposure from Defects Value/Risk- Driven Testing (80-20 value distribution) Time to Ship (amount of testing) Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Test Types There are many “types” of tests that can be performed: Unit and Validation white-box black-box Integration Interface Path System Stress Regression Acceptance Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Relative cost to fix faults The cost of faults: Relative cost to fix faults 368 400 350 300 250 200 150 52 100 1 3 4 10 50 This graphs indicates the relative cost of correcting an error. If the error is discovered during implementation, correcting the error costs on the average four times as much as to correct an error discovered during the requirement phase. Errors discovered during maintenance (i.e. after the product has been put to operation) cost 368 times as much ! Optimizing the software process to reduce costs, therefore obviously should focus on discovering possible errors early in the process. This concern is the basic philosophy of a number of life-cycle models. Design Integration Specification Maintenance Requirements Implementation Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Unit and Validation Testing A unit test is any that is specific to some component of your system (ie, not the whole system). Validation tests determine how well a component corresponds to its specification in the design. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

White-box tests A white-box test (or glass-box) uses knowledge of component’s implementation to test it. A tester needs to be very familiar with the language and technology. The tester reads the code, looking for mistakes or ways to break it (boundary conditions, errors, limits). White-box testing is time-consuming, and requires much skill. Thus it is often only done thoroughly on a per-component basis (ie, as a unit test), and only for critical components. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Black box tests Black-box testing isn’t concerned with the component’s implementation, but gauges whether it accepts the correct inputs and produces correct outputs. We can use equivalence partitioning to guide black-box/validation testing: Since we rarely have time to try all the possible inputs, group them, and test representatives from each group. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Black box testing (cont’d) Use Equivalence Partitioning to test the system group valid inputs together group invalid inputs together group questionable inputs together group outputs and identify erroneous groupings Focus on boundary values, and inputs which may be strange or unexpected For a search routine, search for the first and last items Search for the middle item Search for a non-existent item Search an empty database Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Not just getting all of it to compile! Integration Tests Not just getting all of it to compile! Use Black Box methods, and a limited number of white box methods to confirm that the sub-systems are interacting correctly Tests must be thorough. They must be designed to exercise all of the use cases and error conditions Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Integration and Interface tests Interface tests focus on the points of contact between two components. Interfaces include: Method invocations. Network or other stream-based communications. Shared memory, files and other system resources (and therefore, resource locking). Integration tests see whether components that work separately work together. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Path tests A path test identifies some number of paths through a system, usually from the user’s point of view. It’s attractive to try an all-paths test of the system, where each possible interaction with the system is tried at least once. However, we can show by a combinatorial argument that this takes far too long for a non-trivial program. Some useful alternatives: Identify critical paths, the most important, frequent and useful manipulations of the system. Identify invariants in the system state; then we show that each path returns us to the home state. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

System and Stress testing System tests test the entire assembled system as a unit. The system should be tested in a realistic environment, on it’s actual hardware, by real users as well as the developers. System testing is often done in two phases, “Alpha” and “Beta”. Beta release often go to many people outside the development team. A stress test is a type of system test, where the system’s performance limits are stretched (and broken, usually). Stress tests are interested in gathering performance statistics, and determining whether the system handles failure gracefully. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Regression Testing Regression testing tests a new version of software against a rigorously defined set of inputs and outputs, to ensure the new version has introduced no inconsistencies with old versions. Regression testing is one reason why we keep old tests around (and document them): the old tests, passed once, should be applied again with every significant change to the system. Vakgroep Informatietechnologie – Onderzoeksgroep IBCN

Acceptance tests An acceptance test is any where some person or people decide whether an aspect of the software is acceptable, or not. Use acceptance tests when you have something concrete to test: At the ends of development cycles. With prototypes. With “beta” versions of your system, or components. Acceptance tests return a boolean value: watch out for “that’s nice, but….” responses from your customer (ie, feature creep). Vakgroep Informatietechnologie – Onderzoeksgroep IBCN