TESIS1 - Testing Sistem Informasi
TESIS1 - Testing Sistem Informasi
Dendi Maysanjaya
Outline
• Software Crisis
• Testing Process
• Software Testing Terminologies
• Software Testing Limitations
Software Crisis
• Software organizations are regularly getting failure reports of their
products and this number is increasing day by day.
• A major problem of the software industry is its inability to develop
error-free software.
Some Software Failure
1. The Explosion of the Ariane 5 Rocket.
• The Ariane 5 rocket was designed by European Space Agency and it was launched on
June 4, 1996.
• It was an unmanned rocket and unfortunately exploded only after 40 seconds of its
take off from Kourou, French Guiana.
• The design and development took ten long years with a cost of $7 billion.
• Unfortunately, the navigation system of Ariane 4 was used in Ariane 5 without
proper testing and analysis.
• The failure of the Ariane 5 was caused by the complete loss of guidance and altitude
information, 37 seconds after start of the main engine ignition sequence (30 seconds
after lift-off).
• This loss of information was due to specification and design errors in the software of
the inertial reference system.
• Such design decisions and poor testing resulted in the explosion of Ariane 5.
Some Software Failure
2. The Y2K Problem
• It was simply the case of using two digits for the year instead of four digits.
For instance, 1965 was considered as 65.
• The developers could not imagine the problem of year 2000. What would
happen on January 1, 2000? The last two digits i.e. 00 may belong to any
century like 1800, 1900, 2000, 2100, etc.
• The simple ignorance or a faulty design decision to use only the last two
digits for the year resulted into the serious Y2K problem.
• Most of the software was re-tested and modified or discarded, depending
on the situation.
Some Software Failure
3. The USA Star-Wars Program
• ‘Patriot missile’ was the result of the USA ‘Star Wars’ program.
• This missile was used for the first time in the Gulf war against the Scud missile of
Iraq.
• Surprisingly, ‘Patriot missiles’ failed many times to hit the targeted Scud missile. One
of the failures killed 28 American soldiers in Dhahran, Saudi Arabia.
• An investigation team was constituted to identify the cause of failure.
• The team re-looked at every dimension of the product and found the reason for the
failure.
• The cause of the failure was a software fault. There was a slight timing error in the
system’s clock after 14 hours of its operation. Hence, the tracking system was not
accurate after 14 hours of operations and at the time of the Dhahran attack, the
system had already operated for more than 100 hours.
Some Software Failure
4. Failure of London Ambulance System
• The software controlling the ambulance dispatch system of London collapsed on October 26-
27, 1992 and also on November 4, 1992 due to software failures.
• The system was introduced on October 26, 1992. The London Ambulance Service was a
challenging task that used to cover an area of 600 square miles and handled 1500 emergency
calls per day.
• Due to such a failure, there was a partial or no ambulance cover for many hours. The position
of the vehicles was incorrectly recorded and multiple vehicles were sent to the same
location. Everywhere people were searching for an ambulance and nobody knew the reason
for non-arrival of ambulances at the desired sites. The repair cost was estimated to be £9m,
but it is believed that twenty lives could have been saved if this failure had not occurred.
• The enquiry committee clearly pointed out the administrative negligence and over-reliance
on ‘cosy assurances’ of the software company. The administration was allowed to use this
system without proper alternative systems in case of any failure.
• The committee also termed the possible cause of failure as [ANDE98, FINK93]: “When the
system went live, it could not cope with the volume of calls and broke under the strain. The
transition to a back-up computer system had not been properly rehearsed and also failed.”
Some Software Failure
5. USS Yorktown Incident
• The USS Yorktown - a guided missile cruiser was in the water for several hours
due to the software failure in 1998.
• A user wrongly gave a zero value as an input which caused a division by zero
error.
• This fault further failed the propulsion system of the ship and it did not move
in the water for many hours.
• The reason behind this failure was that the program did not check for any
valid input.
Some Software Failure
6. Accounting Software Failures
• Financial software is an essential part of any company’s IT infrastructure.
• However, many companies have suffered failures in the accounting system
due to errors in the financial software.
• The failures range from producing the wrong information to the complete
system failure.
• There is widespread dissatisfaction over the quality of financial software.
• If a system gives information in the incorrect format, it may have an adverse
impact on customer satisfaction.
Some Software Failure
7. Experience of Windows XP
• Charles C. Mann shared his views about Windows XP through his article in
technology review as: “Microsoft released Windows XP on October 25, 2001.
That same day, what may be a record, the company posted 18 megabyte of
patches on its website for bug fixes, compatibility updates, and
enhancements. Two patches fixed important security holes. Or rather, one of
them did; the other patch did not work. Microsoft advised (still advises) users
to back up critical files before installing patches.”
• This situation is quite embarrassing and clearly explains the sad situation of
the software companies. The developers were either too careless or in a great
hurry to fix such obvious faults.
Software Crisis
• Most of the software developers are confused about the quality of their
software products.
• If they are asked about the quality of software being produced by
companies, they generally say, “It is getting worse day by day.” It is as if we
say that Boeing’s planes produced in 2009 are less reliable than those
produced in 1980.
• The blame for software bugs belongs to nearly everyone. It belongs to the
software companies that rush products to market without adequately
testing them. It belongs to the software developers who do not understand
the importance of detecting and removing faults before customers
experience them as failures. It belongs to a legal system that has given the
software developers a free pass on error-related damages. The blame also
belongs to universities that stress more on software development than
testing
Testing Process
• What is Software Testing?
• Why Should We Test?
• Who Should We Do the Testing?
• What Should We Test?
Testing Process
• Testing is an important aspect of the software development life cycle. It is
basically the process of testing the newly developed software, prior to its
actual use.
• The program is executed with desired input(s) and the output(s) is/are
observed accordingly. The observed output(s) is/are compared with
expected output(s). If both are same, then the program is said to be correct
as per specifications, otherwise there is something wrong somewhere in
the program.
• Testing is a very expensive process and consumes one-third to one-half of
the cost of a typical development project. It is largely a systematic process
but partly intuitive too.
• Hence, good testing process entails much more than just executing a
program a few times to see its correctness.
What is Software Testing?
• Good testing entails more than just executing a program with desired
input(s).
Program ‘Minimum’ to find the smallest integer out of a set of integer
Inputs and outputs of the program ‘Minimum’
False Definitions of Testing
i. Testing is the process of demonstrating that errors are not present.
ii. The purpose of testing is to show that a program performs its intended functions
correctly.
iii. Testing is the process of establishing confidence that a program does what it is
supposed to do.
• The philosophy of all three definitions is to demonstrate that the given
program behaves as per specifications.
• We may write 100 sets of inputs for the program ‘Minimum’ and show that
this program behaves as per specifications.
• However, all three definitions are not correct. They describe almost the
opposite of what testing should be viewed as. Forgetting the definitions for
the moment, whenever we want to test a program, we want to establish
confidence about the correctness of the program. Hence, our objective
should not be to show that the program works as per specifications.
Definitions of Testing
• But, we should do testing with the assumption that there are faults and our
aim should be to remove these faults at the earliest.
• Thus, a more appropriate definition is “Testing is the process of executing a
program with the intent of finding faults.”
• Human beings are normally goal oriented. Thus, establishment of a proper
objective is essential for the success of any project. If our objective is to
show that a program has no errors, then we shall sub-consciously work
towards this objective. We shall intend to choose those inputs that have a
low probability of making a program fail. On the contrary, if our objective is
to show that a program has errors, we may select those test cases which
have a higher probability of finding errors. We shall focus on weak and
critical portions of the program to find more errors. This type of testing will
be more useful and meaningful.
Some critical/typical situations of the program ‘Minimum’
• These issues are very difficult to identify. If 6+9=20 is written in the SRS document
and our program prints output as 20 when 6 and 9 are inputs, is it a bug? If the
program prints output as 15, when inputs are 6 and 9, how can we interpret? In
this case, the actual output is so obvious that interpretation may not require time
to take a correct decision. But in most of the situations, outputs are not so
obvious. Some requirements may be misunderstood and some may be missed.
Ambiguities of natural languages (like English) may give more than one meaning
to a sentence and make life difficult for testers. Hence, problems in writing good
SRS have also become one of the problems of software testing.
Logical Bugs
• A typical example
Test cases for function
Typical test cases where outputs are different
Logical Bugs
• Logical bugs are extremely difficult to handle and become one of the serious concerns of testing.
• Software testing has inherent difficulties which is making it impossible to completely test the
software. It can only show that bugs are in the software but it cannot show that bugs are not in
the software at all.
• With all the limitations, software testing still is mandatory and a very useful filter to detect errors,
which may further be removed. However we all know that good testing cannot make the software
better, only good coding with software engineering principles makes the software better.
However, good testing techniques may detect a good number of errors and their removal may
improve the quality of the software.
Difficult to Measure the Progress of Testing
• How to measure the progress of testing? Normally we count various things to measure and interpret these
counts. Is experiencing more failures good news or bad news? The answer could be either. A higher number
of failures may indicate that testing was thorough and very few faults remain in the software. Or, it may be
treated as an indication of poor quality of the software with lots of faults; even though many have been
exposed, lots of them still remain. These counts may be illusive and may not help us to measure the progress
of testing.
• This difficulty of measuring the progress of testing leads to another issue i.e. when to stop testing and
release the software to the customer(s)? This is a sensitive decision and should be based on the status of
testing. However, in the absence of testing standards, ‘economics’, ‘time to market’ and ‘gut feeling’ have
become important issues over technical considerations for the release of any software. Many models are
available with serious limitations and are not universally acceptable.
• Software companies are facing serious challenges in testing their products and these challenges are growing
bigger as the software grows more complex. Hence, we should recognize the complex nature of testing and
take it seriously. The gap between standards and practices should be reduced in order to test the software
effectively which may result in to good quality software.
Closing Remarks
• A major problem of the software industry is its inability to develop
error-free software.
• Testing never shows the absence of faults, but it shows that the faults
are present in the program.
• Software testing is a very expensive and critical activity; but releasing
the software without testing is definitely more expensive and
dangerous.
• Most of the times, the testing persons are different from
development persons for the overall benefit of the system.
Closing Remarks
• There are three limitation of software testing: errors in the Software Requirement
and Specification Document, Logical Bugs and Difficult to Measure the Progress
of Testing. With all the limitations, software testing still is mandatory and a very
useful filter to detect errors, which may further be removed. However we all
know that good testing cannot make the software better, only good coding with
software engineering principles makes the software better. However, good testing
techniques may detect a good number of errors and their removal may improve
the quality of the software.