• No results found

IT SOFTWARE TESTING UNIT- I

N/A
N/A
Protected

Academic year: 2021

Share "IT SOFTWARE TESTING UNIT- I"

Copied!
30
0
0

Loading.... (view fulltext now)

Full text

(1)

1

IT 6004 - SOFTWARE TESTING

UNIT- I

INTRODUCTION

Testing as an Engineering Activity – Testing as a Process – Testing axioms – Basic definitions Software Testing Principles – The Tester’s Role in a Software Development Organization – Origins of Defects – Cost of defects – Defect Classes – The Defect Repository and Test Design – Defect Examples – Developer/Tester Support of Developing a Defect Repository – Defect Prevention strategies.

TESTING AS AN ENGINEERING ACTIVITY

Poor quality of software that can cause loss of life or property is no longer acceptable to society .Failures can result in catastrophic losses. Conditions demand software development staffs with interest and training in the areas of software products and process quality. Highly qualified staffs ensures that software products are built on time, within budget and are of the highest quality with respect to attributes such as reliability, correctness, usability and ability to meet all user requirements. The demand for high quality software’s and the need for well educated software professionals there is a movement to change the way software is developed and maintained. The profession of software engineering is slowly emerging as a formal engineering discipline. The education and training of engineers in each engineering discipline is based on the teaching of related scientific principles, engineering processes, standards, methods, tools, measurements. The goal and task force team is to define a body of knowledge that covers the software engineering discipline, to discuss the nature of education for this new profession and to define a code of ethics for the software engineers

Elements of the Engineering Design  Basic principles  Processes  Standards  Measurements  Tools  Methods  Best practices  Codes of ethics  Body of knowledge

 The profession of software engineering is slowly acted as a formal engineering discipline.

(2)

2

 The software development activities are also using the engineering approach as follows:

 The development process is well understood  Projects are well planned

 Life cycles models are defined and followed  Standards are in place in process and products

 Measurements are employed to evaluate product and process quality  Components are reviewed

 Verification and validation process play a key role in producing a quality server

 Engineers have proper education, training and certification.

 A testing specialist who is trained as an engineer should have knowledge of test related principles, measurements, standards, plans, tools and methods, and should learn how to apply them to the testing tasks to be performed.

(3)

3 ROLE OF PROCESS IN SOFTWARE QUALITY

 The software engineering process is the set of methods, practices, standards, documents, activities, policies and procedures that software engineers used to develop and maintain a software system and its associated artifacts such as projects and test plans, design documents, code and manuals.

Components of an Engineering Process

 Types of manuals namely 1. user manual

2. troubleshoot manual 3. administration manual

4. Quality factors involved in high quality software products: 1. usability

2. reliability 3. testability 4. maintainability

 Different models are used in software engineering process such as  CMM

 SPICE  TMM

(4)

4 TESTING AS A PROCESS

 Software development process has includes five sub process namely 1. Requirement / analysis process

2. Product specification process 3. Design process

4. Implementation process 5. Testing process

 The testing process further involves in two processes namely verification and validation.

 The technical aspects of the testing relate to the techniques, method, measurement, and tools used to ensure that the software under test is as defect free and reliable.  The testing itself is related to two processes called verification, validation.

Validation: It is the process of evaluate a software system during or at the end of the cycle in order to determine whether it satisfies the specified requirements.

Meaning: Validation is associated with traditional execution based technique that means exercising the code with test cases.

Verification: It is process of evaluating a software system to determine whether product of a given development phase satisfy the condition imposed at the start that phase.

Meaning: Verification is usually associated with activities such as inspection and reviews of software deliverables.

(5)

5

 Software testing: Testing is generally described as a group of procedures carried out to evaluate source aspects of a piece of software.

Purpose of testing processes: testing has a dual purpose process namely reveal defects and to evaluate quality attributes of software.

 Debugging: it is the process of locating the fault or defect, repairing the code and retesting the code

BASIC DEFINITIONS Faults (Defects)

A fault (defect) is introduced into the software as the result of an error. It is an anomaly in the software that may cause it to behave incorrectly, and not according to its specification.

Errors

An error is a mistake, misconception, or misunderstanding on the part of a software developer. Failures

A failure is the inability of a software system or component to perform its required functions within specified performance requirements.

Test Cases

The usual approach to detect the defects in a piece of software is for the tester to select a set of input data and then execute the software with the input data under a particular set of conditions. A test case in a practical sense is a test-related item which contains the following information:

1. A set of test inputs. These are data items received from an external source by the code under test. The external source can be hardware, software, or human.

2. Execution conditions. These are conditions required for running the test, for example, a certain state of a database, or a configuration of a hardware device.

3. Expected outputs. These are the specified results to be produced by the code under test.

Test

A test is a group of related test cases, or a group of related test cases and test procedures (steps needed to carry out a test)

A group of related tests is sometimes referred to as a test set. A group of related tests that are associated with the database, and are usually run together is sometimes referred to as test suite

Test Oracle

A test oracle is a document, or piece of software that allows testers to determine whether a test has been passed or failed.

(6)

6 Test Bed

A test bed is an environment that contains all the hardware and software needed to test a software component or a software system.

Software Quality

Two concise definitions for quality are found in the IEEE Standard Glossary of Software Engineering Terminology:

1. Quality relates to the degree to which a system, system component, or process meets specified requirements.

2. Quality relates to the degree to which a system, system component, or process meets customer or user needs, or expectations. In order to determine whether a system, system component, or process is of high quality we use what are called quality attributes. These are characteristics that reflect quality. For software artifacts we can measure the degree to which they possess a given quality attribute with quality metrics.

Quality metrics

A metric is a quantitative measure of the degree to which a system, system component, or process possesses a given attribute.

There are product and process metrics. A very commonly used example of a software product metric is software size, usually measured in lines of code (LOC). Two examples of commonly used process metrics are costs and time required for a given task. Quality metrics are a special kind of metric.

A quality metric is a quantitative measurement of the degree to which an item possesses a given quality attribute.

Many different quality attributes have been described for software. Some examples of quality attributes with brief explanations are the following:

i. Correctness:- the degree to which the system performs its intended function

ii. Reliability :- the degree to which the software is expected to perform its required function under stated conditions for a stated period of time

iii. Usability :- related to the degree of effort needed to learn , operate, prepare input, and interpret output of the software.

iv. Integrity:- Relates to the system’s ability to withstand both intentional and accidental attacks

v. Portability:- Relates to the ability of the software to be transferred from one environment to another.

vi. Maintainability:- the effort needed to make change in the software

(7)

7

Another quality attribute that should be mentioned here is testability. This attribute is of more interest to developers/testers than to clients. It can be expressed in the following two ways: a) The amount of effort needed to test the software to ensure it performs according to specified requirements (relates the number of test cases needed)

b) The ability of the software to reveal defects under testing conditions (some s/w is designed in such a way that defects are well hidden during ordinary testing conditions)

Testers must work with analysts, designers and, developers throughout the software life system to ensure that testability issues are addressed.

Software Quality Assurance Group

The software quality assurance (SQA) group is a team of people with the necessary training and skills to ensure that all necessary actions are taken during the development process so that the resulting software conforms to established technical requirements.

Reviews

In contrast to dynamic execution-based testing techniques that can be used to detect defects and evaluate software quality, reviews are a type of static testing technique that can be used to evaluate the quality of a software artifact such as a requirements document, a test plan, a design document, a code component. Reviews are also a tool that can be applied to revealing defects in these types of documents.

A review is a group meeting whose purpose is to evaluate a software artifact or a set of software artifacts.

SOFTWARE TESTING PRINCIPLES

1. The Goal of testing is to find defects before customers find them out.

2. Exhaustive testing is not possible; program testing can only show the presence of defects, never their absence.

3. Testing applies all through the software life cycle and is not end of cycle activity. 4. Understand the reason behind the test.

5. Test the tests first.

6. Test Develop immunity and have to be revised constantly.

(8)

8 8. Testing encompasses defect prevention.

9. Testing is a fine balance of defect prevention and defect detection.

10. Intelligent and well planned automation is key to realizing the benefits of testing. 11. Testing requires talented, committed people who believe in themselves and work in

teams

Examples:

1. The Incomplete Car:-

Sales Representative/ Engineer:- “This Car has the best possible transmission and brake, and accelerate from 0 to 80mph in under 20 seconds!”.

Customer: “Well that may be true, but unfortunately it accelerates (even faster) when I press the brake pedal”

This Concept improves “Testability” or the product and improves interactions between the development and testing teams.

“Testing Should Focus on Finding Defects before Customers Find Them” 2. Dijkstra’s Doctrine:-

Consider a program that is supposed to accept a six character code and ensure that the first character is numeric and rests of the characters are alphanumeric. How many combinations of input data should we test.

The first character can be filled up in one of 10 ways (the digits (0-9) .

The Second through sixth characters can each be filled up in 62 ways(digits 0-9, lower case letters a-z and capital letters A-Z)

Car Salesman:- “ the car is complete – you just need to paint it “

(9)

9

This means that we have a total of 10 * (625 ) or 9,16,328,320 valid combinations of values to

test.

Assuming that each combinations takes 10 seconds to test, testing all these valid combinations will take approximately 2905 years.

“Testing can only prove the presence of defects, never their absence”

3. A Test in time:-

Defect in a product can come from any phase. There could have been errors while gathering initial requirements .If a wrong or incomplete requirement forms the basis for the design and development of a product, then that functionality can never be realized correctly in the eventual product, An Essential Conditions should be that every phase of the software development (requirements, design, coding)should catch and correct defects at that phase, without letting the defects seep to the next stage.

Organization incurs extra expenses for

 Performing a wrong design based on the wrong requirements;

 Transforming the wrong design into wrong code during the coding phase  Testing to make sure the product complies with the (wrong requirements  Releasing the product with the wrong functionality

4. The Cat and the Saint A saint sat meditating. A car that was prowling around was disturbing his concentration. Hence he asked his disciples to tie the cat to a pillar while he meditated . This sequence of events became a daily routine. The tradition continued over the years with the saint’s descendents and the cat’s descendents. One day, there were no cats on the hermitage. The disciples got panicky and searched for a cat, saying , “ We need a car. Only when we get a cat, can we tie it to a pillar and only after that can the saint start meditating !”

(10)

10

“Why one tests” it as important as “ What to test “ and “How to test “. 5.Test the Tests First :-

“ Test the test first--- a defective test is more dangerous than a defective products!” 6. The Pesticide Paradox:-

Defects are like pests, testing is like designing the right pesticides to catch and kill the pests, and the test cases that are written are like pesticides .

Tests are like pesticides- you have to constantly revise their composition to tackle new pests(Defects) .

An audiologist was testing a patient , telling ,

“I want to test the range within which you can hear . I will ask you from various distances to tell me your name, and you should tell me your name. Please turn back and answer.”

The patient understood what needs to be done Doctor( from 30 feet): What is your name ? ………..

Doctor (from 20 feet): What is your name ? ………

Doctor (From 10 feet) What is your name ?

Patient : For the third time , let me repeat my name is abccc

Every year, pests of various type attack fields and crops. Agriculture and crop experts find the right antidote to counter these pests and design pesticides with new and improved formulae. Pest gets used to new pesticides, develop immunity, and render the new pesticides ineffective. In subsequent years, the old pesticides have to be used to kill the pests which have not yet developed this immunity and new improved formulae that can combat these tougher variants of pests have to be introduced. This combination of new and old pesticides could sometimes even hinder the effectiveness of the (working)

(11)

11 7. The Convoy and the Rags

Testing can only find a part of defects that exist in a cluster; fixing a defect may introduce another defect to the cluster.

8. The Policeman on the Bridge:-

“Prevention is better than cure—you may be able to expand your horizon much further”

9. The Ends of the Pendulum :-

All of us experience traffic congestions. Typically, during these congestions, we will see a convoy effect. There will be stretches of roads with very heavy congestions, with vehicles looking like they are going in a convoy. This will be followed by a stretch of smooth sailing (rather, driving) until we encounter the next convoy.

There was a bridge in a city. Whenever people walked over it, they would fall down. To take care of this problem, the city appointed a strong policeman to stand under the bridge to save people who fall down. While this helped the problem to some extent, people continued to fall down the bridge when the policeman was not around, or when he could not catch them properly.

When the policeman retired, a new policeman was appointed to the job. During the first few days, instead of standing at the bottom of the bridge and catching the falling people, the new policeman worked with an engineer and fixed the hole on the bridge, which had not been noticed by the earlier policeman. People then stopped falling down the bridge and the new policeman did not have anyone to catch. (This made his current job redundant and he moved on to do other things that yielded even better results for himself and the people...)

(12)

12

“Defect prevention and defect detection should supplement each other and not be considered as mutually exclusive.”

10.Men in Black:-

Testing requires abundant talent in multiple dimensions. People in the testing profession should have a customer focus, understanding the implications from the customer’s perspective. They should have adequate analytical skills to be able to choose the right subset of tests and be able to counter the pesticide paradox

“Pride in “test” will take care of the “rest!”

11.Automation Syndrome:-

Three Chinese doctors were brothers. The youngest one was a surgeon and well known in all parts of the world. He could find tumors in the body and remove them. The middle one was a doctor who could find out disease in its early days and prescribe medicine to cure it. He was known only in the city they lived in. The eldest of the brothers was not known outside the house, but his brothers always took his advice because he was able to tell them how to prevent any illness before they cropped up. The eldest brother may not have been the most famous, but he was surely the most effective.

(13)

13

A farmer had to use water from a well which was located more than a mile away. Therefore, he employed 100 people to draw water from the well and water his fields. Each of those employed brought a pot of water a day but this was not sufficient. The crops failed.

Just before the next crop cycle, the farmer remembered the failures of the previous season. He thought about automation as a viable way to increase productivity and avoid such failures. He had heard about motorcycles as faster means of commuting (with the weight of water). Therefore, he got 50 motorcycles, laid off 50 of his workers and asked each rider to get two pots of water. Apparently, the correct reasoning was that thanks to improved productivity (that is, speed and convenience of a motorcycle), he needed fewer people. Unfortunately, he choose to use motorcycles just before his crop cycle started. Hence for the first few weeks, the workers were kept busy learning to use the motorcycle. In the process of learning to balance the motorcycles, the number of pots of water they could fetch fell. Added to this, since the number of workers was also lower, the productivity actually dropped. The crops failed again.

The next crop cycle came. Now all workers were laid off except one. The farmer bought a truck this time to fetch water. This time he realized the need for training and got his worker to learn driving. However, the road leading to the farm from the well was narrow and the truck did not help in bringing in the water. No portion of the crop could be saved this time also.

After these experiences the farmer said, “My life was better without automation!”

“Failures outnumber successes in automation. Equal skills and focus are needed for automation as in product development.”

TESTERS ROLE IN A SOFTWARE DEVELOPMENT ORGANISATION

 The tester job is to reveal defects, find weak points, inconsistent behavior and circumstances where the software doesn’t work as expected.

 The main function of a tester is to plan, execute, record and analyze test. They don’t debug the software.

 When defects are detected during testing, software should be returned to the developers who locate the defect and repair the code. The tester may cooperate with code developers and also need to work along with the requirements engineers to ensure that requirements are testable and to plan for system and acceptance test.

(14)

14

 Test managers were need to cooperate with project managers in order to develop test plan, and with upper management to provide input for the development and maintenance of organizational testing standards, policies and goals

 Testers also need to cooperate with software quality assurance staff and software engineering group members

DEFECT CLASSES AND DEFECT REPOSITORY

DEFECTS

Origins of Defects

 Defects have determined effects on software users, and software engineers work very hard to produce high-quality software with a low number of defects.

 But even under the best of development circumstances errors are made, resulting in defects beings injected in the software during the phase of the software

1. Lack of Education :- The software engineer did not have the proper educational background to prepare the software artifacts. They did not understand how to do something. For example, a software engineer who did not understand the precedence order of operators in a particular programming language could inject a defect in an equation that uses the operators for calculation.

2. Poor Communication:- The software engineer was not informed about something by a colleague. For example , if engineer 1 and engineer 2 working on interfacing modules , and engineer 1 doesn’t inform engineer 2 that no error checking code will appear in the interfacing module he is developing , engineer 2 might have an incorrect assumption relating to the presence /absence of an error check and defects will result.

(15)

15

3. Oversight :- The software engineer omitted to do something .For example a software engineer might omit an initialization statement

4. Transcription:- The software engineer knows what to do, but makes a mistake in doing it. A simple example is a variable name being misspelled when entering the code.

5. Immature Process:- The process used by the software engineer misdirected the action. For example, a development process that did not allow sufficient time for a detailed specification to be developed and reviewed could lead to specification defects.

 Tester as doctors need to have knowledge about possible defects in order to develop defect hypotheses, they use the hypotheses to;

 Design test cases  Design test procedure  Assemble test sets

 Select the testing levels appropriate for the tests  Evaluate the results of the test.

 A successful testing experiment will prove the hypothesis is true that is, the hypothesized defect was present. Then the software can be repaired.

DEFECT CLASSES, THE DEFECT REPOSITORY, AND TEST DESIGN

 Defect can be classified in many ways. It is important for an organization to adapt a single classification scheme and apply it to projects.

 No matter which classification scheme is selected, some defects will fit into more than one class or category.

 Because of this problem, developers, testers, and SQA staff should try to be as consistent as possible when recording defect data.

 Execution-based testing strategies should be selected that have the strongest possibility of defecting particular types of defects.

Defect classes

Defect classes are classified into four types namely 1. Requirement/specification defect class 2. Design defect class

3. Coding defect class 4. Testing defect class

(16)

16

REQUIREMENT/SPECIFICATION DEFECT CLASS

The beginning of software life cycle is critical for ensuring high quality in the software being developed. Defects injects in early phases can persist and be very difficult to remove in later phases. Since many requirements are written in natural language representation , there are very often occurrences of ambiguous, contradictory , unclear, redundant , and imprecise requirements.

Some requirement defects are

1. Functional description defects- the overall description of what the product does, and how it should behave is incorrect, ambiguous, and/or incomplete.

(17)

17

2. Feature defects- Features may be described as distinguishing characteristics of a software component or system .Features refers to functional aspects of software that map to functional requirement described by the user and the client, it also maps quality such as performance and reliability. Feature defects are mainly due to features description that are missing, incorrect, incomplete or superfluous.,

3. Failure interaction defects- these are due to an incorrect description of how the features should interact.

4. Interface description defects- Description of how the target software is to interface with external software, hardware and users. For detecting many functional description defects, black box testing techniques, which are based on functional specification of the software, offer the best approach. Black Box testing techniques such as equivalence class partitioning, boundary value analysis, state transition testing, and cause and effect graphing, which are useful defecting functional type of defects.

BlackBox based tests can be planned at the unit, integration, system and acceptance levels to detect requirements/specification defects.

DESIGN DEFECTS

Design defects occur when system components, interactions between system components, interaction between the components and outside software /hardware, or users are incorrectly designed.

Some design defects are

1. Algorithms and processing defects- these occur when the processing steps in the algorithm as described by the pseudo code are incorrect. Eg:- the pseudo code may contain a calculation that is incorrectly specified, or the processing steps in the algorithm written in pseudo code language may not be in the correct order.

2. Control logic and sequence defects- Control defect occur when logic flow in the pseudo code is not correct. For example , branching to soon, branching to late, or use of an incorrect branching, condition. Other examples in this subclasses are unreachable pseudo code elements, improper nesting, improper procedure or function calls. Logic defects usually relate to incorrect use of logic operators, such as <,>

3. Data Defects- These are associated with incorrect design of data structures. For example a record may be lacking a field, an incorrect type is assigned to a variable or field in a

(18)

18

record, an array may not have the proper number of elements assigned, or storage space may be allocated incorrectly.

4. Module Interface Description Defects- This include in correct, missing, and /or inconsistent defects of parameter types.

5. Functional Description Defects- This includes incorrect missing, and/ or unclear defects of design elements. Eg the design may not properly describe the correct functionality of a module.

6. External Interface Description defects- These are derive from in correct design description for interfaces with COTS components, external software systems, databases and hardware devices(eg:-I/O devices).Other example are user interface description defects where there are missing or improper commands, improper sequence of commands, lack of proper message, and/or lack of feedback message for the users.

CODING DEFECTS

Coding Defects are derived from error in implementing the code, coding defects are closely related to design classes especially if pseudo code has been used for detailed design. Some coding defects come from a failure to understand programming language constructs, and miscommunication with the designer.

1. Algorithmic and processing Defects- Adding levels of programming detail to design, code-related algorithmic and processing defects now include unchecked overflow and underflow conditions , comparing inappropriate data types, converting one data type to another, incorrect ordering of arithmetic operators , misuse or omission of parenthesis , precision loss an incorrect use of signs.

2. Control logic and sequence Defects- On the coding level these would include incorrect expression of case statements incorrect iterations of loops and missing paths.

3. Typographical Defects- These are syntax errors. , for example incorrect spelling of variable name, that are usually detected by compiler, self reviews, or peer reviews

4. Initialization Defects- These occur when initialization statements are omitted or are incorrect this may occur because of misunderstandings or lack of communication between programmers and / or programmers and designers, carelessness of the programming environment.

5. Data Flow Defects- There are certain reasonable operational sequences that data should flow through. For example a variable should be initialized, before it is used in a calculation or a condition. It should not be initialized twice before there is an intermediate use. A variable should not be disregarded before it is used.

(19)

19

6. Data Defects- These are indicated by incorrect implementation of data structures. For example , the programmer may omit a filed in a record, an incorrect type or access is assigned to a file, an array may not be allocated the proper number of elements.

7. Module Interface Defects- As in the case of module design elements, interface defects in the code may be due to using incorrect or inconsistent parameter type an incorrect number of parameters.

8. Code Documentation Defects – When the documentation does not reflect what the programs actually does, or is incomplete or ambiguous, this is called a code documentation defect.

9. External hardware, software interface defects – These defects arise form problems related to system calls, links to databases, input/output sequences, memory usage, resource usage, interrupts and exception handling , data exchange with hardware, protocols formats, interface with build files, and timing sequences

TESTING DEFECTS

Defects are not confined to code and its related artifacts. Test plans, test cases, test harnesses, and test procedures can also contain defects. Defects in test plans are best detected using review techniques.

1. Test Harness Defect:-

In order to test software, especially at the unit and integration levels, auxiliary code must be developed. This is called the test harness or scaf–folding code. Test harness code should be carefully designed, implements and testes since it a work product and much of this code can be reused when the new release of the software are developed.

2. Test Case Design and Test Procedure Defects:-

These would encompass incorrect , incomplete, missing , inappropriate test cases, and test procedures. These defects are again best detected in test plan reviews. Defects are revealed during the testing process itself by means of a careful analysis of test conditions and test results. Repairs will then have to be made.

DEFECT EXAMPLES:- The Coin Problem

The following example illustrates some instance of the defect classes , a simple specification , a detailed design description and the resulting code are shown and defects in

(20)

20

each are described. These defects could be injected via one or more defect source already discussed

A spec below shows the sample informal specification for a simple program that calculates the total monetary value of a set of coins. The program could be a component of an incentive cash register system to support retail store clerks. This simple example shows requirements/ specifications defects, functional descriptions defects and interface description defects

Functional Description defects arise because the functional description is ambiguous and incomplete .It does not state that the input, number_of_coins, and the output, number of_ dollars and number_of_cents, should all have values of zero or greater. The number _of_coins cannot be negative and the values in dollars and cents cannot be negative in the real world domain.

A precondition is a condition that must be true in order for a software component to operate properly.

In this case a useful precondition would be one that states for example , Number_of_coins >=0

A Post condition is a condition that must be true when a software component completes its operation properly.

A useful post condition would be :-

Number_of _dollars, number_of_cents >=0

Interface Description defects relates to the ambiguous and incomplete description of user software interaction. It is not clear from the specification how the user interacts with the

(21)

21

program to provide input and how the output is to be reported. Because of ambiguities in the user interaction description the software may be difficult to use.

Control, Logic and Sequencing Defects:-

The defect in this subclass arises from an incorrect “while” loop condition(should be less than or equal to six)

Algorithmic and Processing Defects:-

These arise from the lack of error checks for incorrect and /or invalid inputs, lack of path where users can correct erroneous inputs, lack of a path for recovery from input errors. The lack of an error check could be counted as functional design defects since the design does not adequately describe the proper functionality for the program .

(22)

22

This defect relates to an incorrect value for one of the elements of the integer array, coin_values, which should read 1,5,10,25,50,100

External Interface Description Defects:-

These are defects arising from the absence of input messages or prompts that introduced the program to the user and request inputs. The user has no way of knowing in which order the number of coins for each denomination must be input, and when to stop inputting values. There is absence of help message and feedback for user if he wishes to change an input or learn the correct format and order for inputting the number of coins.

The control and logic design defects are best addressed by white box based tests,(condition/Branch testing, loop testing)

The program below is a C like programming language. Without effectives reviews the specification and design defects could propagate to the code. Here additional defects have introduced in the coding phase.

(23)

23

These include the loop variable increment step which is out of the scope of the loop. Note that incorrect loop condition(i<6) is carried over from design and should be counted as a design defects

Algorithmic and Processing Defects:-

The division operator may cause problems if negative values are divided, although this problem could be eliminated with an input check.

Data Flow Defects:-

The variable total_coin_value is not initialized. It is used before it is defined.

Data Defects:-

The error in initializing the array coin_values is carried over form design and should be counted as design defect.

External Hardware , Software Interface Defects:-

The call to the external function “scanf” is incorrect. The address of the variable must be provided (&number_of_coins)

Code Documentation Defects:-

The documentation that accompanies this code is incomplete and ambiguous. It reflects the deficiencies in the external interface description and other defects that occurred during the specification and design. Vital information is missing for anyone who will need to repair, maintain or reuse this code.

The control, logic and sequence, data flow defects found in this sample could be detected by combination of white and black box testing techniques.

Black Box tests may work well to reveal the algorithmic and data defects. the code documentation defects require a code review for detection. The external software interface defects would probably be caught by a good complier.

Poor quality of this small program is due to defects injected during several of the life cycle phases with probable causes ranging from lack of education, a poor process, to oversight on the part of the designers and developers.

(24)

24

Catalog defects and try to eliminate them by improving education, training, communication and process

DEVELOPER/TESTER SUPPORT FOR DEVELOPING A DEFECT REPOSITORY It is important if you are a member of a test organization to illustrate to management and colleagues the benefit of developing a defect repository to store defect information. Software Engineers and Test Specialists we should follow the example of engineers in other disciplines who realized the usefulness of defect data. Defect monitoring should continue for each ongoing projects. The distribution of defects will change as you make changes in your processes. The defect data is useful for test planning, a TMM level 2 maturity goals.

It helps you to select applicable testing techniques, design and the test cases you need and allocate the amount of resources you will need to devote to detecting and removing these defects.

Figure: Defect Repository

A defect repository can help to support achievement and continuous implementation of several TMM maturity goals including controlling and monitoring of test, software quality evaluation and control, test measurement, and test process improvement.

(25)

25

Testing Axioms/properties:-

1. Applicability Property

“For every program that exists an adequate test set .” what this axiom means is that for all program we should be able to design an adequate test set that properly test it. The test set may be very large so the tester will want to select represent able points of the specification domain to test it. If we test all represent able points that are called an Exhaustive test set.

2. Non Exhaustive Applicability Property

“For a program P and test set T, P is adequately tested by the test set T, and T is not an exhaustive test set.” To paraphrase, a tester does not need an exhaustive test set in order to adequately test a program.

3. Monotonicity Property

“ If a test set T is adequate for a program P, and if T is equal to , or a subset of T’ , then T’ is adequate for program P”

4. Inadequate Empty Set

“An empty test set is not an adequate for any program “, if a program is not tested at all, a tester cannot claim it has been adequately tested !

5. Antiextensionality Property:

“There are program P and Q such that P is equivalent to Q and T is adequate for P, but T is not adequate for Q “ we can interpret this axiom as saying that just because two program are semantically equivalent(they may perform the same function) does not mean we should test them the same way. Their implementation (code structure) may be very different.

6. General Multiple Change Property

“There are program P and Q that have the same shape, and there is a test set T such that T is adequate for P, but is not for Q”. The concept of shape to express a syntactic equivalence. The two programs are the same shape, if one can be transformed into other by applying the set of rules shown below any number of times:

(i) replace relational operator r1 in a predicate with relational operator r2;

(ii) replace constant c1 in a predicate of an assignment statement with constant c2;

(iii) replace arithmetic operator a1 in an assignment statement with arithmetic operator a2.

7. Antidecomposition Property

“ There is a program P and a component Q such that T is adequate for P. T’ is the set of vectors of values that variables can assume on entrance to Q for some t in T, and T’ is not adequate for Q”. This axiom states that although an encompassing program has been

(26)

26

adequately tested, it does not follow that each of its components parts has been properly tested. Implications for this axiom are:-

1. A routine that has been adequately tested in one environment may not have been adequately tested to work in another environment being the enclosing program .

2. Although we may think of P, enclosing program , as being more complex than Q it may not be, Q may be more semantically complex, it may lie on an unexecutable path of P, and thus would have the null set, as its test set, which would violate axiom 4.

8. Anticomposition Property

“ There are Program P and Q , and test set T such that T is adequate for P, and the set of vectors of values that variable can assume on entrance to Q for input in T is adequate for Q, but T is not adequate for P;Q” it states that adequately testing each individual program component in isolation does not necessarily mean that we have adequately tested the entire program. When we integrate two separate program components, there are interactions that cannot arise in the isolated components.

9. Renaming Property

“If P is renaming of Q, then T is adequate for P only if T is adequate for Q. A program P is a renaming of Q if P is identical to Q expect for the fact that all instance of an identifier, let us say b, where “b” does not occur in Q, or if there is a set of such renamed identifiers.”

10. Complexity Property

“For every n, there is a program P such that P is adequately tested by a size n test set , but not by any size n-1 test set “ this means that for every program, there are other programs that require more testing.

11. Statement Coverage Property

“If the test set T is adequate for P, then T causes every executable statement of P to be executed. ”. Ensuring that their test set executed all statements in a program is a minimum coverage goal for a tester. A tester soon realizes that if some portion of the program has never been executed, then that portion could contain defects: it could be totally in error and be working improperly. Testing would not be able to detect any defects in this portion of the code. This axiom implies that a tester needs to be able to determine which statement of the program statements is executable.

TEST MATURITY MODEL (TMM) What is Test Maturity Model (TMM) in Software Testing?

Test Maturity Model is based on the Capability Maturity Model (CMM), and it was first developed by the Illinois Institute of Technology. It is a detailed model for test process

(27)

27

improvement. It can be complemented with any process improvement model or can be used as a STAND ALONE model.

TMM has major two components

1. A set of 5 levels that define testing capability 2. An Assessment Model

Different Levels of Maturity Model

The five levels of the TMM helps the organization to determine the maturity of its process and to identify the next improvement steps that are essential to achieving a higher level of test maturity.

TMM Levels Goals An objective of TMM levels

Level 1: Initial Software successfully should run

 At this level, no process areas are identified

 An objective of testing is to ensure that software is working fine

 This level lacks resources, tools, and trained staff

 No Quality Assurance checks before software delivery

Level 2: Defined Develop debugging goals and testing and policies

 This level distinguish testing from debugging & they are considered distinct activities

 Testing phase comes after coding

 A primary goal of testing is to show software meets specification

 Basic testing methods and techniques are in place

(28)

28

 Test organization exists

 Testing recognized as a professional activity

Level 4: Management and Measurement

Establish a test measurement program

 Testing is a measured and quantified process

 Review at all development phases are recognized as tests

 For reuse and Regression Testing, test cases are gathered and recorded in a test database

 Defects are logged and given severity levels

Level 5: Optimized Test process optimization

 Testing is managed and defined

 Testing effectiveness and costs can be monitored

 Testing can be fine-tuned and continuously improved

 Quality control and Defect prevention are practiced

 Process reuse is practiced

 Test related metrics also have tool support

 Tools provide support for Test Case design and defect collection

Difference between CMM & TMM

CMM TMM

 CMM or Capability Maturity Model is for judging the maturity of the software processes of an organization

 TMM or Test Maturity Model describes the process of testing and is related to monitoring the quality of software testing model

Conclusion:

Software maintenance is expensive and time-consuming when defects are identified after project delivery. Consequently, while detecting defects is important, it is also important that software makes minimum errors during the development phase. A standard testing process like TMM can help to achieve this. TMM (Testing Maturity Model) that is specially designed to address testing can help the organization to improve the maturity of their testing practices.

(29)

29

QUESTION BANK UNIT-I-PART-A 1. Define software Testing.

2. List the basic elements of all engineering disciplines. 3. Define software development process.

4. What is test case? What does it contains? 5. Differentiate verification and validation. 6. Differentiate Error, Fault and Failure.

7. Differentiate the process of testing and debugging. 8. Define software quality.

9. What is the basic objective of software testing? What is its scope? 10. List the defect classes.

11. Name the different levels in Testing Maturity Model. Also mention the key activity in each of the levels

12. Give an example for design defect and testing defect.

13. List the defect classes. Give an example for each of the class. 14. Define the term defect.

15. Write the role of process in software quality. 16. Define test harness.

17. List the members of the critical groups in a testing process. 18. Write short notes on Test, Test Set, and Test Suite.

19. Define Test Oracle. 20. Define Test Bed.

21. Define Software Quality. 22. List the Quality Attributes.

23. List the sources of Defects or Origins of defects. Or list the classification of defect. PART-B

1. Explain the various software testing principles. 2. Define correctness, reliability, integrity, interoperability. 3. Define defect and write the various origins of defects. 4. Explain the concepts of defects with the coin problem

5. Explain the process of defect repository development and the role of developer in it. 6. Discuss the information in defect repository 7. Explain the tester’s role in software development organization 8. Compare and contrast errors, faults and failures using suitable examples 9. Explain the different phases in tester’s mental model 10. With suitable examples explain the various types of defects and their effects 11. Explain the role of tester in software development organization. 12. Explain in detail processing and monitoring of the defects 13. List and discuss the components of software development process 14. Explain Developer / Tester support for developing a defect repository. 15. Explain Defect Classes, Defect Repository, and Test Design. 16. Give Overview of Testing Maturity Model (TMM) and test related activities to be done in

(30)

References

Related documents

Liver lycopene content increased with increasing lyco- pene supplementation levels, the highest lycopene concentrations in liver were in hens fed the highest levels of lycopene –

The cell esds are taken into account individually in the estimation of esds in distances, angles and torsion angles; correlations between esds in cell parameters are only used

4 The effect of treatment with C60 fullerene, Dox, and C60 + Dox complex on the cytotoxic activity of mononuclear splenic leukocytes towards autologic tumor cells in LLC-bearing

We now state the main result of this section, which indicates that there is a unique allocation rule on the class of multi-choice forest games that satisfies component

The PIC detector for the ideal received signal sequence, the L-MMSE estimator for the transmitted symbol sequence and the modified decision rule together constitute the

A smart home means the home equipped with smart devices [1]. A home network transfers information between devices. Residential gateway connects a smart home to the GA

Moreover, despite that the dually disadvantaged group of indigenous women displayed lower obesity than the dually advantaged mestizo men; our findings showed that they still had

the college of engineering was inaugurated in 1980 and includes five academic departments offering seven Bachelor’s degrees: namely architectural engineering, chemical