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

A testable design is a design that can be easily validated, falsified and maintained. Because testing is a rigorous effort and requires significant time and cost, design for testability is also an important design rule for software development.

For reliability estimation

Software reliability has important relations with many aspects of software, including the structure, and the amount of testing it has been subjected to. Based on an operational profile (an estimate of the relative frequency of use of various inputs to the program), testing can serve as a statistical sampling method to gain failure data for reliability estimation.

Software testing is not mature. It still remains an art, because we still cannot make it a science. We are still using the same testing techniques invented 20-30 years ago, some of which are crafted methods or heuristics rather than good engineering methods. Software testing can be costly, but not testing software is even more expensive, especially in places that human lives are at stake. Solving the software-testing problem is no easier than solving the Turing halting problem. We can never be sure that a piece of software is correct. We can never be sure that the specifications are correct. No verification system can verify every correct program. We can never be certain that a verification system is correct either.

Test levels

The target of the test

Software testing is usually performed at different levels along the development and maintenance processes. That is to say, the target of the test can vary: a single module, a group of such modules (related by purpose, use, behavior, or structure), or a whole system. Three big test stages can be conceptually distinguished, namely Unit, Integration, and System. No process model is implied, nor are any of those three stages assumed to have greater importance than the other two.

Unit testing

Unit testing verifies the functioning in isolation of software pieces which are separately testable. Depending on the context, these could be the individual subprograms or a larger component made of tightly related units. A test unit is defined more precisely in the IEEE Standard for Software Unit Testing (IEEE1008-87), which also describes an integrated approach to systematic and documented unit testing. Typically, unit testing occurs with access to the code being tested and with the support of debugging tools, and might involve the programmers who wrote the code.

Integration testing

Integration testing is the process of verifying the interaction between software components. Classical integration testing strategies, such as top-down or bottom-up, are used with traditional, hierarchically structured software.

Modern systematic integration strategies are rather architecture-driven, which implies integrating the software components or subsystems based on identified functional threads. Integration testing is a continuous activity, at each stage of which software engineers must abstract away lower-level perspectives and concentrate on the perspectives of the level they are integrating. Except for small, simple software, systematic, incremental integration testing strategies are usually preferred to putting all the components together at once, which is pictorially called “big bang” testing.

Questions & Answers

Which SDLC Model will you select to develop the system as a software engineer and why?
Subrato Reply
communication techniques in software development
SANJANA Reply
👋👋👋
Aslam
what is communication techniques in software development
Aslam
hii
Ritika
hi
prabhu
Hlw
Subrato
who is Charles Babbage
Marvin Reply
how to do documents in the computer
Mark Reply
Kashmir
akmal
k
akmal
hello
Anil
Which of these are standards for assessing software processes
own Reply
hello teacher may I give me example of format of software
Aurianne
team a found 342 errors during the software engineering process prior to release. team b found 184 errors. what additional measures would have to be made for projects a and b to determine which of the teams eliminated errors more efficiently? what metrics would you propose to help in making the determination? what historical data might be useful?
Kaviya Reply
it's depend upon software testing and debugging
OMKAR
what is coding
Waswa Reply
programming languages is a coding it is also used software development, designing, modeling, etc..
OMKAR
presently I work as a computer engineering what course can I study in any computer institute to enable me promoting myself
Ichaba
AND here lot of course
OMKAR
How to calculate the basic salary of a payroll in Java coding?
Adjei Reply
ত্তচুরভহব
Parvez
hello
Bahadur
but we have tobe serious in k.dge.. what is the meaning of java coding if you are gineous you will answer me
Eyiba
hie
Mark
hi
Rana
Quids on software engineering
Enongene Reply
software testing practice
Prerana
Ho
Rang
definition of software
Baba Reply
define system ,concepts of system and types of system?
Gurmeet Reply
iom
ADNAN
hello
arsh
hari Paulus hai
Hari
System is the way of Execution or a set of principles to do something or any task is called System.
Ayesha
There are many infinite forms and Types of System in different fields as well.
Ayesha
TELL ME ABOUT MAINFRAME?
OMKAR
hi
Md
System is the way of Execution or a set of principles to do something or any task is called System.
Sazed
is very important software engineer or not.
Riyanshu Reply
very important
arsh
2d
Dv
hello
Md
what is software engineering
Ravindra Reply
Software engineering is a detailed study of engineering to the design, development and maintenance of software
arsh
what is salary of software engineer
Akash Reply
it depend on organization's and quality
josephat
I think average salary 80000us dollars per year
arsh
what are naturs of software Engineering
BANDARU Reply

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play




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