Functional Testing Test cases derived from requirements specification document – Black box testing – Independent testers – Test both valid and invalid input and the success of the test is determined by the produced output Equivalence partitioning – Boundary values
Performance Testing Stress tests Volume tests Recovery tests Security tests Timing tests Environmental tests Quality tests Maintenance tests Documentation tests Human factors (usability) tests
Reliability, Availability, and Maintainability Software reliability: operating without failure under given condition for a given time interval Software availability: operating successfully according to specification at a given point in time Software maintainability: for a given condition of use, a maintenance activity can be carried out within stated time interval, procedures and resources
Measuring Reliability, Availability, and Maintainability Mean time to failure (MTTF) Mean time to repair (MTTR) Mean time between failures (MTBF) MTBF = MTTF + MTTR Reliability R = MTTF / (1+MTTF) Availability A = MTBF / (1+MTBF) Maintainability M = 1 / (1+MTTR)
Acceptance Tests Enable the customers and users to determine if the built system meets their needs and expectations – Written, conducted, and evaluated by the customers Types of Acceptance Tests – Pilot test: install on experimental basis – Alpha test: in-house test – Beta test: customer pilot – Parallel testing: new system operates in parallel with old system
Test Documentation Test plan: describes the team’s plan for unit testing, integration testing, and system testing – Guides the scheduling of programming Test specification: details each test, test data, and criteria for success for each feature Test report: results of each test
Test Documentation
Defect Tracking Form
Regression Testing Identifies new faults that may have been introduced as current ones are being corrected Verifies that a new version or release still performs the same functions in the same manner as an older version or release
Review Software engineering provides a large variety of methods and tools for use by software developers throughout the software life-cycle. What are some of them?
Review of S.E. Methods and Tools Project Management – Software LifecyclesScheduling tools and software (WBS, Gantt charts) – Risk managementEstimationQuality management Requirements Engineering – Client interviewsUse CasesUML diagrams – PrototypesFormal Specifications Architectural Design – ArchitecturesPatternsOO – Iterative development Implementation – IDEsAgile methodsVersion control – Forward engineering Testing – Unit testingRegression testingCleanroom testing Maintenance – Change controlReverse EngineeringRegression testing
Discussion Question In a given situation, how do developers decide which method or tool is the most appropriate to use? It depends … – Availability – Company Expectiations – Problem domain – Knowledge