NEW TRENDS IN SOFTWARE TESTING
The methods presented are generic and can be applied to testing any type of computer software. But, to make the examples familiar and usable by mo0st people, they are based on simple programs such as Calculator, Notepad, and WordPad included with Windows 95/98 and Windows NT/2000.
Even if u don’t have a PC running Windows, you will likely have similar programs available on your computer that you can easily adapt to the text. Be creative! Creativity is one trait of a good software test
The work of software testing is divided into four basic areas, and you see the techniques used for each one:
“Examining the Specifications”, teach you how to find Bugs by carefully inspecting the documentation that describes what the software is intended to do.
“Testing the software with Blinders On,” teaches you the techniques to use for testing software without having access to the code or even knowing how to program. This is the most common type of testing.
“Examining the code,” shows you how to perform detailed analysis of the program’s source code to find bugs. You’ll learn that you don’t have to be an expert programmer to use these techniques.
“Testing the software with X-Ray Glasses,” teaches you how you can improve your testing by leveraging information you gain by reviewing the code or being able to see it execute while you run your tests.
INFAMOUS SOFTWARE ERROR CASE STUDIES
Its easy to take software for granted and not really appreciate how much it has infiltrated our daily lives. Back in 1947, the Mark II computer required legions of programmers to constantly maintain it. The average person never conceived of someday having his own computer in his home. Now there’s free software CD-ROMs attached to cereal boxes and more software in our kid’s video games than on the space shuttle. What once were techie gadgets, such as pagers and cell phones, have become commonplace. Most of us now can’t go a day without logging on to the internet and checking our email. We rely on overnight packages, long-distance phone service, and cutting-edge medical treatments.
Software is everywhere. However, it’s written by people-so it’s perfect, as the following examples show.
Disney’s Lion King, 1994-1995
In the fall of 1994, the Disney Company released its first multimedia CD-ROMs game for children, The Lion King Animated Storybook. Although many other companies had been marketing children’s programs for years, this was Disney’s first venture into the market and it was highly promoted and advertised. Sales were huge. It was “the game to buy” for children that holiday season. What happened, however, was a huge debacle. On December 26, day after Christmas, Disney’s customer support phones began to ring, and ring, and ring. Soon the phone support technicians were swamped with calls from angry parents with crying children who couldn’t get the software to work. Numerous stories appeared in newspapers and on TV news. It turns out that Disney failed to properly test the software on the many different PC models available on the market. The software worked on few systems-likely the ones that the Disney programmers used to create the game- but not on the most common systems that the general public had.
Intel Pentium Floating-Point Division Bug, 1994
Enter the following equation into your PC’s calculator:
(4195835 / 3145727) * 3145727 - 4195835
If the answer is zero, your computer is just fine. If you get anything else, you have an old Intel Pentium CPU with a floating-point division bug- a software bug burned into a computer chip and reproduced over and over in the manufacturing process.
On October 30, 1994, Dr.Thomas R.Nicely of Lynchburg (Virginia) College traced an unexpected result from one of his experiments to an incorrect answer by a division problem solved on his Pentium PC. He posted his find on the incorrect and soon afterward a firestorm erupted as numerous other people duplicated his problem and found additional situations that resulted extremely math-intensive, scientific, and engineering calculations. Most people would never encounter them doing their taxes or running their business.
What makes this story notable isn’t the bug, but the way Intel handled the situations:
Their software test engineers had found the problem while performing their own tests before the chip was released. Intel’s management decided that the problem wasn’t severe enough or likely to warrant fixing it, or even publicizing it.
Once the bug was found, Intel attempted to diminish its perceived severity through press releases and public statements
When pressured ,Intel offered to replace the faulty chips, but only if a user could prove that he was affected by the bug.
There was a public outcry. Internet newsgroups were jammed with irate customers demanding that Intel fix the problem. News stories painted the company as uncaring and incredulous. In the end, Intel apologized for the way it handled the bug and took a charge of over $400 million to cover the costs of replacing bad chips. Intel now reports known problems on its Web site and carefully monitors customer feedback on internet newsgroups.
Software testing is a crucial step in determining whether a software application is viable, ready for market and is free of bugs. No software will be completely free of glitches but thorough software testing can and will make sure that it is as error-free as humanly possible. There are two broad types of software testing: functional and performance. Each has its merits and both are important. Functional Software Testing
Functional software testing takes place during the development phase of the given application, usually towards the completion of the program (though there are some who believe that testing should be ongoing from early on in the development process, with each component of the software being tested each step of the way). This form of testing makes sure that the individual components of the software are performing as they are designed to do. It makes sure that the software is working properly both on the front end (user commands and screens, searches and other data manipulation, integration with other programs, etc.) as well as the back end (software security, how well the upgrade function performs, etc.).
Performance Software Testing Performance software testing is perhaps the most important form of testing as it is the way in which unforeseen bugs in the application can be detected and eliminated. Performance testing can be broken down into four basic types: classic, load, stress, and volume. The classic testing involves merely using the software for the functions it was designed to do and measuring things like response rates and overall functionality. This form of testing can be done manually by programmers or automated using testing software. Load testing gauges how efficiently the application performs when its functions are tested with varying workloads. Stress testing looks to see how well the software reacts and compensates when resources are low. Volume testing tests the functional limits of the application by increasing the amount of data thrown at it until it can no longer cope with the flow. An additional form of performance software testing is regression testing which checks to see how software applications which have previously been successfully tested react and adapt to new enhancements or modifications. This form of testing is most often automated.
Testing Options There are a number of testing options available. Most of them are not inexpensive but, if they help debug a valuable program, they could be worth the expense. There are automated and software-based testing tools which can perform many of the functions discussed in the previous two sections; they can also provide hosted tested facilities, which provide the hardware and software (and even, if necessary, the labor) for test applications. Usually, hosted facilities are good for load testing of new software applications but they can also perform the other forms of testing as well.
Software Testing Types
· COMPATIBILITY TESTING. Testing to ensure compatibility of an application or Web site with different browsers, OSs, and hardware platforms. Compatibility testing can be performed manually or can be driven by an automated functional or regression test suite.
· CONFORMANCE TESTING. Verifying implementation conformance to industry standards. Producing tests for the behavior of an implementation to be sure it provides the portability, interoperability, and/or compatibility a standard defines.
· FUNCTIONAL TESTING. Validating an application or Web site conforms to its specifications and correctly performs all its required functions. This entails a series of tests which perform a feature by feature validation of behavior, using a wide range of normal and erroneous input data. This can involve testing of the product's user interface, APIs, database management, security, installation, networking; etc testing can be performed on an automated or manual basis using black box or white box methodologies.
· LOAD TESTING. Load testing is a generic term covering Performance Testing and Stress Testing.
· PERFORMANCE TESTING. Performance testing can be applied to understand your application or WWW site's scalability, or to benchmark the performance in an environment of third party products such as servers and middleware for potential purchase. This sort of testing is particularly useful to identify performance bottlenecks in high use applications. Performance testing generally involves an automated test suite as this allows easy simulation of a variety of normal, peak, and exceptional load conditions.
· REGRESSION TESTING. Similar in scope to a functional test, a regression test allows a consistent, repeatable validation of each new release of a product or Web site. Such testing ensures reported product defects have been corrected for each new release and that no new quality problems were introduced in the maintenance process. Though regression testing can be performed manually an automated test suite is often used to reduce the time and resources needed to perform the required testing.
· SMOKE TESTING. A quick-and-dirty test that the major functions of a piece of software work without bothering with finer details. Originated in the hardware testing practice of turning on a new piece of hardware for the first time and considering it a success if it does not catch on fire.
· STRESS TESTING. Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements to determine the load under which it fails and how. A graceful degradation under load leading to non-catastrophic failure is the desired result. Often Stress Testing is performed using the same process as Performance Testing but employing a very high level of simulated load.
· UNIT TESTING. Functional and reliability testing in an Engineering environment. Producing tests for the behavior of components of a product to ensure their correct behavior prior to system integration.
There are number of automation testing tools available in market. Mercury Interactive Pvt. Ltd is one of the leading companies in providing software testing tools. Automation and tools, with the help of this it makes you able to run 10,100 test cases 1000 times faster. There are following benefits of automation testing.
Efficiency: while your running test cases, you can also do test planning and think about new tests. It reduces time.
Accuracy and Precision: In this your test tool will perform test and check the results perfectly each and every time.
Relentlessness: Test tools and Automation never tire or give up they work as batteries.
Before going to test any software it is necessary to design Test Plan . Generaaly test plan is designed with the help of specifications available with product and by doing monkey testing or smoke testing.
The Goal of Test Planning:
The ultimate goal of the test planning process is communicating (not recording) the software test team’s intent, its expectations, and its understanding of the testing that’s to be performed. It includes :
People, Places, and Things
What Will and Won’t Be Tested
Metrics and Static’s
Risks and Issues
Software testing companies
· Assured Business Systems Inc.
· CSST Technologies, Inc.
· G&G Technologies, Inc.
· Iplex Technologies
· NTS - Hardware & Software Testing Labs
Software Testing – Ron Patton
It is concluded that Software testing is a crucial step in determining whether a software application is viable, ready for market and is free of bugs. No software will be completely free of glitches but thorough software testing can and will make sure that it is as error-free as humanly possible.
Sunday, June 29, 2008
NEW TRENDS IN SOFTWARE TESTING
Posted by Piya at 7:28 AM