Finals Flashcards
What are the types of software testing?
1 - Verification testing:
- Intended to show that system conforms to its specifications
- Tests whether the system verifies its functional and non-functional requirements
2- Validation testing:
- Testing whether the software does what the user requires
- Testing whether the software runs without incorrect behavior
What does the level of confidence in a system depend on?
- Software purpose:
Depends on how critical the software is to an organization - User expectations:
User may have low expectations or tolerate certain failures - Marketing environment:
Getting a product to market early may be more important than finding defects
What is software inspection?
- It is prior to testing
- It analyses the system documentation to find problems
- Also known as static verification
What are the advantages of software inspection?
- Useful in searching for program defects
- Inspections do not require executing the system
- Won’t be concerned with interactions between errors
What are difficulties in software inspection
- Manual effort
- Difficult to detect errors which appear due to component interactions
- Difficult to detect problems related to performance issues
- Required dedicated team
What are the 3 stages of testing?
1- Development testing (during development):
- Discover bugs
- Verifying functional requirements
2- Release testing (beta):
- separate testing team tests a complete version of the system before it is released to users
- Verifying functional and non-functional requirements
3- User testing (prod):
Users test the system on their own
What are the 3 different levels development testing?
- Unit testing:
Individual units or object classes are tested - Component testing:
Testing composite components made of individual units - System testing:
Testing the system as a whole
Explain unit testing
- Unit testing is the process of testing the individual program units in isolation
- Units designate individual program entities such as functions, object classes,…
- Focuses on testing the functionality of objects or methods
- It is a defect testing process
- Breaks down and assesses functional requirements at the unit level
What do test automation tools provide?
Generic test classes that can be extended to create specific test cases
What phases does test automation pass through?
1- Setup phase:
Where the system is initialized with test case
2- Call phase:
Object or method to be tested is called
3- Assertion phase:
The result of the call is compared with the expected result
What is a test case and what are the two types of test cases?
- Test procedure designed to show that the unit tested is working properly
1- Evaluating normal operation behavior of a program
2- Evaluating abnormal behavior of a program
What are unit testing strategies that can be considered?
- Partition testing:
Identify group of inputs that are similar and should be processed the same way - Guideline-based testing:
Certain testing guidelines are used. These reflect previous errors that programmers make
Explain partition testing
- Input data and output results are divided into different classes where all members of a class are related
- Each of these classes is an equivalence partition
- Test cases should be chosen from each partition
Testing values in partitions + testing values around boundaries + testing values outside of boundaries
Explain the guideline-based testing
- Choose inputs that force the system to generate all error messages
- Design inputs that cause input buffers to overflow
- Repeat the same input or series of inputs numerous times
- Force invalid outputs to be generated
- Force computations results to be too large or too small
Explain what is a component and what is component testing
- Software components are composite entities made of several interacting entities
- Testing composite components should focus on showing that the component interface meets required specification
- Assumes that unit tests on individual entities have been done
What is interface testing?
- Detects faults due to interface errors
What are the types of interface?
- Parameter interface:
Data passed from one method to another - Shared memory interface:
Block of memory shared between functions - Procedural interface:
Subsystem encapsulates a set of procedures to be called by other subsystems - Message passing interfaces:
Subsystems request services from other subsystems
What are types of interface errors?
- Interface misuse:
Two components calling each other causing an error - Interface misunderstanding:
Calling component assumes behavior of called component which is incorrect - Timing error:
Called and calling components operate at different speeds
What are interface testing guidelines?
- Use edge cases
- Always test pointer parameters with null pointers
- Design tests which cause component to fail
- In message system, use stress testing
- In shared memory systems, vary the order in which components are activated
Explain system testing
- Test interactions between components
- Checks that components are compatible, interact correctly, and transfer the right data
- Test the overall behavior of the system
- Components developed by team members or sub-teams may be integrated at this stage
What are the key considerations in developing testing policies for system testing when exhaustive testing is not possible?
- Since it’s not possible to test every aspect of a system, we develop testing policies that define which parts are most important to test.
Examples:
- All system functions that are accessed through menus
- Combinations of functions that are accessed through the same menu
- User input functions must be tested with correct and incorrect input
What is test-driven development
- It is an approach where we combine testing and code development
- Test cases are written before code and once the test is passed, the code is written
- Code is developed incrementally along with a test for each increment
What are pros of TDD
- Code coverage:
Every code has at least one test associated with it - Regression testing:
Developed incrementally as program is developed - Simplified debugging:
Problem is clear when test fails - System documentation:
Tests are a form of documentation
What are the cons of TDD?
- Programmer prefer programming to testing
- Some test can be difficult to write incrementally
- Difficult to judge completeness of a set of tests
- Requires extra work
What is regression testing?
- Testing the system to check that the new changes did not affect previous code
- Expensive when done manually, but when automated it is simple
- Tests must run successfully before the changes can be committed
What is release testing?
- The process of testing a particular release of a system that is intended to be used outside of the development team
- Form of system testing
- Primary goal is to convince supplier that the system is good enough for use
- Black-box testing where tests are only derived from system specification
What is the difference between system testing and release testing?
- A separate team that has not been involved in system development should be responsible for release testing
- System testing by the development team focuses on discovering bugs in the system
- The objective of release testing is validation and verification
What are the 3 types of tests that are associated with release testing?
1- Requirements testing:
- Tests to verify requirements are met
2- Scenario based testing:
- Testing the system in typical scenarios of use
- Scenarios could be narrative stories or visual diagrams
3- Performance testing:
- Tests performance and reliability
- Stress testing
What is user testing? What are the types of user testing?
- Where users test the system
Alpha testing:
Users test system at developer’s site
Beta testing:
A release of the software is available to certain users and raise problems with developers
Acceptance testing:
Customers test a system to decide whether or not it is ready to be accepted from
the system developers and deployed in the customer environment
What are project management activities?
- Project planning:
Assigning people to tasks - Reporting:
Report on progress of a project to customers and managers - Risk management:
Assess the risks that may affect a project - People management:
Choose people for their time and establish ways of working that lead to effective team performance - Proposal writing:
Writing a proposal to win a contract to carry out an item of work
What is risk management?
It is concerned with identifying risks and drawing up plans to minimize their effect on a project
What is a risk and what are the types or risks?
A risk is a probability that some adverse circumstance will occur
Types of risks are:
- Project risks:
Affect schedule or resources - Product risks:
Affect the quality/performance of the software being developed - Business risks:
Affect the organization developing/using software
What are some examples of project risks?
- Staff turnover
- Management Change
- Hardware unavailability
- Requirement specification delays
What are examples of product risks?
- Product requirements change
- Requirements specification ambiguity
- Size underestimate
- CASE tool underperformance
What are examples of business risks?
- Technology change
- Product competition
- New regulations
- Cash flow reduction
What is the risk management process?
- Risk identification:
Identify project, product, and business risk - Risk analysis:
Assess the likelihood and consequences of these risks - Risk planning:
Draw up plans to avoid or minimize the effects of risk - Risk monitoring:
Monitor the risks throughout the project
How can risk identification be performed and what are different types of risks?
It can be performed as a team activity or individually. It revises a checklist of common risks that may be used to identify the risks such as:
1- Technology risks:
- Database can’t process as many transactions per second as expected
- Reusable software components contain defects and cannot be reused as planned
2- People risks:
- Difficult to recruit staff with skills required
- Key staff are ill
3- Organizational risks:
- Organization is restructured so that different management supervises project
- Organizational financial problems force reductions in the project budget
4- Requirements risks:
- Changes to requirements that require major design rework are proposed
- Software tools cannot work together in an integrated way
5- Estimation risks:
- Time required to develop is underestimated
- The rate of the defect repair is underestimated
6- Tools:
- Code generated by software code generation tools is inefficient
- Software tools cannot work together in an integrated way
What is risk analysis:
- It assesses the probability and seriousness of each risk