Software Development Life Cycle Flashcards
Define SDLC
A systematic process that structures the development of software to deliver a project.
What is the difference between Verification and validation?
Verification - testing the software to ensure it functions like intended from the developers designs.
Validation - validated the software based on client requirements.
Compare the waterfall and incremental schemes
Incremental over waterfall
-less costly when requirements are changed
-client feedback is continously incorporated
Waterfall over incremental
-Greater distinction between stages of development
-Known requirement means more robust code
-Little to no room for error (more likely to get it right the first time)
Testing comes into what part of the SDLC?
verification and validation
What does it mean to verify?
-ensuring the code produces the correct outputs from the inputs
-formatting code to make it readable and neat is helpful
What does it mean to validate?
-ensuring the code meets the clients requirements by functioning according to the criteria
-functionality
-performance
-usability
What are the three types of testing?
Component testing -
System testing - components integrated into a systems are tested
Customer testing - user testing in target environment which may reveal undetected bugs
Define unit testing and give an example
-A unit may be a class or function
-Call the function with test argument
-Compare result to expected result and report back
Define an edge case and give examples
unit test cases that are unexpected or rare
-Rare or old user platform
-Upper and lower limits of range
-heavy internet traffic
Give examples of corner cases
Multiple conditions in action
-Testing an unusual input (e.g. empty list)
What is useful in the edge testing code?
Using a docstring to explain what the programme should deliver
Define system testing
components integrated to create a complete system that are tested to find any faults by developers
-checking components and units are compatible
Define release testing
requirements based testing that focuses on performance, usage and scenario testing
In terms of debugging, why is testing important?
testing reveals bugs in the operation code.
-bugs are high risk as they can cause finincial loss or even loss of life
-it is cost effective to identify bugs in the early stages of testing/code development
How can we prevent bugs?
Code review and legibility
-Pair programming
-Defensive programming