Tuesday, January 8, 2008

Important questions on Software testing:

What is Software Quality Assurance?
The other technical terminology for Software Quality Assurance is Verification and Validation.
To put in simple words, Verification speaks on "Are we building the right system?" and Validation speaks on "Are we building the system right?". SQA is an umbrella activity that is applied throughout the software process.
Quality as the American Heritage Dictionary defines is, "A Characteristic or attribute of something..."

In this site i shall give more info as we proceed further on Testing and its related activities.

What is Software Testing by the way?
In general, testing is finding out how well something works. In terms of human beings, testing tells what level of knowledge or skill has been acquired. In computer hardware and software development, testing is used at key checkpoints in the overall process to determine whether objectives are being met. For example, in software development, product objectives are sometimes tested by product user representatives. When the design is complete, coding follows and the finished code is then tested at the unit or module level by each programmer; at the component level by the group of programmers involved; and at the system level when all components are combined together. At early or late stages, a product or service may also be tested for usability.
At the system level, the manufacturer or independent reviewer may subject a product or service to one or more performance tests, possibly using one or more benchmarks. Whether viewed as a product or a service or both, a Web site can also be tested in various ways - by observing user experiences, by asking questions of users, by timing the flow through specific usage scenarios, and by comparing it with other sites. (www.WhatIs.com)

The answer to the primary role of software testing is two fold:

· Determine whether the system meets specifications (Producer View), and

· Determine whether the system meets business and user needs (Customer View)

Testing encompasses three concepts:

1. The demonstration of the validity of the software at each stage in the system development life cycle.

2. Determination of the validity of the final system with respect to user needs and requirements.

3. Examination of the behavior of a system by executing the system on sample test data.

Dr.Edward Fleming's Quality Principals
The 14 Quality Principals of Dr.Edward Fleming are as follows:
1. Create Consistence of purpose in the company.
2. Learn the new philosophy.
3. Require statistical evidence of Quality.
4. Reduction in the number of vendors.
5. Use statistical methods to find source of trouble.
6. Institute modern aids to training on job.
7. Improve supervision.
8. Breakdown barriers between departments.
9. Eliminate numerical goals, slogans, pictures and posters.
10. Drive out fear.
11. Look carefully at work standards.
12. Institute a massive training program for employees.
13. Institute a vigorous program for retraining people in new skills.
14. Create structure in top management that will push everyday one above the 13 points.

The Quality Engineering Tools

The Sever Quality Engineering Tools are as follows:

1. Flow Charts.

2. Run Charts.

3. Check Sheet.

4. Histogram.

5. Pareto Diagram.

6. Ishikawa Diagram.

7. Scatter Diagram.

The tools can be used in the following areas:

1. Problem Representation (Flow Charts, Run Charts)

2. Data Collection (Check Sheet, Histogram)

3. Data Analysis and Synthesis (Histogram, Pareto Diagram, Ishikawa Diagram and Scatter Diagram)

The Quality Management Tools

The Sever Quality Management Tools are as follows:

1. Process Decision Program Chart (PDPC).

2. Activity Network.

3. Tree Diagram.

4. Matrix Data Analysis Diagram.

5. Relationship Diagram.

6. Affinity Diagram.

7. Prioritization Matrix.

The tools can be used in the following areas:

1. Problem Representation (PDPC, Activity Network, Tree Diagram)

2. Data Collection (Matrix Data Analysis Diagram)

3. Data Analysis and Synthesis (Relationship Diagram, Tree Diagram, Affinity Diagram, Prioritization Matrix)

Types of Testing
Let us get acquainted with some basic testing terminology and then look into few different testing types.

Testing presents an interesting anomaly for the software engineer. Earlier in the software process, the engineer attempts to build software from an abstract concept to a tangible implementation. Now comes testing. The engineer creates a series of test cases that are intended to demolish the software that has been built. In fact, testing is the one step in the software engineering process that could be viewed as destructive rather than constructive.
Software developers are by their nature constructive people. Testing requires that the developer discard preconceived notions of the correctness of software just developed and over come a conflict of interest that occurs when errors are uncovered.

Testing Principals

Davis suggests a set of testing principals, which have been adapted for use:

1. All tests should be traceable to customer requirements.
2. Tests should be planned long before testing begins.
3. The Pareto principal applies to software testing.
4. Testing should begin in the small and progress toward testing in the large.
5. Exhaustive testing is not possible.
6. To be most effective, testing should be conducted by an independent third party.

Pareto Principal: The Pareto principal implies that 80% of all errors uncovered during testing will likely be traceable to 20% of all program modules.

Testability
The checklist that follows provides a set of characteristics that lead to testable software.
1. Operability : The better it works, the more efficiently it can be tested.
2. Observability : What you see is what you test.
3. Controllability : The better we can control the software, the more the testing can be automated and optimized.
4. Decomposability : By controlling the scope of testing we can more quickly isolate problems and perform smarter retesting.
5. Simplicity : The less there is to test, the more quickly we can test it.
6. Stability : The fewer the changes, the fewer the disruptions to testing.
7. Understandability : The more information we have, the smarter we will test.

Goal of Testing

The primary Goal of Testing is to uncover requirement, design or coding errors in the programs.

What is Verification and Validation?

"Verification" is the process of determining whether or not the products of a given phase of software development fulfill the specifications established during the previous phase. The verification activities include proving, testing and reviews.

"Validation" is the process of evaluating the software at the end of the software development to ensure compliance with the software requirements. Testing is a common method of validation.

For high reliability we need to perform both activities. Together they are called the "V & V" activities.

Software Testing is an Art. A good tester can always be a good programmer, but a good programmer need not be a good tester.

Test Objectives

The following can be described as test objectives as per Glen Mayer:

  1. Testing is a process of executing a program with the intent of finding an error.
  2. A good test case is one that has a high probability of finding an as-yet-undiscovered error.
  3. A successful test is one that uncovers an as-yet-undiscovered error.

Testing Principals

The following can be described as testing principals:

  1. All tests should be traceable to customer requirements.
  2. Tests should be planned long before testing begins.
  3. The Pareto principal applies to testing.
  4. Testing should begin “in small” and progress toward testing “in large”.
  5. Exhaustive testing is not possible.
  6. To be most effective, testing should be conducted by an independent third party.

Verification Strategies

The following can be categorized into Verification Strategies:

1. Requirements Reviews.

2. Design Reviews.

3. Code Walkthrough.

4. Code Inspection.

Validation Strategies
 
The following can be described as the basic Validation Test strategies.
 
1. Unit Testing.
2. Integration Testing.
3. System Testing.
4. Performance Testing.
5. Alpha Testing.
6. User Acceptance Testing (UAT)
7. Installation Testing. 8. Beta Testing.
 

Test: An activity in which a system or component is executed under specified conditions, the results are observed or recorded, and an evaluation is made of some aspect of the system or component.

Test Case: A set of test inputs, execution conditions, and expected results developed for a particular objective.

Test Procedure: The detailed instruction for the set-up, execution, and evaluation of results for a given test case.

Validation Methods
Proven test-design methods provide a more intelligent and effective means of identifying tests than a purely random approach.

Black-box methods for function-based tests

The following methods are commonly used:
1. Equivalence Partitioning.
2. Boundary Value Analysis.
3. Error Guessing.

The following are the lesser-used methods.
1. Cause-Effect graphing.
2. Syntax Testing.
3. State Transition Testing.
4. Graph Matrix.

Quality Control Vs. Quality Assurance

Quality Control

1. Relates to a specific product or service.

2. Verifies whether specific attributes are in, or are not in, a specific product or service.

3. Identifies defects for the primary purpose of correction defects.

4. Is the responsibility of team/workers.

5. Is concerned with a specific product.

Quality Assurance

1. Helps establish process.

2. Sets up measurements programs to evaluate processes.

3. Identifies weakness in processes and improves them.

4. Is management responsibility, frequently performed by staff function.

5. Is concerned with all of the products that will ever be produced by a process.

6. Is sometimes called quality control over Quality Control because it evaluates whether quality is working.

7. QA personnel should not ever perform Quality Control unless it is to validate QC.

Types of Testing

The following are the major types of testing.
1. Integration Testing.
2. System Testing.
3. Usability Testing.
4. Compatibility Testing.
5. Reliability Testing.
6. Test Automation.
7. Performance Testing.
8. Supportability Testing.
9. Security and Access Control Testing.
10. Content Management Testing.
11. API Testing.

No comments: