Testing
What are some examples of testing policies
All system functions that are accessed through menus should be tested. Combinations of functions that are that are accessed through the same menu must be tested.
what is the TDD process
Start by identifying the increment of functionality that is required Write a test for that functionality and implement that as an automated test. Run the test, along with all other tests that have been implemented. Implement the functionality and re-run the test. Once all tests run successfully, you move on to implementing the next chunk of functionality.
Interface testing guidelines
Test pointer parameters with null pointers and etc.
What is component testing
Test that the component interface behaves according to its specification. Assume that the unit tests on the individual objects within the component is completed.
What is object class testing
Testing all operations associated with an object Setting and interrogating all object attributes. Exercising the object in all possible states.
validation vs defect
Validation is mostly about checking that the system does what it should do Defect is mostly about checking the system does not behave wrongly when being used wrong.
what is the difference between verification and validation
Verification is that the software is conforming to its specification Validation is that the software is what the user wants
What is interface testing
When you attempt to detect faults due to interface errors or invalid assumption about interfaces.
what is beta testing
Where a release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers.
What is defect testing
Where we attempt to expose defects. The test cases in defect testing are deliberately obscure and does need to reflect how the system is normally used. A successful test is a test that makes the system perform incorrectly.
What is validation testing
Where we test that the system performs correctly using a given set of test cases that reflect the system's expected use.
what is guideline based testing strategy
Where you use testing guidelines to choose test cases.
Does inheritance make it more difficult to design object class tests
Yes because the information to be tested is not localised.
is release testing a form of system testing
Yes it is but it is tested by a separate team that is not involved in the system development. Goal of system testing is to find defect Goal of release testing is check it meets requirements(validation testing)
What is test driven development
An approach to program development in which you inter-leave testing and code development Test are written before code and "passing" the tests is critical driver of development You don't work on the next part until you pass the first part of the test. Part of the agile methods such as extreme programming but it can also be used for plan driven development processes.
when do we start testing
Before the system is fully implemented because many potential problems from development are forgotten. Testing task can be overwhelming at this point. Since many aspects that needed to be tested arise at requirements and design stage, we can development tests then.
what is automated testing
By making use of a test automation framework to write and run your program tests. It should have a setup part where you initialize the system with the test case, namely the inputs and expected outputs. A call part, where you call the object or method to be tested. An assertion part where you compare the results of the call with the expected result
What are the benefits of test driven development
Code coverage: every code you write has at least one associated test so all code written has at least one test. Regression testing: a regression test suite is developed incrementally Simplified debugging: when a test fails, you will know that it's the new code that broke it. System documentation: tests can act as a form of documentation that describe what the code should be doing.
What are the 3 stages of software testing
Development testing: where the system is tested during development to discover bugs and defects. Release testing: where a separate testing team test a complete version of the system before it is released to users. User testing: where users or potential users of a system test the system in their own environment.
what are some advantages of inspections
During testing, errors can mask other errors but since inspection is a static process, you don't have to worry about the interactions between errors. Incomplete versions of a system can be inspected without additional costs. Helps with compliance with standards, portability and maintainability.
What is development testing
Includes testing activities that are carried out by the team developing the system. Unit testing: where individual program units are tested in isolation. Component testing: where these units are integrated to create composite components. Should focus on testing component interfaces. System testing: where some or all of the components in a system are integrated and the system is tested as whole. Should focus on component interactions.
What are the 4 types of testing
Program testing, release testing, user testing
What are some interface errors
Interface misuse: a calling component calls another component and makes an error in its use of its interface (parameters in the wrong order) Interface misunderstanding: a calling component embeds assumptions about the behaviour of the called component which are incorrect. Timing errors: the called and the calling component operate at different speeds and out of date information is accessed.
what is requirements based testing
Involves examining each requirement and develop a test or tests for it.
What is unit testing
It is a defect testing process. A unit could be individual functions, object classes or composite components with defined interfaces used to access their functionality.
what is alpha testing
It is a type of user testing where the user of the software work with the development team to test the software at the developer's site.
what is software inspections
It is concerned with analysis of the static system representation to discover problems (static verification) It involves people examining the source representation with the aim of discovering anomalies and defects. Does not require an execution of a system so it can be used before implementation. Can be applied to requirements,design, configuration data, test data, etc.
What is software testing
It is concerned with exercising and observing product behavior (dynamic verification). Observes operational behaviour
is it possible to do exhaustive system testing
It is impossible so testing policies are developed to to define the required system test coverage.
what is performance testing
It is part of the release testing. It involves planning a series of tests where the load is steadily increased until the system performance becomes unacceptable. Stress testing is a form of performance testing.
What is acceptance testing
It is when the customers test a system to determine whether it is ready to be deployed.
what is system testing
It is when you integrate components to create a version of the system and test the integrated system. Tests the interactions between components. Tests the emergent behaviour of a system.
What is regression testing
It is when you test the system to check that changes have not broken previously working code. This is easy with automated testing cause you just need to rerun all the tests.
can inspection check conformance with the customer's real requirements
No, it can only check conformance with a specification. It also can not check non-functional characteristics like performance, usability, and etc.
Can program testing reveal the absence of errors
No, it can only reveal the presence of errors.
inspections and testing are opposing verification techniques
No, they are complementary. Both should be used during the V&V process.
what are the two types of unit test cases
One where we test via normal cases One where we test via edge cases
What is program testing
Testing that is intended to show that a program does what it is intended to do and to discover program defects before it is put into use. Checks the results of the test run for errors, anomalies, or information about the program's non-functional attributes. Testing is part of a more general verification and validation process, which also includes static validation techniques.
What is the aim of V & V
The aim of V&V is to establish confidence that the system is fit for purpose. It depends on system's purpose, user expectations, and marketing environment. System purpose: The level of confidence depends on how critical the software is to an organization User Expectations: Users may have low expectations of certain kinds of software Marketing environment: Getting a product to market early may be more important than finding defects in the program.
how to choose unit test cases
The test cases should show the component that you are testing does what it is supposed to do. It should be able to reveal defects.
What is use-case testing
The use cases developed to identify system interactions can be used as a basis for system testing. Since use cases often involve several components so testing them will force the interactions to occur. The sequence diagrams associated with the use case documents the components and interactions that are being tested.
how does agile method related to acceptance testing
The user is part of the development team and is responsible for making decisions on the acceptability of the system. Tests are defined by the user/customer and are integrated with other tests in that they run automatically when changes are made.
What is user testing
This a stage in the testing process in which users or customers provide input and advice on system testing. User testing is essential because influences from the user's working environment have a major effect on reliability, performance, usability and robustness of a system. These can not be replicated in a testing environment.
What is release testing
This is the process of testing a particular release of a system that is intended for use outside of the development team. Goal: convince the supplier of the system that it is good enough for use. It needs to show that it delivers the specified functionality, performance, and dependability, and that it does not fail during normal use. It is usually a black box process. Tests are derived from the system specification
what is partition testing strategy
This is when you identify groups of inputs that have common characteristics and should be processed in the same way. Each data in each partition should behave the same way. Test cases are chosen from each partition.
What are the goals of programming testing
To demonstrate to the developer and the customer that the software meets its requirements. Custom software: there should be at least one test for every requirement in the requirements document Generic software: should be tests for all system features, plus combinations of these features. To discover situations in which the behavior of the software is incorrect, undesirable or does not conform to its specification