Software Testing

FIELDS OF STUDY

Software Engineering; Applications; Computer Engineering

ABSTRACT

Software testing ensures that software and applications perform well and meet users' needs. It is intended to expose problems such as defects (often referred to as bugs) or inefficient design. Software testing allows project managers to make informed decisions about moving forward or making changes on a product before releasing it.

PRINICIPAL TERMS

THE IMPORTANCE OF SOFTWARE TESTING

Software testing contributes to the development of programs and applications (apps) by detecting gaps between the software's stated requirements and its actual performance. This testing informs software engineers about any poor functionality, missing requirements, errors, and defects. Originally, programmers tested software at the end of the development process. However, the popularity of the graphical user interface (GUI) and other more user-friendly software highlighted the need for more thorough testing. Consumers expect programs to work properly from the start. Therefore, programmers started taking a more careful and systematic approach. Soon, testing throughout the development process became the industry standard.

Manufacturers value software testing because it prevents flawed products from entering the market. Delivering software or launching an application only to have customers discover bugs can have both short- and long-term negative effects. Poorly tested software can lead to declining sales, damage to the company's brand, and possibly even harm to a customer's business operations. In addition, testing can save time and money. It is much easier to correct errors during the development process than after a release. Without testing, manufacturers risk lost opportunities, as users who have a bad experience often switch to a competing product.

SOFTWARE TESTING METHODS

“Software testing” is broad term describing a variety of specific methods. Programmers test different aspects of applications, including design, response to inputs, usability, stability, and results. The type of test they choose is based on factors such as the programming language and what they need to learn.

Agile software development is a development process that emphasizes teamwork, customer involvement, and user testing of portions of the system. Agile practitioners follow the views of the “Agile Manifesto” (2001), written by a group of developers who wanted to change the software development process. According to the agile methodology, testing is not a phase. Instead, tests are performed continuously as the product is developed and requirements change. In contrast, phased software development follows the original requirements, includes the features that matter most, and tests when development is completed. New requirements can be established after the original software is in use.




Software testing using the V-model incorporates multiple tests for each stage of software development to ensure all levels of software design.





Software testing using the V-model incorporates multiple tests for each stage of software development to ensure all levels of software design, from user requirements to low-level technical design requirements, are implemented properly.
Image adapted from Infinite Computing Systems, Inc EBSCO illustration.

There are dozens of additional approaches to software testing. In static testing, code reviews and analyses are used to discover inconsistencies and variables in the code. In dynamic testing, the code is actually executed and its behavior is analyzed. Static testing is for verification, while dynamic testing is for validation.

AUTOMATING THE PROCESS

Because the testing process is critical and detail oriented as well as repetitive, tools have been developed to assist in the process. These include:

test management tools
static analysis tools
test data preparation tools
test execution tools
performance testing tools
coverage measurement tools
incident management tools

Software testing tools can manage and schedule the testing process. These tools also log defects, track changes, monitor performance, and conduct static testing, analysis, and design. Specialized software performs repetitive tasks and tests that are difficult or time consuming to perform manually.

WHEN TESTING IS INSUFFICIENT

Releasing an app that does not function as expected can cause serious repercussions, even for a respected company. When Apple first introduced the Apple Maps app, users soon discovered that certain cities were mislabeled or had disappeared, familiar landmarks had moved, and satellite images were obscured by clouds. As a result, the company faced ridicule, and Apple's CEO was compelled to issue an apology.

To ensure proper testing and avoid such problems, programmers follow a series of steps, starting with reviewing software specifications and developing a test plan. They also 4 Science Reference Center™ Software Testing write test cases. Test cases are sets of actions that verify program functions. Writing effective test cases can save time and money throughout the testing process. As testing proceeds, bugs are discovered, such as when an expected result is not the actual result. These bugs are logged and assigned to a developer for fixing.

Programmers approach testing from many directions. Some attempt to make an app perform functions it should not do. Others imagine various scenarios, such as what would happen if someone tried to use the software maliciously or with no knowledge of the application. By putting themselves in the place of various users, testers can uncover defects and improve the user experience.

MOVING SOFTWARE TESTING TO THE CLOUD

Information technology (IT) firms spend hundreds of billions every year on software testing because consumers and businesses expect the software and apps they purchase to work as they expect. These firms invest in servers, databases, storage, operating systems, and testing tools, all of which need to be upgraded and maintained. The cost is generally accepted because the risk of delivering a flawed product greatly outweighs the cost of thorough testing.

As IT companies face greater competition and pressures to earn profits, testing will require new solutions. Cloud-based systems provide speed and cost savings because service providers can maintain systems, tools, storage, and databases in a more cost-effective manner.

—Teresa E. Schmidt

Holland, Bill. “Software Testing: A History.” SitePoint. SitePoint, 15 Feb. 2012. Web. 9 Feb. 2016.

Jorgensen, Paul C. Software Testing: A Craftsman's Approach. 4th ed. Boca Raton: CRC, 2014. Print.

Mili, Ali, and Fairouz Tchier. Software Testing: Concepts and Operations. Hoboken: Wiley, 2015. Print.

Mitchell, Jamie L., and Rex Black. Advanced Software Testing. 2nd ed. 3 vols. Santa Barbara: Rocky Nook, 2015. Print.

Murphy, Chris. “How to Save $150 Billion: Move All App Dev and Testing to the Cloud.” Forbes. Forbes. com, 3 Feb. 2016. Web. 10 Feb. 2016.

Singh, Amandeep. “Top 13 Tips for Writing Effective Test Cases for Any Application.” Quick Software Testing. QuickSoftwareTesting, 23 Jan. 2014. Web. 11 Feb. 2016.

Smith, Catharine. “Tim Cook Issues Apology for Apple Maps.” Huffpost Tech. TheHuffingtonPost. com, 28 Sept. 2012. Web. 11 Feb. 2016.

“Why Do You Need to Test Software?” BBC Academy. BBC, 23 Feb. 2015. Web. 7 Feb. 2016.