L8 – Software Testing
Monday, May 08, 2023 1:14 PM
• Verification and Evaluation will be discussed here
• The 4 critical steps of SE
○ Specification
○ Design
○ Evaluation
▪ Software Testing is a subset of Evaluation
• Inspection
• Review
○ Evolution
• Testing is a dynamic process
• For testing must have a fully working product and can only done when
built
• Testing can be done at different levels
○ Like compiling
○ Or by breaking system to parts
○ Or the overview
○ Or the integrated process of the overall life cycle
• Testing is done by checking whether it meets the requirements
• Validation checks if the user gets the product they requested and
whether the developer built the correct device
○ Checks if the customer accepts the product provides the
requirements it needs
• Verification checks internally are the developers followed the process
correctly
○ Like the correct steps in conducting the process
○ Checks if following the standards and quality
• Defects are the easiest things to identify
○ When fixing these defects the overall quality improves
• There can be inputs that causes errors in the system with invalid
outputs
• In testing, we give an input to the system and check if the system gives
an output.
○ Through the outputs we can detect the presence of defects
○ A bad programming sample will have the system closing down or
shutting down when receiving faulty inputs
• Inspections are static processes
○ Checks the documents and so
• We can interpret it and check if there are going to be errors rather than
running it like testing
• Reports will indicate the results of the testing
○ And will indicate why these errors in output caused
• We can make sure using if-else and check if the program has received
valid input for the program
• A unit is like use case of some inputs (a subset of all possible inputs)
• Unit testing is the start of the testing process
○ We check for each small components and a subset of inputs
possible
• Here we check for the functionality
• Even though the individual objects are tested correctly, we have to test
for all components together
• Here we test the interfaces between the multiple components
○ We test the emerging properties between the multiple objects
together
○ Also known as the non-functional requirements
○ We call them emerging since they only appear when combining
different objects and not for the individual object testing
• Testing Strategy is the different ways of entering input with common
features and process them in the same way
• Partition testing is a simple but intelligent way of handling the large
input spaces
○ We can reduce the inputs that have to use for the testing
• Most of the errors come at the boundaries due to loop checking and
indexing issues
• In equivalent classes the input space can be reduced
• We start with the smallest subset of components to integrate and
check
○ And then we add more to integrate and test
○ If we start with the largest one and then go to smallest one then it
will be redundant
• We don't go to the individual component level of testing and now we
check for the whole system
• The testing process is finished with user acceptance test
• The use cases are what relates to the functional requirements
• And what we check for the device's functionality
• Testing Policy gives the rule for limiting factor for stopping the testing
and checking if it is enough
• Developing the test cases we can generate using the customer input at
the start of the development
○ Something about giving the test cases we wish to see happening at
the start and then we develop to be able to answer it eventually in
the end
• The regression testing checks the changes we did and what
dependencies affected
○ And then we can reduce the number of test cases we need to do
without doing all of them
○ Like only the test cases necessary and not those redudant
• Made in the mid of releasing the product and then testing through it
• But some cases of tests may not be identified
• Performance testing is a form of overall system testing
• Universally some requirements are high priority and generally always
required – essential
○ Such as security, performance, usability etc.
There are different types of user testing
• Alpha testing is done together with developers and users to figure out
the testing
• Beta testing is done by the users alone without help of the developers
• It can be a rigorous process going through all the pages
• Once the version is signed off, then further changes that are needed to
make can be considered as "change requests"
• There are tool frameworks that can done for the testing