Software QA involves the entire software development PROCESS – monitoring and improving the process, making sure that any agreed-upon processes, standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to ‘prevention’. (See the Bookstore section’s ‘Software QA’ category for a list of useful books on Software Quality Assurance.)
What is ‘Software Testing’?
Testing involves operation of a system or application under controlled conditions and evaluating the results (e.g., ‘if the user is in interface A of the application while using hardware B, and does C, then D should happen’). The controlled conditions should include both normal and abnormal conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn’t or things don’t happen when they should. It is oriented to ‘detection’. (See the Bookstore section’s ‘Software Testing’ category for a list of useful books on Software Testing.)
Organizations vary considerably in how they assign responsibility for QA and testing. Sometimes they’re the combined responsibility of one group or individual. Also common are project teams and agile teams that include a mix of testers and developers who work closely together, with overall testing and QA processes monitored by a project manager, a scrum master, or other appropriate person. It will depend on what best fits an organization’s size, development approach, and business structure.
Note that testing can be done by machines or people. When done by machines (computers usually) it’s often called ‘automated testing’. Of course a human still has to develop the automation strategy and test cases and write test automation code.