final exam material Flashcards
what is testing intended to do
it is intended to demonstrate to the developer and the customer that the software meets its requirements
what are the two types of software testing
verification testing : are we building the product right?
- intended to show that the system conforms to its specification
- tests whether the system verifies tits functional and non-functional requirements
validation testing: did we build the right product?
- testing whether the software does what the user requires
- testing whether the software runs without incorrect or undesirable behavior (defect testing)
what does the confidence required in a system depend on?(3)
software purpose: the level of confidence depends on how critical the software is to an organisation
user expectations: users may have low expectations of certain kinds of software or they can tolerate certain software failure rates
marketing environment: getting a product to market early may be more important than finding defects in the program
what is software inspection
analyzing the system documentation: requirements, architecture, design models and test cases to discover problems
what is software testing and what is another word for it
running and observing product behavior. also known as dynamic verification
what are the 3 advantages of software inspection
- inspections may be applied to any representation of the system
- incomplete versions of a system can be inspected without additional costs
- during testing, errors can mask other errors. but because inspection is a static process, we don’t have to be concerned with interactions between errors
what are the 4 difficulties of software inspection
- software inspection involves people examining the source representation with the aim of discovering anomalies and defects which is difficult to automate
- difficult to detect errors which could appear due to component interactions
- difficult to detect problems related to performance issues
- requires a dedicated team which is not always available
what are the three major stages of testing
- development testing: system is tested during development
- release testing: separate testing team tests a complete version of the system before it is released
- user testing: users test the system in their own environment
what is a test case?
testing procedure to describe the input, expected output and the test process
what are the three types of development testing
- unit testing: individual program units or object classes are tested
- component testing: testing composite components made of individual units
- system testing: testing the system as a whole
what is unit testing and what does it target? what is the most difficult to test
the process of testing individual program units in isolation
units designate individual program entities such as:
- individual functions or methods within an object
- object classes with several attributes and methods
- composite components with defined interfaces used to access their functionality
class relations make it more difficult to design object class tests as the information to be tested is not localized
what are TAT
test automation tools provide generic test classes that can be extended to create specific test cases
what are the 3 main phases of test automation
- setup phase: where the system is initialized with the test case
- call phase: where object or method to be tested is called
- assertion phase: where the result is compared with the expected result
what are the two types of unit test cases
- evaluating the normal operation behavior of a program
- evaluating the abnormal behavior of a program
what are the two strategies to be used in unit testing
- partition testing: where we identify groups of input that have common characteristics and should be processed in the same way
- guideline-based testing: where certain testing guidelines are used
what are some examples of guideline based testing
- choose inputs that force the system to generate all error messages
- design inputs that cause input buffers to overflow
describe the component testing
- software components are composite entities made of several interacting entities which could be individual or composite components
- the functionality of the constituent entities of a component are accessed through the defined component interface
- testing composite components should therefore focus on showing that the component interface behaves according to its specification
what is interface testing in component testing and what are its 4 types
detecting faults due to interface errors or invalid assumptions about interfaces
interface types:
- parameter interfaces: data passed from one method to another
- shared memory interfaces: block of memory is shared between procedures
- procedural interfaces: sub-system encapsulates a set of procedures to be called by other subsystems
- message passing interfaces: sub-systems request services from other sub-systems
what are interface errors
- interface misuse: a calling component calls another component and makes an error in tis use of its interface
- interface misunderstanding: a calling component embeds assumptions about the behavior of the called component which are incorrect
- timing errors: the called and calling component operate at different speeds and out of date information is accessed
what are the interface testing guidelines (5)
- user parameters when calling components at the extreme ends of their ranges
- always test pointer parameters with null pointers
- design tests which case the component to fail
- use stress testing in message passing systems
- in shared memory systems, vary the order in which components are activated
what is system testing and what does it focus on?
- system testing involves integrating components to create a version of the system and then testing the integrated system
- focuses on the interactions between components
- Reusable components that have been separately developed and off the shelf systems may be integrated with the newly developed components
- components developed by different team members may be integrated at this stage
what are the testing policies in system testing
- exhaustive system testing is impossible so testing policies which define the required system test coverage is developed.
examples:
- all system functions that are accessed through menus should be tested
- combinations of functions that are accessed through the same menu must be tested
- where user input is provided, all functions must be tested with correct and incorrect values
what is TDD
Test driven development is an approach to program development in which you interleave testing and code development. commonly used with agile development
- test cases are written before code and passing the tests is the critical driver for development
what are the 4 pros and 4 cons of TDD
pros:
- code coverage: every code segment that is written has at least one associated test so all code written has at least one test
- regression testing: a regression test suite is developed incrementally as a program is developed
- simplified debugging: when a test fails, it should be obvious where the problem lies such that only newly written code needs to be checked
- system documentation: the tests themselves are a form of documentation that describe what the code should be doing
Cons:
- programmers prefer programming to testing
- some tests can be very difficult to write incrementally
- it is difficult to judge the completeness of a set of tests
- maintaining simplicity requires extra work
what is regression testing
- testing the system to check that new changes have not damaged previously working code
- in a manual testing process, regression testing is expensive but, with automated testing, it is simple and straightforward
- tests must run successfully before the changes can be committed
what is release testing and what is its primary goal
- testing a particular release of a system that is intended for use outside of the development team
- primary goal is to convince the supplier of the system that it is good enough for use
- release testing is usually a black-box testing process
what is the difference between release testing and system testing (2)
release testing is a form of system testing
main differences:
- a separate team that has not been involved in the system development should be responsible for the release testing
- system testing by development team mainly focuses on discovering bugs in the system (defect testing)
- release testing is to check the system meets its requirements and is good enough for external use