On Github nickaj / software-testing
Given by Nick Johnson / @nickajn.johnson@epcc.ed.ac.uk
The process of testing all parts of the software package to ensure a quality software product
A quality product is one that meets the end users expectations
What is bad software?
How do you know your program works?
Do you get the right result?
Do all the pieces work?
How can you demonstrate it is correct to others?
How do you know someone else’s code is correct? see if it compiles?
Test our code and prove it gives right answer
Make our lives easier by using automated testing frameworks and processes
Save us time by letting th computer do the hard work
Improve the quality of our software package by finding bugs
Let us know when we have finished
Highly publicised
Highly ineffective
Two modes: “Electron” and “X-ray”
High-speed measurement system for power analysis
The cost of smaller defects can still add up
How much time does it take to find and fix a bug?
What happens if you find 10 bugs per day?
When caught by customers, easily add on an extra hour for measurable costs, plus harm to reputation.
The earlier in the development process you find a defect, the less expensive it is to fix
Software testing includes the processes that:
Testing allows us to reduce the number of costly defects in our software
Testing should be done from the beginning
Testing should occur throughout the software development process
Tests can be applied to
Lets look at types of tests applied to production quality software
Once you have a set of tests, at a variety of levels, management of tests become that bit more important.
A test framework can help with this.
For unit testing, something like JUnit, CppUnit etc. can help
A good project structure can lead naturally to good organisation, but this is not common.
What happens when software is released?
Only make a change/fix if necessary
Never, never, never make a change without
Treat all changes/bug-fixes as mini-projects
Maintain integrity of a “release”
All help reduce “Defect Creep”
Good organisation improves quality
Third party testing is important
Metrics and bad tests can be misleading
Work in groups of 3-5 (your choice)
Grab the practicals code from www.learn.ed.ac.uk
OR https://datasync.ed.ac.uk/index.php/s/yU0aK9dG4LkBVZ7 (password: "testing")
For each code, you will have about 10-15 minutes to define a test plan.
Then someone has to read out their answer to the class!
This code is from a functional, released benchmark set and implements (naively) some BLAS operations.
Think about:
This code is from a functional, released network traffic tester.
Think about:
This code is descended from something now in the kernel.
It reads CPU internal registers for power measurements.
Think about: