<< 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

the reason for learning this course?
Gabriel Reply
components of software engineering
khan Reply
what is coding
YUSUF Reply
Coding is a type of a language that a computer understand..
HANAN
it's how a computer interprets software, programs and what to do when it reads the code. Code is like our sub-conscious but to a computer if that makes sense.
Dustin
hello, I don't know anything about software but I have this passion to learn. where do I start from pls
Oliver Reply
computer science class or just take a introduction to computers class. You can always try to find a mentor or self teach yourself as well.
Dustin
What is coding
diwakar
what important of software
Tom Reply
dorimon in hindi
Yogesh
Hello
Mark
Mrs dorimon
Mark
hello
Tom
ha
Khizer
I'm. new in programming
Khizer
did anyone help
Khizer
me
Khizer
ok on me am new in programming
Tom
can I have job sa programmer without degree
Khizer
hello guy's
Shey
what can helps new in programming
Tom
I want to know more about programming
Shey
hello
Francis
hello
Xotambek
hi
Peterson
how r u my friends ?
Xotambek
l would like to know what do I need if I want to.create a sun glasses where you can see everything when you're sharing something via bluetooth
Peterson
hi
Peterson
I have so many things that I want to create in the technology industry
Peterson
but I need a group of people who are willing bring ideas on the table and work together to make success
Peterson
wow
Shey
What sorts of feild knowledge do you need?
leo
Mr. Peteson pinchinat, hello!
leo
I don't really know what do I need to learn that's why I'm asking
Peterson
I need help to create all those things that I want to.
Peterson
peterson pinchinat I have so many ideas and much more things in my mind
Khizer
hello
Purity
even Me guys
Mark
if you have many ideas than I have so let's work together let's build a team . let's put our ideas and start working together to make success.
Peterson
I really like to work with software
Khizer
any I like that people how have interest on new technology and software developer, engineering
Khizer
wow!!! we have something in common.
Peterson
great then we can share some ideas and then see how we can make things happen
Peterson
so where we can do work
Khizer
we have to find a way. I'm living in Brooklyn what about you?
Peterson
there we shared work
Khizer
I know people from India they are really good in compute
Peterson
thanks
Khizer
first we need to find out how we gonna work. I know the distance won't be a problem we need to trust each other and create a great team then bring revolution in the technology
Peterson
I have an idea
Khizer
ok
Peterson
send me the website?
Peterson
wait for a 2 days I make that and tell you ok
Khizer
perfect
Peterson
good
Shey
Yes ,It is possible to be a programmer without University Degree.You have a lot professional courses that you access and register for on the net.Please get hook and search ..thanks
NICCK-PAT
Great ,I am NICCk-PAT in Paris France.
NICCK-PAT
hello
Dustin
how do i create software
Ahmad Reply
Hii
Sameer
study coding
HANAN
what is the IEEE ?
Shankar Reply
a external device cable capable of transferring large amounts of data at high speed.
Dustin
really
Shey
How to learn in this app? ..help me
HANAN Reply
no one helps me😕
HANAN
how make a software engineer
Ajaykumar Reply
how to use this app ..help me
HANAN
what is incremental model?
Shir Reply
explain software proses explain with kannada
preethi Reply
please and my qution
preethi
oh dont you know english
HANAN
best project for bsc students
Mounika Reply
software engineering best project for bsc students
Mounika
Tell me medam what is the project do you have
Harinathreddy
software engineering
Mounika
Let you explain for me about that project
Harinathreddy
hii
Sameer
I'm in!!
Amanson
hii
Yogesh
can i ask you some questions
Yogesh
hi how are you
Ahmad
guy's please I need you to tell me more about software Engineering
Shey
am new in the field
Shey
hi
HANAN
do anyone need help
HANAN
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.
SATYAM
9292
Saeed

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