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

Good partitioning requires knowledge of the software structure. A good testing plan will not only contain black-box testing, but also white-box approaches, and combinations of the two.

White-box testing

Contrary to black-box testing, software is viewed as a white-box, or glass-box in white-box testing, as the structure and flow of the software under test are visible to the tester. Testing plans are made according to the details of the software implementation, such as programming language, logic, and styles. Test cases are derived from the program structure. White-box testing is also called glass-box testing, logic-driven testing or design-based testing.

There are many techniques available in white-box testing, because the problem of intractability is eased by specific knowledge and attention on the structure of the software under test. The intention of exhausting some aspect of the software is still strong in white-box testing, and some degree of exhaustion can be achieved, such as executing each line of code at least once (statement coverage), traverse every branch statements (branch coverage), or cover all the possible combinations of true and false condition predicates (Multiple condition coverage).

Control-flow testing, loop testing, and data-flow testing, all maps the corresponding flow structure of the software into a directed graph. Test cases are carefully selected based on the criterion that all the nodes or paths are covered or traversed at least once. By doing so we may discover unnecessary "dead" code - code that is of no use, or never get executed at all, which can not be discovered by functional testing.

In mutation testing, the original program code is perturbed and many mutated programs are created, each contains one fault. Each faulty version of the program is called a mutant. Test data are selected based on the effectiveness of failing the mutants. The more mutants a test case can kill, the better the test case is considered. The problem with mutation testing is that it is too computationally expensive to use. The boundary between black-box approach and white-box approach is not clear-cut. Many testing strategies mentioned above, may not be safely classified into black-box testing or white-box testing. It is also true for transaction-flow testing, syntax testing, finite-state testing, and many other testing strategies not discussed in this text. One reason is that all the above techniques will need some knowledge of the specification of the software under test. Another reason is that the idea of specification itself is broad - it may contain any requirement including the structure, programming language, and programming style as part of the specification content.

We may be reluctant to consider random testing as a testing technique. The test case selection is simple and straightforward: they are randomly chosen. Random testing is more cost effective for many programs. Some very subtle errors can be discovered with low cost. And it is also not inferior in coverage than other carefully designed testing techniques. One can also obtain reliability estimate using random testing results based on operational profiles. Effectively combining random testing with other testing techniques may yield more powerful and cost-effective testing strategies.

Questions & Answers

Text editor project in c++
Ayesha Reply
hi daddy
Sreenu
hello sir
Ranjith
are unmanned flying machines that are built and equipped with various kinds of software systems that allow them to see, hear, and act. Discuss some of the societal challenges of building such kinds of systems.
johni Reply
You have developed a prototype of a software system and your manager is very impressed by it. She proposes that it should be put into use as a production sys tem, with new features added as required. This avoids the expense of system dev immediately useful. Write a short report for your manager expl
johni
You have developed a prototype of a software system and your manager is very impressed by it. She proposes that it should be put into use as a production sys tem, with new features added as required. This avoids the expense of system dev immediately useful.
johni
You have developed a prototype of a software system and your manager is very impressed by it. She proposes that it should be put into use as a production sys tem, with new features added as required. This avoids the expense of system dev immediately useful.
johni
You have developed a prototype of a software system and your manager is very impressed by it. She proposes that it should be put into use as a production sys tem, with new features added as required. This avoids the expense of system dev immediately useful. Write a short report for your manager expl
johni
You have developed a prototype of a software system and your manager is very impressed by it. She proposes that it should be put into use as a production sys tem, with new features added as required. This avoids the expense of system dev immediately useful.
johni
what is cocomo ?
Surabhi Reply
?
StReeT
give me coding of these projects
Aman Reply
feasibility study&fact gathering techniques
Nachi Reply
write about software engineering
Mandala Reply
8.10.0.
BARBU
define iterative model. example of iterative model. advantages and disadvantages of iterative model. when to use iterative model
Okello Reply
What is DFD in Software engineering
Hamid
i try out in netbeans this code:public class Profile { private Profile(int w) { // line 1 System.out.println(w); } public final Profile() { // line 5 System.out.println(10); } public static void main(String args[]) { Profile obj = new Profile(50); } } It is the question 5, and the answer is 50
Jacqueline Reply
how to join conversation
Bablu
i need help....Discuss the factors that influence the choice of the software development methodology to use when implementing software projects?(20)
tatenda Reply
The success rate of software development projects can be increased by using a methodology that is adequate for the specific characteristics of those projects.  then the focus on RAD,XP,RUP.
Hemant
hemant hie...it is a presentation i am working on...can you help me wth the introduction....please a powerful one hahahahha
tatenda
yes
Hemant
Define and show all Dipthongs and vowels used in english phonetics
Okendro Reply
what is the software engineering
Axmed Reply
please
Jennifer
hhahhaha
martin
software engineering is a organized process of activities for development a use full software . it may consist of : 1:spcecification 2:design 3: implementation 4: evolution:
hamayun
Please how can I create an application?
Eric Reply
please how can I create an application
Nchor
How do we create a software
Florence Reply
give a more direct question
Louis Reply
what is semantics?
amjad
what r the computer codes
Kawuba Reply
machine code, source code , object code, and byte code etc
Hemant

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