<< Chapter < Page
  Software engineering     Page 9 / 15
Chapter >> Page >

Alternatives to testing

Software testing is more and more considered a problematic method toward better quality. Using testing to locate and correct software defects can be an endless process. Bugs cannot be completely ruled out. Just as the complexity barrier indicates: chances are testing and fixing problems may not necessarily improve the quality and reliability of the software. Sometimes fixing a problem may introduce much more severe problems into the system, happened after bug fixes.

Using formal methods to "prove" the correctness of software is also an attracting research direction. But this method can not surmount the complexity barrier either. For relatively simple software, this method works well. It does not scale well to those complex, full-fledged large software systems, which are more error-prone.

In a broader view, we may start to question the utmost purpose of testing. Why do we need more effective testing methods anyway, since finding defects and removing them does not necessarily lead to better quality. An analogy of the problem is like the car manufacturing process. In the craftsmanship epoch, we make cars and hack away the problems and defects. But such methods were washed away by the tide of pipelined manufacturing and good quality engineering process, which makes the car defect-free in the manufacturing phase. This indicates that engineering the design process (such as clean-room software engineering) to make the product have less defects may be more effective than engineering the testing process. Testing is used solely for quality monitoring and management, or, "design for testability". This is the leap for software from craftsmanship to engineering.

Test techniques

One of the aims of testing is to reveal as much potential for failure as possible, and many techniques have been developed to do this, which attempt to “break” the program, by running one or more tests drawn from identified classes of executions deemed equivalent. The leading principle underlying such techniques is to be as systematic as possible in identifying a representative set of program behaviors; for instance, considering subclasses of the input domain, scenarios, states, and dataflow.

It is difficult to find a homogeneous basis for classifying all techniques, and the one used here must be seen as a compromise. The classification is based on how tests are generated from the software engineer’s intuition and experience, the specifications, the code structure, the (real or artificial) faults to be discovered, the field usage, or, finally, the nature of the application. Sometimes these techniques are classified as white-box, also called glassbox, if the tests rely on information about how the software has been designed or coded, or as black-box if the test cases rely only on the input/output behavior. One last category deals with combined use of two or more techniques. Obviously, these techniques are not used equally often by all practitioners. Included in the list are those that a software engineer should know.

Questions & Answers

draw and explain state and activity diagram of library management system
Prashant Reply
hii
Sonu
explain association and generalisation with library system diagram
Prashant Reply
what do you mean by functional and non functional requirements
RICHA Reply
functional - describes what a software system should do . non functional - place constraints on how the will do so
rubi
non functional requirement include: quility . reliability . response time . security . privacy . effectiveness . maintainability . robustness scalability . fault tolerance . extensibility . efficiency . portability . resilience ... .
rubi
🙏🙏🙏🙏🙏
Sonu
🙏🙏🙏🙏🙏
Sonu
hello
Akhand
🇨🇮🇨🇮🇨🇮
Sonu
What does encapsulation mean?
Sravanthi Reply
Encapsulation in Java is a process of wrapping code and data together into a single unit, for example, a capsule which is mixed of several medicines. ... Now we can use setter and getter methods to set and get the data in it. The Java Bean class is the example of a fully encapsulated class.
Hello
What is software Engineering
Jakisay Reply
Sofyware engineering is the application of principles used in the field of engineering which usually deals with phsical systems to the design, testing, development, deployment and management of software systems
Remie
what is cocomo model
Shrudhi Reply
The Constructive Cost Model is a procedural software cost estimation model developed by Barry W. Boehm. The model parameters are derived from fitting a regression formula using data from historical projects
Tilak
Please is there any scholarship for African students undergraduate for now
Awal Reply
4 generation technology
RICHA Reply
Richa, what is your question?
Darrell
what is the work of software engineer
mercy Reply
DilipDas
Dili
steps of developing a software
latest Reply
Present
win
bamori project
Rajendra
which approach used to reduce number of test cases
Harshdeep Reply
I wish to ask what is the mean of a data model
Ateke Reply
explanation of working of computer
Gulfam Reply
Hi
Yaw
hello.
Martins
hi
Naeem
How are u guys
Ato
What is software engineering
parfait Reply
explain basic path testing for triangle problem?
Janavi 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?

Ask