ebook img

Software Testing and Analysis: Process, Principles, and Techniques PDF

564 Pages·2008·4.017 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Software Testing and Analysis: Process, Principles, and Techniques

Software Testing and Analysis: Process, Principles, and Techniques Software Testing and Analysis: Process, Principles, and Techniques Mauro Pezze` Universita` di Milano Bicocca Michal Young University of Oregon PUBLISHER DanielSayre SENIORPRODUCTIONEDITOR LisaWojcik EDITORIALASSISTANT LindsayMurdock COVERDESIGNER MadelynLesure COVERPHOTO RickFischer/Masterfile WILEY200THANNIVERSARYLOGODESIGN RichardJ.Pacifico ThisbookwastypesetbytheauthorsusingpdfLATEXandprintedandbound byMalloyLithographing. ThecoverwasprintedbyPhoenixColorCorp. Thisbookisprintedonacidfreepaper. ∞ Copyright(cid:13)c 2008JohnWiley&Sons,Inc. Allrightsreserved. Nopartofthis publicationmaybereproduced,storedinaretrievalsystemortransmittedinanyformor byanymeans,electronic,mechanical,photocopying,recording,scanningorotherwise, exceptaspermittedunderSections107or108ofthe1976UnitedStatesCopyrightAct, withouteitherthepriorwrittenpermissionofthePublisher,orauthorizationthrough paymentoftheappropriateper-copyfeetotheCopyrightClearanceCenter,Inc. 222 RosewoodDrive,Danvers,MA01923,websitewww.copyright.com. Requeststothe PublisherforpermissionshouldbeaddressedtothePermissionsDepartment,JohnWiley &Sons,Inc.,111RiverStreet,Hoboken,NJ07030-5774,(201)748-6011,fax (201)748-6008,websitehttp://www.wiley.com/go/permissions. Toorderbooksorforcustomerserviceplease,call1-800-CALLWILEY(225-5945). ISBN-13978-0-471-45593-6 PrintedintheUnitedStatesofAmerica 10987564321 Contents ListofFigures xi ListofTables xv I FundamentalsofTestandAnalysis 1 1 SoftwareTestandAnalysisinaNutshell 3 1.1 EngineeringProcessesandVerification . . . . . . . . . . . . . . . . 3 1.2 BasicQuestions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 WhenDoVerificationandValidationStartandEnd? . . . . . . . . . 5 1.4 WhatTechniquesShouldBeApplied? . . . . . . . . . . . . . . . . . 7 1.5 HowCanWeAssesstheReadinessofaProduct? . . . . . . . . . . . 10 1.6 HowCanWeEnsuretheQualityofSuccessiveReleases?. . . . . . . 11 1.7 HowCantheDevelopmentProcessBeImproved? . . . . . . . . . . 11 2 AFrameworkforTestandAnalysis 15 2.1 ValidationandVerification . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 DegreesofFreedom . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3 VarietiesofSoftware . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3 BasicPrinciples 29 3.1 Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2 Redundancy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3 Restriction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.4 Partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.5 Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.6 Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4 TestandAnalysisActivitiesWithinaSoftwareProcess 39 4.1 TheQualityProcess . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.2 PlanningandMonitoring . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3 QualityGoals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4 DependabilityProperties . . . . . . . . . . . . . . . . . . . . . . . . 43 4.5 Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 v vi CONTENTS 4.6 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.7 ImprovingtheProcess . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.8 OrganizationalFactors . . . . . . . . . . . . . . . . . . . . . . . . . 50 II BasicTechniques 53 5 FiniteModels 55 5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.2 FiniteAbstractionsofBehavior . . . . . . . . . . . . . . . . . . . . 58 5.3 ControlFlowGraphs . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.4 CallGraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.5 FiniteStateMachines. . . . . . . . . . . . . . . . . . . . . . . . . . 65 6 DependenceandDataFlowModels 77 6.1 Definition-UsePairs . . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.2 DataFlowAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.3 ClassicAnalyses: LiveandAvail . . . . . . . . . . . . . . . . . . . 85 6.4 FromExecutiontoConservativeFlowAnalysis . . . . . . . . . . . . 91 6.5 DataFlowAnalysiswithArraysandPointers . . . . . . . . . . . . . 94 6.6 InterproceduralAnalysis . . . . . . . . . . . . . . . . . . . . . . . . 96 7 SymbolicExecutionandProofofProperties 101 7.1 SymbolicStateandInterpretation . . . . . . . . . . . . . . . . . . . 102 7.2 SummaryInformation . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.3 LoopsandAssertions . . . . . . . . . . . . . . . . . . . . . . . . . . 105 7.4 CompositionalReasoning . . . . . . . . . . . . . . . . . . . . . . . 108 7.5 ReasoningaboutDataStructuresandClasses . . . . . . . . . . . . . 109 8 FiniteStateVerification 113 8.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 8.2 StateSpaceExploration . . . . . . . . . . . . . . . . . . . . . . . . 116 8.3 TheStateSpaceExplosionProblem . . . . . . . . . . . . . . . . . . 126 8.4 TheModelCorrespondenceProblem . . . . . . . . . . . . . . . . . 129 8.5 GranularityofModeling . . . . . . . . . . . . . . . . . . . . . . . . 131 8.6 IntensionalModels . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 8.7 ModelRefinement . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 8.8 DataModelVerificationwithRelationalAlgebra . . . . . . . . . . . 140 III ProblemsandMethods 149 9 TestCaseSelectionandAdequacy 151 9.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 9.2 TestSpecificationsandCases . . . . . . . . . . . . . . . . . . . . . 152 9.3 AdequacyCriteria . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 9.4 ComparingCriteria . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 CONTENTS vii 10 FunctionalTesting 161 10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 10.2 RandomversusPartitionTestingStrategies . . . . . . . . . . . . . . 162 10.3 ASystematicApproach . . . . . . . . . . . . . . . . . . . . . . . . 167 10.4 ChoosingaSuitableApproach . . . . . . . . . . . . . . . . . . . . . 174 11 CombinatorialTesting 179 11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 11.2 Category-PartitionTesting . . . . . . . . . . . . . . . . . . . . . . . 180 11.3 PairwiseCombinationTesting . . . . . . . . . . . . . . . . . . . . . 188 11.4 Catalog-BasedTesting . . . . . . . . . . . . . . . . . . . . . . . . . 194 12 StructuralTesting 211 12.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 12.2 StatementTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 12.3 BranchTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 12.4 ConditionTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 12.5 PathTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 12.6 ProcedureCallTesting . . . . . . . . . . . . . . . . . . . . . . . . . 229 12.7 ComparingStructuralTestingCriteria . . . . . . . . . . . . . . . . . 230 12.8 TheInfeasibilityProblem . . . . . . . . . . . . . . . . . . . . . . . 230 13 DataFlowTesting 235 13.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 13.2 Definition-UseAssociations . . . . . . . . . . . . . . . . . . . . . . 236 13.3 DataFlowTestingCriteria . . . . . . . . . . . . . . . . . . . . . . . 239 13.4 DataFlowCoveragewithComplexStructures. . . . . . . . . . . . . 241 13.5 TheInfeasibilityProblem . . . . . . . . . . . . . . . . . . . . . . . 243 14 Model-BasedTesting 245 14.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 14.2 DerivingTestCasesfromFiniteStateMachines . . . . . . . . . . . . 246 14.3 TestingDecisionStructures . . . . . . . . . . . . . . . . . . . . . . 251 14.4 DerivingTestCasesfromControlandDataFlowGraphs . . . . . . . 257 14.5 DerivingTestCasesfromGrammars . . . . . . . . . . . . . . . . . . 257 15 TestingObject-OrientedSoftware 271 15.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 15.2 IssuesinTestingObject-OrientedSoftware . . . . . . . . . . . . . . 272 15.3 AnOrthogonalApproachtoTest . . . . . . . . . . . . . . . . . . . . 280 15.4 IntraclassTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 15.5 TestingwithStateMachineModels . . . . . . . . . . . . . . . . . . 282 15.6 InterclassTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 15.7 StructuralTestingofClasses . . . . . . . . . . . . . . . . . . . . . . 293 15.8 OraclesforClasses . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 15.9 PolymorphismandDynamicBinding . . . . . . . . . . . . . . . . . 301 viii CONTENTS 15.10Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 15.11Genericity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 15.12Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 16 Fault-BasedTesting 313 16.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 16.2 AssumptionsinFault-BasedTesting . . . . . . . . . . . . . . . . . . 314 16.3 MutationAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 16.4 Fault-BasedAdequacyCriteria . . . . . . . . . . . . . . . . . . . . . 319 16.5 VariationsonMutationAnalysis . . . . . . . . . . . . . . . . . . . . 321 17 TestExecution 327 17.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 17.2 FromTestCaseSpecificationstoTestCases . . . . . . . . . . . . . . 328 17.3 Scaffolding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 17.4 GenericversusSpecificScaffolding . . . . . . . . . . . . . . . . . . 330 17.5 TestOracles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 17.6 Self-ChecksasOracles . . . . . . . . . . . . . . . . . . . . . . . . . 334 17.7 CaptureandReplay . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 18 Inspection 341 18.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 18.2 TheInspectionTeam . . . . . . . . . . . . . . . . . . . . . . . . . . 343 18.3 TheInspectionProcess . . . . . . . . . . . . . . . . . . . . . . . . . 344 18.4 Checklists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 18.5 PairProgramming . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 19 ProgramAnalysis 355 19.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 19.2 SymbolicExecutioninProgramAnalysis . . . . . . . . . . . . . . . 356 19.3 SymbolicTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 19.4 SummarizingExecutionPaths . . . . . . . . . . . . . . . . . . . . . 359 19.5 MemoryAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 19.6 LocksetAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 19.7 ExtractingBehaviorModelsfromExecution . . . . . . . . . . . . . 365 IV Process 373 20 PlanningandMonitoringtheProcess 375 20.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 20.2 QualityandProcess. . . . . . . . . . . . . . . . . . . . . . . . . . . 376 20.3 TestandAnalysisStrategies . . . . . . . . . . . . . . . . . . . . . . 377 20.4 TestandAnalysisPlans . . . . . . . . . . . . . . . . . . . . . . . . 382 20.5 RiskPlanning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 20.6 MonitoringtheProcess . . . . . . . . . . . . . . . . . . . . . . . . . 389 CONTENTS ix 20.7 ImprovingtheProcess . . . . . . . . . . . . . . . . . . . . . . . . . 394 20.8 TheQualityTeam . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 21 IntegrationandComponent-basedSoftwareTesting 405 21.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 21.2 IntegrationTestingStrategies. . . . . . . . . . . . . . . . . . . . . . 408 21.3 TestingComponentsandAssemblies . . . . . . . . . . . . . . . . . 413 22 System,Acceptance,andRegressionTesting 417 22.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 22.2 SystemTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 22.3 AcceptanceTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 22.4 Usability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 22.5 RegressionTesting . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 22.6 RegressionTestSelectionTechniques . . . . . . . . . . . . . . . . . 428 22.7 TestCasePrioritizationandSelectiveExecution. . . . . . . . . . . . 434 23 AutomatingAnalysisandTest 439 23.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 23.2 AutomationandPlanning . . . . . . . . . . . . . . . . . . . . . . . 441 23.3 ProcessManagement . . . . . . . . . . . . . . . . . . . . . . . . . . 441 23.4 StaticMetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 23.5 TestCaseGenerationandExecution . . . . . . . . . . . . . . . . . . 445 23.6 StaticAnalysisandProof . . . . . . . . . . . . . . . . . . . . . . . . 445 23.7 CognitiveAids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 23.8 VersionControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 23.9 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 23.10ChoosingandIntegratingTools . . . . . . . . . . . . . . . . . . . . 451 24 DocumentingAnalysisandTest 455 24.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 24.2 OrganizingDocuments . . . . . . . . . . . . . . . . . . . . . . . . . 456 24.3 TestStrategyDocument . . . . . . . . . . . . . . . . . . . . . . . . 458 24.4 AnalysisandTestPlan . . . . . . . . . . . . . . . . . . . . . . . . . 458 24.5 TestDesignSpecificationDocuments . . . . . . . . . . . . . . . . . 460 24.6 TestandAnalysisReports . . . . . . . . . . . . . . . . . . . . . . . 462 Bibliography 467 Index 479 x CONTENTS

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.