Life Cycles and the V-model Flashcards
What is verification?
Verification is when you verify that your code fulfills the requirements that you have interpreted from the user’s needs or usability requirements.
It is more technical than validation.
What is validation?
Validation is when the customer validates that the system behaves as it should.
You could say it ensures compliance with intended usage.
So what is the difference between verification and validation?
That verification is something that ‘you’ do on your requirements that you based on the customer’s needs. and validation is when the customer confirms that the software fulfills their needs.
What is verification good for?
It helps us ensure that we are building the product the right way which was planned.
Explain the software development model called ‘waterfall’
It is a linear model meaning that each activity is completed before moving on to the next step.
All the testing is done in the end of all of the steps when the code has been fully developed.
Steps are
- Requirement specification
- Design
- Implementation
- Test
- Maintenance
What happens if the product fails the test in the waterfall model?
You will have to go all the way back to the point that caused the error and do the whole sequence again from there. Most usually you would have to start over and fix the errors in the requirement specification face.
What is the V-model?
The V-model is an extension of the waterfall model.
Its a process that assures quality throughout the steps in the development life cycle, where tests start immediately.
So in short it is the waterfall model extended with verification and validation at each step to minimize error. Planning for these verifications and validations.
What steps are there in the V-model and what are the quality assurance steps?
STEP -> DELIVERABLE -> GOAL -> QA
- Requirement gathering -> design Requirement specification -> capture user needs-> Acceptance testing requirements.
- System Design - > Functional specification -> definition of functions required to meet user needs -> System tests
- Software design -> Technical specification-> technical design of functions identified in the functional specification -> Integration testing
- Module design -> Program specification -> detailed design of each module or unit to be built to meet required functionality -> Unit testing planning planning
- Coding
Each process will create a specification document which will be the test basis.
What types of incremental / iterative models are there?
- Prototyping
- Unified Processes
- Agile software development
How does iterative software development models work?
- They do cyclical development (You go around the development cycle a number of times).
- The requirements do not need to be fully defined before coding can start, because of iterations.
- A working version of the product is built in a series of iterations.
- Each stage encompasses requirements definition, design, code and tests
- for each cycle a requirement is defined and a version of the code is produced, which will be tested bu the user representatives.
- At the end of each cycle a decision is made on what extra functionality needs to be created for the next iteration.
- This is repeated until the system is fully produced.
Why are there user representatives in incremental software development methods?
To minimize the risk of developing an unsatisfactory product. - A product that maybe works but does not do what the user needs it to do, if requirements and needs were miscommunicated.
There are four different levels at which you can test a system, what are they?
- Unit test
- integration test
- System test
- Acceptance test
What is integration testing?
a level of software testing where individual units are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units.
Is it possible to do integration testing and tests units that are dependent on other units that are not done? If so, how would you do?
Yes it is. You would create dummy code for those parts that are not done, also called test drivers and stubs.
What are some characteristics of good testing?
- There is an early test design
- V-model starts by specifying test docs
- Iterative models tests each release before moving on.
- Testers are involved in reviewing the requirements before they are released.
What is unit tests intended to do?
They are intended to ensure that written code meets its specification before integration testing is done.
They also verify that the code written for the unit can be executed.
Who usually performs the unit tests?
Traditionally the programmer who wrote the code as it can be done fast with fast feedback for fast corrections. But some companies have started to hire developers as testers who then also caretaker the unit testing working closely with the developers.
What is Integration testing?
Integration tests checks if the interaction between the units that have been coded works together. It checks if the interactions between the units are correct.
Which test bases are there for integration testing?
The test bases that you can create your integration tests from are
- Software and system design
- A diagram of the system architecture
- Workflows
- Use cases
What are the three integration testing approaches?
- Big bang: all units are linked at once (Bad)
- Top-down: Starts with the top components that call other components and then down
- Bottom-up integration: Starts with bottom components and then go up.
What is System testing?
And who performs it and why?
- System testing is when you consider the system from end-to-end perspective.
- Focusses on the behavior defined by the scope of the project
- The tests are done in a ‘production like environment’.
- It is carried out by a team that is independent of the development process. So a objective assessment of the system as a whole is made based on the specification and not based on the code, meaning the testing is not based on code, but requirements and specifications.
What is usually the test basis for System Testing?
- System requirement specifications
- Software requirement specifications
- Use cases
- Functional specifications
- Risk analysis reports
- System, user, and operation manuals
What are the requirements that system testing could test?
- Functions
- Security
- Installability
- maintainability (ability tro introduce behaviour)
- Performance
- Load handling (behavior at fast increasing load)
- Stress handling (Behavior at upper limits)
- Recovery (of files under failure)
- Usability (ease of use etc)
What is acceptance testing?
It is tests that are carried out by users or customers and are independent from the other tests.
Examples:
- User acceptance testing
- Operational acceptance (Procedure for disaster backup, training for end users, maintenance procedures, data load and migration tasks).
- Alpha & Beta testing
What is the test basis for acceptance testing?
- User requirements
- System requirements
- Use cases-Business processes
- Risk analysis reports
What is Maintenance testing?
Tests that ensures that no changes in the systems environment or dependencies has caused faults in the system.
What are the changes that a system can experience in its environment and surroundings that you should test for?
- If additional features are added.
- Retirement
- Planned upgrade
- Retesting and regression testing.