<< Chapter < Page
  Software engineering     Page 1 / 15
Chapter >> Page >
This module provides an introduction to software testing. Topics covered include basic definitions of testing, validation and verification; the levels of testing from unit testing through to acceptance testing; the relationship with requirements and design specifications; and test documentation.


Software Testing is the process of executing a program or system with the intent of finding errors. Or, it involves any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results. Software is not unlike other physical processes where inputs are received and outputs are produced. Where software differs is in the manner in which it fails. Most physical systems fail in a fixed (and reasonably small) set of ways. By contrast, software can fail in many bizarre ways. Detecting all of the different failure modes for software is generally infeasible.

Unlike most physical systems, most of the defects in software are design errors, not manufacturing defects. Software does not suffer from corrosion, wear-and-tear, generally it will not change until upgrades, or until obsolescence. So once the software is shipped, the design defects, or bugs, will be buried in and remain latent until activation.

Software bugs will almost always exist in any software module with moderate size: not because programmers are careless or irresponsible, but because the complexity of software is generally intractable, and humans have only limited ability to manage complexity. It is also true that for any complex systems, design defects can never be completely ruled out.

Discovering the design defects in software, is equally difficult, for the same reason of complexity. Because software and any digital systems are not continuous, testing boundary values are not sufficient to guarantee correctness. All the possible values need to be tested and verified, but complete testing is infeasible. Exhaustively testing a simple program to add only two integer inputs of 32-bits (yielding 2^64 distinct test cases) would take hundreds of years, even if tests were performed at a rate of thousands per second. Obviously, for a realistic software module, the complexity can be far beyond the example mentioned here. If inputs from the real world are involved, the problem will get worse, because timing and unpredictable environmental effects and human interactions are all possible input parameters under consideration.

A further complication has to do with the dynamic nature of programs. If a failure occurs during preliminary testing and the code is changed, the software may now work for a test case that it didn't work for previously. But its behavior on pre-error test cases that it passed before can no longer be guaranteed. To account for this possibility, testing should be restarted. The expense of doing this is often prohibitive.

An interesting analogy parallels the difficulty in software testing with the pesticide (known as the Pesticide Paradox): Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual. But this alone will not guarantee to make the software better, because the Complexity Barrier principle states: Software complexity (and therefore that of bugs) grows to the limits of our ability to manage that complexity. By eliminating the (previous) easy bugs you allowed another escalation of features and complexity, but his time you have subtler bugs to face, just to retain the reliability you had before. Society seems to be unwilling to limit complexity because we all want that extra bell, whistle, and feature interaction. Thus, our users always push us to the complexity barrier and how close we can approach that barrier is largely determined by the strength of the techniques we can wield against ever more complex and subtle bugs.

Questions & Answers

differentiate between writing and jotting
Mmem Reply
configration management
Ravi Reply
what is a computer software
Chinaza Reply
Computer software is programming code executed on a computer processor at either the machine-level or the level of the operating system. ... The physical components of a computer are the hardware, and the digital programs running on the hardware are the software.
what is sofftware
Mohammed Reply
Software, in its most general sense, is a set of instructions or programs instructing a computer to do specific tasks. Software is a generic term used to describe computer programs. Scripts, applications, programs and a set of instructions are all terms often used to describe software.
now I got it
how to open a software company
draw context model for a patient information system in a hospital
shruti Reply
how to activate Microsoft word
Matthew Reply
To activate Microsoft word, please follow these steps below: 1. On windows 8.1 or Windows 10, choose start. 2. Scroll down through your apps and choose Microsoft office- the tile with the Office logo. 3. In the windows that open, choose Activate. 4. Do one of the following:
. If you are asked to sign in with your Microsoft account, that means you do not need a product key. proceed to the next step below and enter your Microsoft account. OR . If you are asked to enter a product key, this means a key was included with your purchase.
Look for it on your Certificate of Authenticity or a card in the packaging. If you cannot find it, contact your reseller. The key uses a combination of 25 letters and numbers and looks this: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx. Enter your key in the space provided. 5. Sign in with your Microsoft account
to activate the Office product that came with your device.
What can we do with cmd
Ibrahim Reply
cmd performs a lot of things that can perfomed in graphical method, generally interacting with files in the computer like deleting, writing, creating cmd can be used for networking purposes... mostly in network configurations, trying to view network setups etc.
in programming....you can interact with your databases by using cmd.......so it performs a lot of things. good day.
sir the basic questions is that what is cmd
what is software
Igho Reply
is set of instructions (generally referred to as code), that is positioned between you and the device hardware, enable you to use it .
that's what a software can be defined as.
what type of instructions
it may also concern to hardware or not
I'm just joining that depart could somebody plz define. ma about software engineering because I don't even know the how know of it
what is white box testing
White Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is known to the tester.
What is software life cycle model? Why is it important during the development of a large softwre products
ramsahay Reply
explain About various types of software quality metrics
vijay Reply
I study software assignment course
Raza Reply
what is re process
naveen Reply
how to make software development projects
suresh Reply

Get the best Software engineering course in your pocket!

Source:  OpenStax, Software engineering. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10790/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Software engineering' conversation and receive update notifications?