Lecture 2 Flashcards
What is testing?
It is a method to check whether the actual software product matches expected requirements and to ensure that software product is defect free
What does software testing consist of?
The dynamic verification of the behaviour of a program on a finite set of test cases selected from infinite executions domain against expected behaviour of the program.
What does dynamic mean in terms of software testing?
Testing implies executing the program on valued inputs
What does finite mean in terms of software testing?
It isn’t possible to test every single test case and instead a subset of test cases is chosen
What does selected mean in terms of software testing?
Identifying the most suitable selection criterion for a given set of conditions
What is expected in terms of software testing?
The observed behaviour is checked against user expectations
Why is software testing important?
If there are any bugs in the software it can be identified early and solved before delivery of the software product.
Properly tested software products ensures reliability, security and high performance which results in time saving, cost effectiveness and customer satisfaction
What are the benefits of software testing?
Cost Effectiveness
Security
Product quality
Customer satisfaction
When is it enough testing?
When a test set has every individual branching condition, every potential termination condition, every variable mentioned in a decision is placed correctly into classes and every condition relevant to the correct operation of the program
What is test effectiveness?
It is a measure of how well a software testing process is able to identify defects or bugs in a system. It is a metric to evaluate the quality and efficiency of a testing process.
How can test effectiveness be measured?
By comparing the number of defects found during testing to the total number of defects present in the system
What factors can affect test effectiveness?
The size and complexity of the system
The skill and experience of the testers
The testing methods and tools used
How can you increase test effectiveness?
By using various testing techniques such as black box, white box and gray bos
What is the equation for test effectiveness?
(Number of defects found during testing / Total number of defects in the system) * 100
What is test efficiency?
It is a measure of how efficiently a software testing process is able to identify defects or bugs in a system. It is a metric used to evaluate the performance of a testing process.
How can test efficiency be measured?
By comparing resources used during testing (time and money) to the number of defects found
What is the equation for test efficiency?
(Number of defects found during/ Resources used during) * 100
What factors affect test efficiency?
Efficient project management
Expert test professional
Project training
Technologies and Test automation
What is efficient project management?
Project should have enough resources as well as expertise level to ensure a smooth transition between the various phases.
What is expert test professional?
Testers who are experts not only at a technical level but should have project domain knowledge and ability to think rationally on unforeseen test scenarios.
What is project training?
Regular project related training so that testers may sharpen their skills
What is technologies and test automation?
Leveraging the use of the latest testing tools and technologies to automate the testing which will save the human effort
What is software testability?
The degree to which a software system or component can be tested. The ease in which tests can be designed, implemented, and executed in order to validate the software behaves as expected.
What is a testable software system?
One that can be tested using a set of automated or manual tests to ensure that it meets the requirements and functions correctly
What are factors that affect testability?
Design of code
Use of appropriate interfaces and abstractions
The availability of test data and test environments
What does improving testability do?
Leads to better quality software, faster development cycles and lower costs
How do you measure software’s testability?
Controllability - testers should be able to control each module of software independently
Observability - this is the observation of states and factors that affect the output
Availability - the availability of objects to carry out testing. access to source code
Simplicity - varies depending on how the software is structured
Stability - less changes = better testing
What are the four levels of software testing?
Unit testing
Integration testing
System testing
Acceptance testing
Describe unit testing
It is the first level of testing. It is the process of testing small components of software. It is performed using white box testing and it allows for each small component of software to be tested separately. It is performed by programmers and aims to test each component functions well
What are the advantages of unit testing?
It is easy to debug the software. If some error occurs only the latest changes that were made need to be tested.
It saves time as well as cost. The cost of solving defects is less compare to other testing types.
Development is faster because it requires fewer efforts to find and fix bugs compared to other testing types
What are the steps involved in unit testing?
Unit test plan
Unit test cases
Unit testing
Describe integration testing
It is the second level of software testing, each component is combined and tested as a whole. The goal behind this is to ensure that the product is working properly when the units are combined, hence it identifies errors between interacted components.
It uses black box, white box and grey box testing
What approaches can be used in integration testing?
Big bang approach - all units are combined together as a whole and tested in one go
Top down approach - units at the top level are tested first, and then units at the low levels are tested one by one
Bottom up approach - units at the lower levels are tested first, and then units at a high level are tested one by one
Sandwich approach - a combination of top down and bottom up approach
Describe system testing
The third level of software testing, it aims to test the whole system in a different environment and ensures that they meet the specified requirements.
It uses black box testing and is carried out by testers who are independent of the development team. The main aim is to test the functionality of the system against its specified requirements
What steps are included in system testing?
System test plan
System test cases
System testing
Describe acceptance testing
The last level of software testing. The product is tested to check the acceptability, it checks the compatibility of the system against the specified requirements. It also checks whether it is ready for delivery or not. Black box testing is used
Describe the types of acceptance testing
Alpha testing is performed by the people who are members of the organization and not involved in the development team. Aka internal acceptance testing
Beta testing is performed by users who are going to use it in the future. Aka external acceptance testing