180 likes | 560 Views
Software Testing and Quality Assurance: Introduction and Terminology. Reading: John McGregor and David A. Sykes, A Practical Guide to Testing Object-Oriented Software, Addison-Wesley, 2001, ISBN: 0-201-325640. Chapter 1. Outline. What software testing is — and Is not
E N D
Software Testing and Quality Assurance: Introduction and Terminology • Reading: • John McGregor and David A. Sykes, A Practical Guide to Testing Object-Oriented Software, Addison-Wesley, 2001, ISBN: 0-201-325640. • Chapter 1
Outline • What software testing is — and Is not • Software testing vs. debugging • Software testing vs. quality assurance. • Know the similarities and the differences between Object-Oriented software testing and traditional software testing.
What Software Testing is—and Is Not • Software testing is the process of finding evidences of defects in software systems. • Software testing ensures that a product meets requirements. • A successful test is one that discovers an as-yet-undiscovered error. • Software testing is not: • debugging. • Quality Assurance (QA).
Our Textbook Definitions • An error is a slip-up or inappropriate decision by a software developer that leads to the introduction of a defect. • A defect is a flaw in any aspect of the system that contributes, or may potentially contribute, to the occurrence of one or more failures: • It might take several defects to cause a particular failure. • A failure is an unacceptable behaviour exhibited by a system: • The frequency of failures measures the reliability.
Software Testing vs. Debugging • Software testing does not include the effort associated with tracking down bugs and fixing them (debugging or repair of bugs) • Testing is the process of finding failures • Debugging is the tracking down the source of the failure.
Software Testing vs. Quality Assurance • Software testing is not quality assurance (QA). • QA is responsible for developing test plans and setting standards that project members should follow in order to build a better software. • QA might monitor testing during development and keep statistics. Testing is necessary but is not enough for QA process. • QA addresses activities designed to prevent defects as well as to remove those defects. • Testing can contribute to improved quality by helping to identify problems early in the development process but no amount of testing will improve the quality of the software
Our Focus in This Course • On Object-Oriented (OO) and component-based software (CB). • You can apply many of the techniques on other programming paradigms • On describing what to test in OO development efforts. • On describing techniques for how to test OO software.
Expectations • Familiarity with testing procedural software. • Experience in developing software using OO and CB technologies.
Object-Oriented Software Testing • Object-oriented programming have features that are very different from the other programming paradigms. • Object-Oriented features • Inheritance • Polymorphism • Encapsulation • Interfaces • Reusability
Object-Oriented Software vs. Traditional Software Testing • Similarities in testing OO software and traditional software • Software meets requirements • Unit testing, integration testing, and regression testing • Differences in testing OO software and traditional software • OO analysis, design and implementation are different representations of the same problem model. It implies that testing can be done at each stage • OO software development concerns objectives like reusability and extensibility. In addition to conventional goals of testing, these objectives need to be tested.
Advantages of OO Testing • Analysis models map straight forward to design models which map to code. • Thus, we can start testing during analysis and refine the tests done in analysis to tests for design. • Tests of design can be refined to tests of implementation. • So, the testing process can be interwoven with the development process.
Advantages to Testing Analysis and Design Models • Test cases can be identified earlier in the process, even as requirements are being determined (to ensure that the specified requirement is testable). • Bugs can be detected early in the development process, saving time, money, and effort. • Test cases can be reviewed for correctness early in the project. • Note: Testing models are beneficial but testing code is still an important part of the process.
Testing Approach • Analyze a little • Design a little • Code a little • Test what you can.
Tests for OO Software • Model testing • Class testing, which replaces unit testing • Interaction testing, which replaces integration testing • System (and sub system) testing • Acceptance testing • Deployment/self testing • Regression testing
Testing Motto “Test Early, Test Often, Test Enough” • Test Early: Testing during analysis and design phases can help to uncover problems early in the development process and help to scope the size of the effort needed to perform testing by determining what needs to be tested. • Test often: When iterative incremental process is used, as iterations are completed on analysis, design, and implementation phases, the products should be tested. • Test enough: Test every aspect of the software.
Brickles Game Brick Pile Puck Paddle Play field
Summary of Key Points • Software testing is the process of discovering evidences of defects and failures in software systems. • Software testing is not quality assurance (QA). • Testing OO Software is different from testing procedural software. • Test early, test often, test enough • Software testers should have a very good understanding of the development process, product and the ability to anticipate likely faults and errors.