In this short series, I outline the notes that I took while preparing for this foundation exam chapter one – The Fundamentals of Testing. While the content may not have changed drastically in the time that I took the exam, there may have been small changes or additions that my notes don’t cover. So I would advise you that if you do use my notes to help you revise for the Foundation exam, that you use them as a supplement to the most recent edition of the book (this is an affiliate link) and go over your knowledge with practice exam papers.
Effect Of An Error
Figure 1 – Effect Of An Error (references 1)
Software failures can lead to:
- Loss of money
- Loss of time
- Loss of business reputation
Figure 2 – Resources Triangle (references 1)
Testing A systematic exploration of a component or system with the main aim of finding and reporting defects.
Debugging The process that developers go through to identify the cause of bugs or defects in code and undertake corrections.
Static Testing Testing where the code is not exercised.
Dynamic Testing Exercises the program under test with some test data.
Other Elements of Testing Test execution and effective testing.
Exhaustive Testing A test approach in which all possible data combinations are used. This includes implicit data combinations present in the state of the software/data or the start of testing.
Defect Clustering can occur for a variety of reasons:
- System complexity
- Volatile code
- The effects of change upon change
- Development staff experience
- Development staff inexperience
Zero Defects does not mean the software is at the correct level of quality. It may not be up to the users’ expectations.
Fundamentals Test Process
Figure 2 – Fundamentals Test Process (references 2)
Test Planning and Control
Planning is determining what is going to be tested.
Control what we do when the activities do not match up with the plans.
Ongoing activity where we compare the progress against the plan.
Test Analysis and Design
This is concerned with the fine details of what to test and how to combine test conditions into test cases.
The test data needed to be considered will be drawn up in the design phase.
Test Implementation and Execution
Involves running tests. Including checking the test environment before testing begins.
A comparison is made between expected and actual results within this stage. If there are differences between the results this needs to be investigated and, if necessary, a test incident should be raised.
Regression Testing When testing is carried out to makes sure that problems that have been fixed have not broken the software elsewhere.
Retesting Testing to make sure that the problem is fixed.
Visible test activities in this stage are:
- Developing and prioritising test cases and automated test scripts
- Collecting test cases into test suites
- Checking the test environment is set-up correctly
- Running test cases in the determined order
- Logging test activities including the outcomes
- Reporting discrepancies as incidents (writing bugs)
- Repeating test activities when changes have been made (regression and retesting)
Evaluation Exit Criteria and Reporting
- Checking whether the previously determined exit criteria have been met.
- Determining if more test are needed or if the specified exit criteria need amending.
- Writing up the result of the testing activities.
Test Closure Activities
Activities concentrate on making sure that everything is tided away, reporting written, defects closed or deferred for another phase.
Composed of the following:
- Ensuring documentation is in order; what has been delivered is defined, closing incidents and raising changes for future deliveries, documenting that the system has been accepted.
- Closing down and archiving the test environment, test infrastructure and test ware used
- Passing test ware to maintenance team
- Writing down lessons learned for the future, and incorporating lessons to improve the testing process.
The Psychology of Testing
Test Independence is when the software is tested by someone who was not involved in the creation of the software.
- Members of a different company (a testing consultancy/outsourced)
- Members of a different group (independent test team)
- Members of the same development team
- Those who wrote the code
Testers need to use tact and diplomacy when raising defect reports. Communication needs to be objective, and expressed in impersonal ways:
- Work together rather than be confrontational
- Results should be presented in a non-personal way
- Attempt to understand how others fell
- At the end of discussions, confirm that you both understood
Code of Ethics
Public – Certified software testers shall consider the wider public interest in their actions
Client and employer – Certified software testers shall act in the best interests of their client and employer (being consistent with the wider public interest).
Product – Certified software testers shall ensure that the deliveries they provide (for any products and systems they work on) meet the highest professional standards possible.
Judgement – Certified software testers shall maintain integrity and independence in their professional judgement.
Management – Certified software test managers and leaders shall subscribe to and promote an ethical approach to the management of software testing.
Profession – Certified software testers shall advance the integrity and reputation of the profession consistent with the public interest.
Colleagues – Certified software testers shall be fair to and supportive of their colleagues and promote cooperation with software developers.
Self – Certified software testers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.