Buch, Englisch, 494 Seiten, Format (B × H): 182 mm x 261 mm, Gewicht: 1023 g
A Craftsman's Approach, Fourth Edition
Buch, Englisch, 494 Seiten, Format (B × H): 182 mm x 261 mm, Gewicht: 1023 g
ISBN: 978-1-4665-6068-0
Verlag: Taylor & Francis Ltd
This updated and reorganized fourth edition of Software Testing: A Craftsman's Approach applies the strong mathematics content of previous editions to a coherent treatment of Model-Based Testing for both code-based (structural) and specification-based (functional) testing. These techniques are extended from the usual unit testing discussions to full coverage of less understood levels integration and system testing.
The Fourth Edition:
Emphasizes technical inspections and is supplemented by an appendix with a full package of documents required for a sample Use Case technical inspection
Introduces an innovative approach that merges the Event-Driven Petri Nets from the earlier editions with the "Swim Lane" concept from the Unified Modeling Language (UML) that permits model-based testing for four levels of interaction among constituents in a System of Systems
Introduces model-based development and provides an explanation of how to conduct testing within model-based development environments
Presents a new section on methods for testing software in an Agile programming environment
Explores test-driven development, reexamines all-pairs testing, and explains the four contexts of software testing
Thoroughly revised and updated, Software Testing: A Craftsman’s Approach, Fourth Edition is sure to become a standard reference for those who need to stay up to date with evolving technologies in software testing. Carrying on the tradition of previous editions, it will continue to serve as a valuable reference for software testers, developers, and engineers.
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
Section I: A MATHEMATICAL CONTEXTA Perspective on TestingBasic DefinitionsTest CasesInsights from a Venn DiagramIdentifying Test CasesFault TaxonomiesLevels of TestingExamplesGeneralized PseudocodeThe Triangle ProblemThe NextDate FunctionThe Commission ProblemThe SATM SystemThe Currency ConverterSaturn Windshield Wiper ControllerGarage Door OpenerDiscrete Math for TestersSet TheoryFunctionsRelationsPropositional LogicProbability TheoryGraph Theory for TestersGraphsDirected GraphsGraphs for TestingSection II: UNIT TESTINGBoundary Value TestingNormal Boundary Value TestingRobust Boundary Value TestingWorst-Case Boundary Value TestingSpecial Value TestingExamplesRandom TestingGuidelines for Boundary Value TestingEquivalence Class TestingEquivalence ClassesTraditional Equivalence Class TestingImproved Equivalence Class TestingEquivalence Class Test Cases for the Triangle ProblemEquivalence Class Test Cases for the NextDate FunctionEquivalence Class Test Cases for the Commission ProblemEdge TestingGuidelines and ObservationsDecision Table–Based TestingDecision TablesDecision Table TechniquesTest Cases for the Triangle ProblemTest Cases for the NextDate FunctionTest Cases for the Commission ProblemCause-and-Effect GraphingGuidelines and ObservationsPath TestingProgram GraphsDD-PathsTest Coverage MetricsBasis Path TestingGuidelines and ObservationsData Flow TestingDefine/Use TestingSlice-Based TestingProgram Slicing ToolsRetrospective on Unit TestingThe Test Method PendulumTraversing the PendulumEvaluating Test MethodsInsurance Premium Case StudyGuidelinesSection III: BEYOND UNIT TESTINGLife Cycle–Based TestingTraditional Waterfall TestingTesting in Iterative Life CyclesAgile TestingAgile Model–Driven DevelopmentModel-Based TestingTesting Based on ModelsAppropriate ModelsCommercial Tool Support for Model-Based TestingIntegration TestingDecomposition-Based IntegrationCall Graph–Based IntegrationPath-Based IntegrationExample: integrationNextDateConclusions and RecommendationsSystem TestingThreadsBasis Concepts for Requirements SpecificationModel-Based ThreadsUse Case–Based ThreadsLong versus Short Use CasesHow Many Use Cases?Coverage Metrics for System TestingSupplemental Approaches to System TestingNonfunctional System TestingAtomic System Function Testing ExampleObject-Oriented TestingIssues in Testing Object-Oriented SoftwareExample: ooNextDateObject-Oriented Unit TestingObject-Oriented Integration TestingObject-Oriented System TestingSoftware ComplexityUnit-Level ComplexityIntegration-Level ComplexitySoftware Complexity ExampleObject-Oriented ComplexitySystem-Level ComplexityModel-Based Testing for Systems of SystemsCharacteristics of Systems of SystemsSample Systems of SystemsSoftware Engineering for Systems of SystemsCommunication Primitives for Systems of SystemsEffect of Systems of Systems Levels on PromptsExploratory TestingExploratory Testing ExploredExploring a Familiar ExampleObservations and ConclusionsTest-Driven DevelopmentTest-Then-Code CyclesAutomated Test Execution (Testing Frameworks)Java and JUnit ExampleRemaining QuestionsPros, Cons, and Open Questions of TDDRetrospective on MDD versus TDDA Closer Look at All Pairs TestingThe All Pairs TechniqueA Closer Look at the NIST StudyAppropriate Applications for All Pairs TestingRecommendations for All Pairs TestingEvaluating Test CasesMutation TestingFuzzingFishing Creel Counts and Fault InsertionSoftware Technical ReviewsEconomics of Software ReviewsRoles in a ReviewTypes of ReviewsContents of an Inspection PacketAn Industrial-Strength Inspection ProcessEffective Review CultureInspection Case StudyEpilogue: Software Testing ExcellenceCraftsmanshipBest Practices of Software TestingMy Top 10 Best Practices for Software Testing ExcellenceMapping Best Practices to Diverse ProjectsReferencesAppendix: Complete Technical Inspection Packet