Software QualitiesSoftware Quality AssuranceCosts of Poor QualityQA TerminologyTerminologyMore terminologySlide 7Slide 8Slide 9Many different kinds of testingMore kinds of testingSlide 12Testing is hard workTesting is hard work (cont.)TestingTesting PrinciplesTesting Principles (cont.)TestabilityQuality is an on-going concernDebuggingSoftware ReviewsSoftware Reviews (cont.)Typical Review TeamSoftware Review GuidelinesTechnical Review Guidelines (cont.)Sample evaluation Guidelines: Code InspectionSample evaluation Guidelines: Code Inspection (cont.)SQA SummaryCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance1Software QualitiesMaintainerUserCustomerGood DocumentationReadable CodeGood DesignLow CostPortability Increased productivityReliabilityCorrectnessEfficiencyFunctionalityEase of useEase of learningCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance2Software Quality AssuranceUse of analysis to validate artifactsrequirements, designs, code, test plansTechnical reviewsDocument reviewsCompliance to standardsControl of changesCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance3Costs of Poor QualityIncreased time to find and fix problemsIncreased cost to distribute modificationsIncreased customer supportProduct liabilityFailure in the market placeCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance4QA TerminologyCorrectnessReliabilityTestingDebuggingFailureFaultErrorVerificationValidationV&VCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance5TerminologyCorrectness: artifact is consistent with its specificationSpecification could be wrong or incomplete Rarely is software known to be correctRarely is the specification correctReliability: probability that the software is correct Statistical measure based on past performancee.g., mean time to failureCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance6More terminologyTesting: entails executing the software on selected test casesEvaluate the results (oracle)Evaluate the performanceEvaluate the ease of useCommon Wisdom: Testing reveals bugs but does not guarantee the absence of bugsHow should you select test cases?How do you know when to stop testing?CSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance7More terminologyFailure: an erroneous resultincorrect outputs/response for given inputs/stimulifails to meet real-time constraintsError: incorrect conceptmay cause failures if not correctedFault: the cause of one or more failuresdiscovered after releaseCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance8More terminologyDebugging: the process of finding the cause of a “bug” and a way to fix itw/o introducing additional bugs!Verification: process of proving, using mathematical reasoning, that a program is “correct”is expensive and is not always possibleis not foolproofCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance9More terminologyValidation: process associated with showing that the software performs reasonably wellV & V: verification & validation?more typically equated with validationCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance10Many different kinds of testingUnit testing: test individual componentstest stubs simulate called componentstest harness simulates “outer” context and maintains stubsIntegration testing: combine components and test themfollows build planSystem testing: test whole systemCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance11More kinds of testingAcceptance testing: testing to determine if the product is acceptableRegression testing: retesting after the system has been modifieddetermine “old” test cases that must be re-executeddetermine what new test cases are requiredCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance12More kinds of testingBlack box / functional testing: testing based on specificationsWhite box / structural testing:testing based on looking at the artifactBoth black box and white box testing are neededCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance13Testing is hard workTypically 50% of software development effort goes into testingup to 85% for life-critical softwareHow to identify “good” test cases?high probability of finding a new errorObjective is to find errorstest case is “successful” if it finds a new errorCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance14Testing is hard work (cont.)Psychologically difficult for a programmer to test his/her own code thoroughlyExhaustive testing requires testing all combinations of input valuesSorting an array of size 10 containing integers in the range 1 . . 10 has 10! combinations (3,628,800 cases)CSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance15TestingCAN:Uncover errorsShow specifications are met for specific test casesBe an indication of overall reliabilityCANNOT:Prove that a program is error-freeCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance16Testing PrinciplesTests should be traceable to requirementsTests should be planned long before testing beginsExhaustive testing is not possible80% of all errors typically occur in 20% of the modules test cases should be chosen to maximize likelihood of finding an errorCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality Assurance17Testing Principles (cont.)Testing should be done by someone other than the developersDevelopers do original testingSQA does independent testingusually black box testingAutomated testing tools should be used Reduce testing costsReduce likelihood of human errorCSE470: Software Engineering: QCSE470: Software Engineering: Quality Assuranceuality
View Full Document