Motto of this article : To throw light on what exactly testing is all about and what are different types of testing. Keep glued for more and more information coming up….
What is Software Testing?
Software testing is a process of exercising or evaluation of a software application by manual or automated means to verify that it satisfies a specified requirement.
Testing should systematically uncover different classes of errors in a minimum amount of time and with a minimum amount of effort. A secondary benefit of testing is that it demonstrates that the software appears to be working as stated in the specifications. The data collected through testing can also provide an indication of the software's reliability and quality. But, testing cannot show the absence of defect -- it can only show that software defects are present.
Objective of Testing
1. To check if the system meets the requirements and whether it can be executed successfully in the intended environment
2. To check if the system is “Fit for the Purpose”
3. To check if the system does what it is expected to do.
Why to test?
Technology is being more closely integrated into day-to-day business in such a way that t it cannot operate without the computer technology. For example, the airlines can only take reservations when their computer system is operational.
What to test?
Any working product, which forms part of the software application, has to be tested. This includes any program and the associated data.
When to test?
Testing activities can be started as soon as the system requirement specification has been prepared. The test planning can be initiated and progressed along with the SDLC (Software Development Life Cycle) through the design and coding phases by developing test design, test plan and test cases. As soon as coding is completed, the focus can be moved to test execution. This approach of involving testing early in SDLC will contribute to meeting deadlines without compromising on the testing activities.
How often to test?
1. When a program is modified or newly developed, it has to be tested
2. Whenever the nature and volume of data changes, the application has to be tested.
Software Testing and Debugging:
Software testing should not be confused with debugging. Debugging is the process of analyzing and locating bugs when software does not behave as expected. Although the identification of some bugs will be obvious from playing with the software, a methodical approach to software testing is a much more thorough means of identifying bugs. Debugging is therefore an activity, which supports testing, but cannot replace testing. However most importantly no amount of testing can be guaranteed to discover all bugs in the system.
Verification:
1. Did We Build The Thing Right?”
2. Does The System Implement The Specification?
Validation:
1. “Did We Build The Right Thing?”
2. Does The Software Do What User Wants?
Verification and Validation:
The process of determining whether the requirements for a system or a component are complete and correct. Did the product of each development phase fulfill the requirements or conditions imposed by the previous phase, and the final system or component complies with specified requirements?
Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. This can be done with checklists, issues lists, walkthroughs, and inspection meetings.
Validation typically involves actual testing and takes place after verifications are completed. Both validation and verification process continue in a cycle till the software becomes defect free (Validation --> Reporting --> Fixing (and enhancements) --> Verification).
Quality Is…
1. Based on customers’ perceptions of a product’s design and how well the design matches the original specifications.
2. The ability of a product and service to satisfy stated or implied needs.
3. Achieved by conforming to established requirements within an organization
Quality Assurance
A set of activities designed to ensure that the development and/or maintenance process is adequate to ensure a system will meet its objectives.
Quality Control
A set of activities designed to evaluate a developed work product
Quality Assurance versus Quality Control
Testing is a Quality Control Activity. There is often confusion in the IT industry regarding the difference between quality control and quality assurance. Many “quality assurance” groups, in fact, practice quality control. Quality methods can be segmented into two categories: preventive methods and detective methods. This distinction serves as the mechanism to distinguish quality assurance activities from quality control activities. This discussion explains the critical difference between control and assurance, and how to recognize a control practice from an assurance practice.
Quality has two working definitions:
1.Producer’s Viewpoint – The quality of the product meets the requirements.
2. Customer’s Viewpoint – The quality of the product is “fit for use” or meets the customer’s needs.
There are many “products” produced from the software development process in addition to the software itself, including requirements, design documents, data models, GUI screens, programs, and so on. To ensure that these products meet both requirements and user needs, both quality assurance and quality control are necessary.
Quality Assurance:
Quality assurance is a planned and systematic set of activities necessary to provide adequate confidence that products and services will conform to specified requirements and meet user needs. Quality assurance is a staff function, responsible for implementing the quality policy defined through the development and continuous improvement of software development processes. Quality assurance is an activity that establishes and evaluates the processes that produce products.
If there is no need for process, there is no role for quality assurance. For example, quality assurance activities in an IT environment would determine the need for, acquire, or help install:
1. System development methodologies
3. System maintenance processes
4. Requirements definition processes
5. Testing processes and standards
Once installed, quality assurance would measure these processes to identify weaknesses, and then correct those weaknesses to continually improve the process.
Quality Control:
Quality control is the process by which product quality is compared with applicable standards, and the action taken when nonconformance is detected. Quality control is a line function, and the work is done within a process to ensure that the work product conforms to standards and requirements. Quality control activities focus on identifying defects in the actual products produced. These activities begin at the start of the software development process with reviews of requirements, and continue until all application testing is complete. It is possible to have quality control without quality assurance. For example, a test team may be in place to conduct system testing at the end of development, regardless of whether that system is
produced using a software development methodology.
The following statements help differentiate quality control from quality assurance:
1.Quality control relates to a specific product or service.
2.Quality control verifies whether specific attribute(s) are in, or are not in, a specific product or service.
3.Quality control identifies defects for the primary purpose of correcting defects.
4.Quality control is the responsibility of the team/worker.
5.Quality control is concerned with a specific product.
6.Quality assurance helps establish processes.
7.Quality assurance sets up measurement programs to evaluate processes.
8.Quality assurance identifies weaknesses in processes and improves them.
9.Quality assurance is a management responsibility, frequently performed by a staff function.
10.Quality assurance is concerned with all of the products that will ever be produced by a process.
11.Quality assurance is sometimes called quality control over quality control because it evaluates whether quality control is working.
12.Quality assurance personnel should not ever perform quality control unless it is to validate quality control.
Following are the software testing techniques (On a very high level)
1.White Box Testing and
2.Black Box Testing
White Box Testing:
White box testing is a software testing approach that examines the program structure and derives test data from the program logic. It allows one to peek inside the code, focuses specifically on using the internal knowledge of the software.It is basically focused on how operations are done inside the program.White box testing is also called as structural testing / clear box testing / glass box testing / open box testing.
Black Box Testing:
Unit Testing:
Unit testing is the most micro level of testing. In which each unit (basic component) of the software is tested to verify that the detailed design for the unit has been correctly implemented. (Or)
The Unit test is the lowest level of testing performed during software development, where individual units of software are tested in isolation from the other parts of program.
Integration Testing:
(a) Testing of combined parts of an application to determine if they function together correctly. The ‘parts’ can be module, individual application, client/server on a network etc.
(b) Integration testing is a process of testing the system as a whole, the test is carried out after the testing of individual units to ensure that they call all together.
The primary objective of Integration testing is to discover errors in the interface between the units or modules
System Testing:
System testing can begin whenever the product has sufficient functionality to execute some of the tests or after unit and integration testing are completed.
The purpose of system testing is
b)To establish that all modules work together correctly as application or system or package.
c)To verify whether the application meets all the system requirement.
Acceptance testing:
Formal testing conducted to enable a user, customer or other authorized entity to determine whether to accept a system or component.Acceptance testing is high up on the V model, a counterpart to the requirements specification process. There are two types Business Acceptance and User Acceptance. Historically this element of testing comes at the end of the development lifecycle. However with an understanding of risk it is apparent that closer and more timely appreciation is needed.
User Acceptance Testing (UAT):
User Acceptance Testing (UAT) is the highest level of test. Matters affecting UAT include contracts, the degree to which the "User" agrees that the development organizations testing is sufficient, the testing maturity and the amount of integration needed with existing systems. Actual planning and execution of the test does not have to be undertaken directly by the customer. Many test consultancies offer their services to do this.
Business Acceptance Testing (BAT):
BAT is undertaken within the development organization. The aim is to ensure that the software will eventually pass acceptance test.
Why User Acceptance Testing?
1.To ensure that the system meets the need of the organization and the end user or customer
2.To test whether the system is ready to be promoted to the actual real environment
Regression Testing:
Testing which is performed after making a functional improvement or repair of the software. Its purpose is to determine if the change has regressed other aspects of the software. As a general principle, software unit tests are fully repeated if a module is modified, and additional tests which expose the fault removed, are added to the test set. The software unit will then be re-integrated and integration testing repeated.
Why regression testing?
To ensure new errors are not introduced after bug fixing or modifications of the software or its environment.
1. Exploratory Testing
2. Ad-hoc Testing
3. Sanity Testing
4. Smoke Testing
5. Static Testing
6. Dynamic Testing
7. Positive Testing
8.Negative Testing
9. Usability Testing
10. Mutation Testing
11. Conversion Testing
12. Configuration Testing
13. Security Testing
14. Compatibility Testing
15. Concurrency Testing
16. Load testing
19. Volume Testing
21. Comparison Testing
22. Soak Testing
23. End-to-end Testing
24. Alpha Testing
25. Beta Testing
26. Recovery Testing
27. Network Sensitivity Testing
28. Penetration Testing
29. Scalability Testing
Thanks for going through the post. Please post your comments on the article. You can reach us at anyhelpinit@gmail.com
No comments:
Post a Comment