Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
1Activity
0 of .
Results for:
No results containing your search query
P. 1
Software Testing Fundamentals

Software Testing Fundamentals

Ratings: (0)|Views: 44|Likes:
Published by vickram_chandu9526

More info:

Categories:Types, Speeches
Published by: vickram_chandu9526 on Nov 17, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/17/2011

pdf

text

original

 
Software Testing Fundamentals—Concepts, Roles, and Terminology 
SOFTWARE TESTING—WHAT, WHY, AND WHO
 
WHAT IS SOFTWARE TESTING? 
Software testing is a process of verifying and validating that a software application or program1. Meets the business and technical requirements that guided its design and development, and2. Works as expected.Software testing also identifies important defects, flaws, or errors in the application code that must be fixed.The modifier “important” in the previous sentence is, well, important because defects must be categorizedby severity(more on this later).During test planning we decide what an important defect is by reviewing the requirements and designdocuments with an eye towards answering the question “Important to whom?” Generally speaking, animportant defect is one thatfrom the customer’s perspective affects the usability or functionality of the application. Using colors for atraffic lighting scheme in a desktop dashboard may be a no-brainer during requirements definition and easilyimplemented during development but in fact may not be entirely workable if during testing we discover thatthe primary business sponsor is color blind. Suddenly, it becomes an important defect. (About 8% of menand .4% of women have some form of color blindness.)The quality assurance aspect of software development—documenting the degree to which the developersfollowed corporate standard processes or best practices—is not addressed in this paper because assuringquality is not a responsibility of the testing team. The testing team cannot improve quality; they can onlymeasure it, although it can be argued that doing things like designing tests before coding begins willimprove quality because the coders can then use that information while thinking about their designs andduring coding and debugging.
Software testing has three main purposes: verification, validation, and defect finding.
 
The verification process confirms that the software meets its technical specifications. A “specification” is adescription of a function in terms of a measurable output value given a specific input value under specificpreconditions. A simple specification may be along the line of “a SQL query retrieving data for a singleaccount against the multi-month account-summary table must return these eight fields ordered by monthwithin 3 seconds of submission.” 
The validation process confirms that the software meets the business requirements. A simple example of abusiness requirement is “After choosing a branch office name, information about the branch’s customeraccount managers will appear in a new window. The window will present manager identification andsummary information about each manager’s customer base: .” Other requirementsprovide details on how the data will be summarized, formatted and displayed.
A defect is a variance between the expected and actual result. The defect’s ultimate source may be tracedto a fault introduced in the specification, design, or development (coding) phases.
WHY DO SOFTWARE TESTING? 
  “A clever person solves a problem. A wise person avoids it." -
 Albert Einstein
 Why test software? “To find the bugs!” is the instinctive response and many people, developers andprogrammers included, think that that’s what debugging during development and code reviews is for, soformal testing is redundant at best. But a “bug” is really a problem in the code; software testing is focusedon finding defects in the final product.
Here are some important defects that better testing would have found.
 
In February 2003 the U.S. Treasury Department mailed 50,000 Social Security checks without abeneficiary name. A spokesperson said that the missing names were due to a software programmaintenance error.
In June 1996 the first flight of the European Space Agency's Ariane 5 rocket failed shortly after launching,resulting in an uninsured loss of $500,000,000. The disaster was traced to the lack of exception handling fora floating-point error when a 64-bit integer was converted to a 16-bit signed integer.
Software testing answers questions that development testing and code reviews can’t.
 
Does it really work as expected?
Does it meet the users’ requirements?
Is it what the users expect?
Do the users like it?
Is it compatible with our other systems?
How does it perform?
How does it scale when more users are added?
 
Which areas need more work?
Is it ready for release?
What can we do with the answers to these questions? 
 
Save time and money by identifying defects early
Avoid or reduce development downtime
Provide better customer service by building a better application
Know that we’ve satisfied our users’ requirements
Build a list of desired modifications and enhancements for later versions
Identify and catalog reusable modules and components
Identify areas where programmers and developers need training
WHAT DO WE TEST? 
 First, test what’s important. Focus on the core functionality—the parts that are critical or popular—beforelooking at the ‘nice to have’ features. Concentrate on the application’s capabilities in common usagesituations before going onto unlikely situations. For example, if the application retrieves data and performance is important, testreasonable queries with a normal load on the server before going on to unlikely ones at peak usage times.It’s worth saying again: focus on what’s important. Good business requirements will tell you what’simportant.The value of software testing is that it goes far beyond testing the underlying code. It also examines thefunctional behavior of the application. Behavior is a function of the code, but it doesn’t always follow that if the behavior is “bad” then the code is bad. It’s entirely possible that the code is solid but the requirements were inaccurately orincompletely collected and communicated. It’s entirely possible that the application can be doing exactlywhat we’retelling it to do but we’re not telling it to do the right thing.A comprehensive testing regime examines all components associated with the application. Even more,testing provides an opportunity to validate and verify things like the assumptions that went into therequirements, the appropriateness of the systems that the application is to run on, and the manuals anddocumentation that accompany the application. More likely though, unless your organization does true “software engineering” (think of Lockheed- Martin, IBM, or SAS Institute) the focus will be on thefunctionality and reliability of application itself.
Testing can involve some or all of the following factors. The more, the better.
 
Business requirements
Functional design requirements
Technical design requirements
Regulatory requirements
Programmer code
Systems administration standards and restrictions
Corporate standards
Professional or trade association best practices
Hardware configuration
Cultural issues and language differences
WHO DOES THE TESTING? 
 Software testing is not a one person job. It takes a team, but the team may be larger or smaller dependingon the size and complexity of the application being tested. The programmer(s) who wrote the applicationshould have a reduced role in the testing if possible. The concern here is that they’re already so intimatelyinvolved with the product and “know” that it works that they may not be able to take an unbiased look atthe results of their labors.Testers must be cautious, curious, critical but non-judgmental, and good communicators. One part of their job is to ask questions that the developers might find not be able to ask themselves or are awkward,irritating, insulting or eventhreatening to the developers.
How well does it work?
What does it mean to you that “it works”?
How do you know it works? What evidence do you have?
In what ways could it seem to work but still have something wrong?
In what ways could it seem to not work but really be working?
What might cause it to not to work well?A good developer does not necessarily make a good tester and vice versa, but testers and developers doshare at least one major trait—they itch to get their hands on the keyboard. As laudable as this may be,being in a hurry to start can cause important design work to be glossed over and so special, subtle
 
situations might be missed that would otherwise be identified in planning. Like code reviews, test designreviews are a good sanity check and well worth the time and effort.Testers are the only IT people who will use the system as heavily an expert user on the business side. Usertesting almost invariably recruits too many novice business users because they’re available and theapplication must be usable by them. The problem is that novices don’t have the business experience thatthe expert users have and might not recognize that something is wrong. Testers from IT must find thedefects that only the expert users will find because the experts may not report problems if they’ve learnedthat it's not worth their time or trouble.
THE V-MODEL OF SOFTWARE TESTING 
 Software testing is too important to leave to the end of the project, and the V-Model of testing incorporatestesting into the entire software development life cycle. In a diagram of the V-Model, the V proceeds downand then up, fromleft to right depicting the basic sequence of development and testing activities. The model highlights theexistence of different levels of testing and depicts the way each relates to a different development phase.Like any model, the V-Model has detractors and arguably has deficiencies and alternatives but it clearlyillustrates that testing can and should start at the very beginning of the project. (See Goldsmith for asummary of the pros and consand an alternative. Marrik’s articles provide criticism and an alternative.) In the requirements gatheringstage the business requirements can verify and validate the business case used to justify the project. Thebusiness requirements are also used to guide the user acceptance testing. The model illustrates how eachsubsequent phaseshould verify and validate work done in the previous phase, and how work done during development is usedto guide the individual testing phases. This interconnectedness lets us identify important errors, omissions,and other problems before they can do serious harm. Application testing begins with Unit Testing, and in thesection titled “Types of Tests” we will discuss each of these test phases in more detail.
THE TEST PLAN 
 The test plan is a mandatory document. You can’t test without one. For simple, straight-forward projects theplan doesn’t have to be elaborate but it must address certain items. As identified by the “American NationalStandards Institute and Institute for Electrical and Electronic Engineers Standard 829/1983 for SoftwareTest Documentation”, the following components should be covered in a software test plan.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->