Semaine 3 : Test Flashcards
What is testing?
Testing is the process of executing a program with intention of finding errors. Testing is static and dynamic analysis.
What is the definition of testing?
● Quality assurance activities performed by running code.
● All techniques that execute the software system and compare the observed behaviour with the expected behaviour.
● Testing is always dynamic quality assurance technique.
● Testers define test cases consisting of inputs and the expected outputs to systematically analyse all requirements.
What are software testing objectives?
● To identify and reveal as many errors as possible in the tested software.
● To bring the tested software, after correction of the identified errors and retesting, to an acceptable level of quality.
● To perform the required tests efficiently and effectively, within budgetary and scheduling limitations.
● To compile a record of software errors for use in error prevention (by corrective and preventive actions).
● Reduce the risk of failure
● Reduce the cost of testing
● Dijkstra: “Testing can only reveal the presence of errors, never their absence”
● Bug-free software is still a utopian aspiration!
What are testing activities?
● Identify an objective to be tested ○ A clear purpose must be associated with every test case ● Select inputs ● Compute the expected outcome ● Set up the execution environment of the program ● Execute the program ● Analyze the test result ○ pass, fail , and inconclusive
What is system integration testing?
● A software module, or component, is a self-contained element of a system.
● Modules have well-defined interfaces with other modules.
● Constructing a working system from the pieces is not a straightforward task, because of numerous interface errors.
● Integration testing is to assemble a reasonably stable system in a laboratory environment such that the integrated modules and components in the actual environment of the system.
● System integration testing is a systematic technique for assembling a software system while conducting tests to uncover errors associated with
interfacing.
What are the different types of system testes?
Basic, Functionnality, Robustness, Interoperability, Performance, Scalability, Stress, Load and Stability, Reliability, Regression, Documentation, Regulatory.
What are Reliability tests for?
Reliability tests are designed to measure the ability of the system to remain operational for long periods of time
What are Robustness tests for?
Robustness tests determine how well the system recovers from various input errors and other failure situations.
What are Interoperability tests?
Interoperability tests determine whether the system can interoperate with other third-party products.
What are performance tests?
Performance tests: measure the performance characteristics of the system, for example, throughput and response time, under various conditions.
What are Scalability tests?
Scalability tests: determine the scaling limits of the system in terms of user scaling, geographic scaling, and resource scaling.
What are Stress tests?
Stress tests: put a system under stress in order to determine the limitations of a system and, when it fails, to determine the manner in which the failure occurs.
What are load and stability tests?
Load and stability tests: provide evidence that the system remains stable for a long period of time under full load.
What are regression tests for?
They determine that the system remains stable as it cycles through the integration of other subsystems and through maintenance tasks.
What is Agile testing?
● Adapts to changes very fast
● Not plan-driven, but lives with the project
● Testing is done from the beginning of the project, not just in the end of it
● Emphasizes the team, humanity/human-centeredness and cooperation
● Tests iteratively piece by piece
● Customer is involved even in all testing phases
● Continuous integration
● Automation of testing at least in unit-testing
It is more important to find bugs than to write comprehensive documents.
How do we integrate testing into agile development?
● There’s not one single prescription
● Agile methodologies promote short release cycles
● Classic testing model does not work on continuous integration context
● A new approach to testing
● Testers have to reinvent themselves and their craft
● Iterate on planning
○ Keep pace with development
● Iterate on testing
○ Manage risk so that the most important features and actions are well-tested
● Iterate on quality
○ Measure your quality
○ Improve it in the next iteration
● Early involvement by testers
○ Testers need to work directly with product owners
○ Must understand the user needs
○ Get deep understanding of the user stories
● Focus testing on features that make a difference to users
○ No requirements to analyze
○ No time for comprehensive test plans
● Learn what the users need
○ Make sure those features work
● Ensure that testers take the lead
○ Take responsibility for application quality
○ Become an interface to the user community
○ Work with developers as equal partners
● Enable testers to work side-by-side with developers and customers
○ Testers need to know about tactical development decisions
○ This is especially important in Agile projects without formal requirements
● Ensure that testers take the lead on the building and execution of functional,
regression, and acceptance test cases
● Independence from development helps ensure objective evaluation
● Enable testers and developers to make coding decisions together
● Helps prioritize testing
● Guide development in decision-making
● Make automation an integral part of testing
○ Agility and automation work hand in hand
○ Accelerate testing to show agility
● Data collection and analysis essential
○ Feature backlog
○ Failure/Issue management
○ Technical Debt management
○ Logging
○ Metrics
○ Commit comments
○ Time trackers, …
What is the planning of Agile testing?
● Start with a light overall test planning
● Choose the proper tools
● Create a testing environment
● Prioritize things to be tested in each iteration (sprint)
● Create test cases for the first iteration on the agreed (light) accuracy level
● Outline tests for next iterations
● Automate testing
What agile testing is NOT?
● A separate phase at the end of software development project
● Unsystematic
● Documentation free
● Random
● Uncontrolled
● Straightforward operation without feedback
What is the approach crawl, walk, run?
● Rarely attempt to ship a large set of features at once
● Build the core of a product and release it the moment it is useful to as large a
crowd as feasible, and then get their feedback and iterate.
● Minimum useful product
● Channel sequence
○ Canary: only engineers (developer and testers) on the product
○ Dev: developers use for their day-to-day work.
○ Test Channel: best build of the month; internal dogfood users represents a candidate Beta
○ Beta Channel or Release Channel: survived internal usage; external exposure