Software Testing - What?, Why?, When?

1.Whatis Software Testing? 

According to WIKIPEDIA
                                               "Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test."

Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs (errors or other defects).

Software testing can be stated as the process of validating and verifying that a software program/application/product:

   1.meets the requirements that guided its design and development;   2.works as expected; and   3.can be implemented with the same characteristics.

Softwaretesting is more than just error detection;  

Testingsoftware is operating the software under controlled conditions, to (1) verify that it behaves “as specified”; (2) to detecterrors, and (3) to validate that what has been specified is what the user actually wanted.

  1. Verification is the checking or testing of items, including software, for conformance and consistency by evaluating the results against pre-specified requirements.  [Verification: Are we building the system right?]  
 2.Error Detection: 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.
  3.Validation looks at the system correctness – i.e. is the process of checking that what has   been specified is what the user actually wanted.     [Validation: Are we building the right system?] 

Inother words, validation checks to see if we are building what the customerwants/needs, and verification checks to see if we are building that systemcorrectly.  Both verification andvalidation are necessary, but different components of any testing activity.

Thedefinition of testing according to the ANSI/IEEE 1059 standard is that testingis the process of analysing a software item to detect the differences betweenexisting and required conditions (that is defects/errors/bugs) and to evaluatethe features of the software item.
Remember:The purpose of testing is verification, validation and error detection in orderto find problems – and the purpose of finding those problems is to get themfixed.
 
2.Why Testing CANNOT Ensure Quality
Testingin itself cannot ensure the quality of software.All testing can do is give you a certain level of assurance (confidence) in thesoftware. On its own, the only thing that testing proves is that underspecific controlled conditions, the software functioned as expected by the testcases executed.
 
3. What is Software“Quality”?
"Quality software is reasonably bug-free,delivered on time and within budget, meets requirements and/or expectations, andis maintainable. "

However, quality is a subjective term. It willdepend on who the ‘customer’ is and their overall influence in the scheme ofthings. A wide-angle view of the ‘customers’ of a software developmentproject might include end-users, customer acceptance testers, customer contractofficers, customer management, the development organisation’smanagement/accountants/testers/salespeople, future software maintenanceengineers, stockholders, magazine reviewers, etc. Each type of ‘customer’will have their own view on ‘quality’ - the accounting department mightdefine quality in terms of profits while an end-user might define quality asuser-friendly and bug-free. 

4. What is “QualityAssurance”?
“Quality Assurance” measures the qualityof processes used to create a quality product.
Software Quality Assurance (‘SQA’ or‘QA’) is the process of monitoring and improving all activities associatedwith software development, from requirements gathering, design and reviews tocoding, testing and implementation.

It involves the entire software developmentprocess - monitoring and improving the process, making sure that any agreed-uponstandards and procedures are followed, and ensuring that problems are found anddealt with, at the earliest possible stage. Unlike testing, which is mainly a‘detection’ process, QA is ‘preventative’ in that it aims to ensurequality in the methods & processes – and therefore reduce the prevalenceof errors in the software.

Organisationsvary considerably in how they assign responsibility for QA and testing.Sometimes they’re the combined responsibility of one group or individual. Alsocommon are project teams that include a mix of testers and developers who workclosely together, with overall QA processes monitored by project managers orquality managers.
 
5. Quality Assuranceand Software Development
Quality Assurance and development of a productare parallel activities. Complete QA includes reviews of the development methodsand standards, reviews of all the documentation (not just for standardisationbut for verification and clarity of the contents also). Overall QualityAssurance processes also include code validation.

A note about quality assurance: The role ofquality assurance is a superset of testing. Its mission is to help minimise therisk of project failure. QA people aim to understand the causes of projectfailure (which includes software errors as an aspect) and help the team prevent,detect, and correct the problems. Often test teams are referred to as QA Teams,perhaps acknowledging that testers should consider broader QA issues as well astesting.
 
6. What’s the differencebetween QA and testing?
Simplyput:
  • 1.TESTING means “Quality Control”; and
  • 2.QUALITY CONTROL measures the quality of a product; while
  • 3.QUALITY ASSURANCE measures the quality of processes used to create a quality product.
 
7. TheMission ofTesting
In well-run projects, the mission of the testteam is not merely to perform testing, but to help minimise the risk of productfailure. Testers look for manifest problems in the product, potential problems,and the absence of problems. They explore, assess, track, and report productquality, so that others in the project can make informed decisions about productdevelopment. It's important to recognise that testers are not out to "breakthe code." We are not out to embarrass or complain, just to inform. We arehuman meters of product quality.
 

Comments