Thursday, August 28, 2008

Difference between Software Testing & QA: This article explains the various terminologies associated with software testing. Different people use different terms to represent their software testing process. Some people call it as "QA" (Quality Analysis), some call it as "software testing" while others represent it with a more formal term called "SQA" (Software Quality Analysis). All of the above terms represent more or less the same concept - "ensure that the software does not have any defects" !"Software testing" simply means testing the software to find and report defects (bugs). "Software Quality Analysis" (SQA or QA) is an engineering and monitoring process where they make sure the software development team follows the proper process to develop the software. This includes preparing the requirements documents, functional specification, high level/low level design documents, test plans, test execution plans etc. Even though testing is also part of it, QA means a lot more. QA involves prevention of defects by monitoring the software development process and testing the software to make sure it works as expected.In short, testing is the process in which a tester finds the defects in a software. Testing team comes into the project only during the later stages of the project, when the software is almost complete and ready to test.On the other side, Quality Analysis involves the process through out the life cycle of the project - starting from the requirement analysis phase through the delivery stage. The QA team is responsible to ensure that the development team follows the correct process and thus prevent problems during later stages of the project. QA team defines the process - which may include various steps like requirement analysis, documentation, approval by customer and various other authorities etc. At any stage, if the QA team finds that the development team does not follow or meet the defined process, they are responsible to escalate it to the appropriate people including product manager or QA manager. Testing or QA - which one to follow ? The reality is, most of the customers are not aware of the QA process. Rather, they want to make sure that the software is tested well for defects. Due to this reason, majority of the small companies do not care much about the QA Process. Rather, they will use their testing team to test the software. The development team will develop the software by following whatever process they like (or, without following any specific process) and the testing team is responsible to find the bugs ! The QA process involves lot of time throughout various stages of the project. It requires documentation, approval and follow specific rules for development process. All these make the development process slower. However, the well managed QA process will help in long term benefits for complex projects and prevent problems during. Bugs, defects and issues: This article explains the terminologies like bugs, defects and issues. In the previous chapter, you learned about the difference between QA and software testing. This chapter will help you learn some other confusing terms in software testing domain. Bugs, defects and issues All these three terms means the same. It all represents a problem in software. Background of BugIn 1946, a huge electromechanical computer stopped functioning suddenly. Operators traced that a bug was trapped in it's relay unit causing the problem. They fixed the problem by removing the bug. Software "bug tracking" and "bug fixing" was evolved from this!Below is the picture of the first real bug reported: For several years, the term "bug" and "defect" were widely used in software develop process to indicate problems in software. However, software engineers started questioning the terms "bugs" and "defects" because in many cases they argue that certain "bug" is not a bug, but it is a "feature" or "it is how customer originally asked for it". To avoid conflicts between testing and development team, several companies are now using a different term - "software issue". Even though both "issue" and "bug" indicate some kind of problems in software, developers feel the term "issue" is less offensive than "bug" ! This is because, the bug directly indicate a problem in the code he wrote, while "issue" is a term which indicates any kind of general problems in the software including wrong requirement, bad design etc.Whatever problems the QA or testing team find, they will call it as an "issue". An issue may or may not be a bug. A tester may call a feature as a "issue" because that is not what the customer wants, even though it is a nice feature. Or, the software is not delivered to QA team on the date planned, it can be reported as an "issue".The tester reports issues and his role ends there. It is the job of the product manager to decide whether to solve the issue and how to solve it. Depending on the nature of the issue, the product manager assigns it to the appropriate team to resolve. Product manager may even decide to "waive the issue" if he feels that it is not a problem. If the issue is a bug, then it will be assigned to the developers and they will fix the code. When the bug is fixed, the testing team will re test the software and verify it. If the issues is fixed, then the status of the issue will be changed to "closed".An issue can be resolved in different ways, depending on it's nature. If it is a software bug, it goes to the developer to correct the code and program. If it is due to wrong requirement, it goes to the customer or marketing to correct the requirement. If the issue was caused by bad configuration in the testing computer, it will be assigned to the appropriate hardware representative to correct the configuration problem.Software developers like the term "issue" rather than "bug" because the term "issue" does not really indicate that there is a problem in their code ! The term "issue" is becoming the standard in software testing process to indicate problems in software.