CSC 395 - Chapters 8, 9 Flashcards
Describe the two goals of program testing.
Demonstrate to the developer and customer that the software meets its requirements (validation testing).
• For custom software, there should be at least one test for each requirement
• For generic software, there should be tests for all of the system features
Discover when the behavior is incorrect, undesirable or does not conform to specs
• When testing for defects, the goal is to try and eliminate system crashes, unwanted interactions with other systems, incorrect computations and data corruption
Describe the difference between verification and validation?
Verification – “are we building the product right?”
Validation – “are we building the right product?”
Verification and validation processes are concerned with checking that the software meets its specification and delivers the functionality expected.
Describe program inspections and why are they useful?
Inspections examine source code to discover anomalies and defects. They do not require execution of a system and can be done before completion. They are an effective technique for discovering program errors
Advantages:
• In execution testing, errors can mask other errors. Inspection is a static process so there will be no interactions between errors.
• Incomplete versions of a system can be inspected without additional costs
• Inspection can consider quality attributes of a program (such as compliance with standards, portability and maintainability)
Describe the three main stages of testing.
Development testing – testing the system during development to discover bugs and defects
Release testing – a separate testing team checks a complete version of the system before it’s released to users
User testing – users or potential users of a system test it in their own environment
Describe automated unit testing and its value.
Automated testing is running and checking unit tests without manual intervention. A test automation framework is used to write and run the program tests. Unit testing frameworks have generic test classes that are extended to create specific test cases. The system will run all of the tests and report on the results.
Value:
Test cases will show that the component does what it is supposed to do or will show the defects in the component.
Describe Partition and Guideline-based testing.
Partition Testing – identifying groups of inputs with common characteristics that should be processed in the same way. Tests should be chosen from within each of these groups.
Guideline-based testing – testing guidelines are used to choose test cases. Guidelines reflect previous experiences of the errors that programmers often make
Describe the difference between evolution and servicing/maintenance.
Evolution – Software is in use and is evolving and changing as new requirements are implemented
Servicing – Software is in use and the only changes made are those required to keep it operational (Bug fixes). No new functionality is added.
Describe the handover problems between agile and plan-based development (both directions).
Agile development but plan-based evolution – the evolution team expects detailed documentation but that is not produced in agile processes.
Plan-based development but agile evolution – the evolution team may have to start by developing automated tests. The system code may not have been refactored and simplified
Describe what a legacy system is.
A legacy system is an older system that relies on languages and technology that are no longer used in development. They may be dependent on older hardware. Typically, they have been maintained over a long period of time so their structure has degraded due to changes. They also may have associated legacy processes and procedures. Legacy system replacement is risky and expensive so businesses continue to use them. Legacy systems are also expensive to change. Legacy systems should be scrapped completely, maintained, re-engineered or replaced depending on the system quality and its business value.
Describe refactoring.
Making code improvements to slow down degradation; Preventative maintenance to reduce problems with future changes. Modifications are made to improve structure, reduce complexity and/or increase understanding. It is not added functionality.