Software Testing - Basics and Start

    What is Software Testing...?
Testing Basics


1. What is Software Testing
2. Why Testing CANNOT Ensure Quality
3. What is Software Quality?
4. What is Quality Assurance?
5. Software Development & Quality Assurance
6. The difference between QA & Testing
7. The Mission of Testing
8. What a test plan should contain

 
These are very basics , that every tester should know about. Now a days, world is moving towards automation however basics of testing will always remain same!

1. What is Software Testing?
Software testing is more than just error detection; 
Testing software is operating the software under controlled conditions, to (1) verify that it behaves “as specified”; (2) to detect errors, and (3) to validate that what has been specified is what the user actually wanted.
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?]
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.
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?]
In other words, validation checks to see if we are building what the customer wants/needs, and verification checks to see if we are building that system correctly.  Both verification and validation are necessary, but different components of any testing activity.
The definition of testing according to the ANSI/IEEE 1059 standard is that testing is the process of analysing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item.
Remember: The purpose of testing is verification, validation and error detection in order to find problems – and the purpose of finding those problems is to get them fixed.
 
2. Why Testing CANNOT Ensure Quality
Testing in itself cannot ensure the quality of software. All testing can do is give you a certain level of assurance (confidence) in the software. On its own, the only thing that testing proves is that under specific controlled conditions, the software functioned as expected by the test cases executed.
 
3. What is Software “Quality”?
Quality software is reasonably bug-free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable.
However, quality is a subjective term. It will depend on who the ‘customer’ is and their overall influence in the scheme of things. A wide-angle view of the ‘customers’ of a software development project might include end-users, customer acceptance testers, customer contract officers, customer management, the development organisation’s management/accountants/testers/salespeople, future software maintenance engineers, stockholders, magazine reviewers, etc. Each type of ‘customer’ will have their own view on ‘quality’ - the accounting department might define quality in terms of profits while an end-user might define quality as user-friendly and bug-free. 
 
4. What is “Quality Assurance”?
“Quality Assurance” measures the quality of processes used to create a quality product.
Software Quality Assurance (‘SQA’ or ‘QA’) is the process of monitoring and improving all activities associated with software development, from requirements gathering, design and reviews to coding, testing and implementation.
It involves the entire software development process - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with, at the earliest possible stage. Unlike testing, which is mainly a ‘detection’ process, QA is ‘preventative’ in that it aims to ensure quality in the methods & processes – and therefore reduce the prevalence of errors in the software.
Organisations 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 that include a mix of testers and developers who work closely together, with overall QA processes monitored by project managers or quality managers.
 
5. Quality Assurance and Software Development
Quality Assurance and development of a product are parallel activities. Complete QA includes reviews of the development methods and standards, reviews of all the documentation (not just for standardisation but for verification and clarity of the contents also). Overall Quality Assurance processes also include code validation.
A note about quality assurance: The role of quality assurance is a superset of testing. Its mission is to help minimise the risk of project failure. QA people aim to understand the causes of project failure (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 as testing.
 
6. What’s the difference between QA and testing?
Simply put:
▪        TESTING means “Quality Control”; and
▪        QUALITY CONTROL measures the quality of a product; while
▪        QUALITY ASSURANCE measures the quality of processes used to create a quality product.
 
7. The Mission of Testing
In well-run projects, the mission of the test team is not merely to perform testing, but to help minimise the risk of product failure. Testers look for manifest problems in the product, potential problems, and the absence of problems. They explore, assess, track, and report product quality, so that others in the project can make informed decisions about product development. It's important to recognise that testers are not out to "break the code." We are not out to embarrass or complain, just to inform. We are human meters of product quality.
 
8. What a test plan should contain
A software project test plan is a document that describes the objectives, scope, approach, and focus of a software testing effort. The process of preparing a test plan is a useful way to think through the efforts needed to validate the acceptability of a software product. The completed document will help people outside the test group understand the 'why' and 'how' of product validation. It should be thorough enough to be useful but not so thorough that no one outside the test group will read it. 
A test plan states what the items to be tested are, at what level they will be tested, what sequence they are to be tested in, how the test strategy will be applied to the testing of each item, and describes the test environment. 
A test plan should ideally be organisation wide, being applicable to all of an organisations software developments. 
The objective of each test plan is to provide a plan for verification, by testing the software, the software produced fulfils the functional or design statements of the appropriate software specification. In the case of acceptance testing and system testing, this generally means the Functional Specification. 
The first consideration when preparing the Test Plan is who the intended audience is – i.e. the audience for a Unit Test Plan would be different, and thus the content would have to be adjusted accordingly. 
You should begin the test plan as soon as possible. Generally it is desirable to begin the master test plan as the same time the Requirements documents and the Project Plan are being developed. Test planning can (and should) have an impact on the Project Plan. Even though plans that are written early will have to be changed during the course of the development and testing, but that is important, because it records the progress of the testing and helps planners become more proficient.
What to consider for the Test Plan:

1. Test Plan Identifier 
2. References 
3. Introduction 
4. Test Items 
5. Software Risk Issues 
6. Features to be Tested 
7. Features not to be Tested 
8. Approach 
9. Item Pass/Fail Criteria 
10. Suspension Criteria and Resumption Requirements 
11. Test Deliverables 
12. Remaining Test Tasks 
13. Environmental Needs 
14. Staffing and Training Needs 
15. Responsibilities 
16. Schedule 
17. Planning Risks and Contingencies 
18. Approvals 
19. Glossary  
Standards for Software Test Plans
Several standards suggest what a test plan should contain, including the IEEE.


The standards are:

IEEE standards:
 829-1983 IEEE Standard for Software Test Documentation
 1008-1987 IEEE Standard for Software Unit Testing
 1012-1986 IEEE Standard for Software Verification & Validation Plans
 1059-1993 IEEE Guide for Software Verification & Validation Plans 


This is very basics , that every tester should know about. Now a days, world is moving towards automation however basics of testing will always remain same!

Comments