BOOK REPORT:How to Break Software

BOOK NAME:How to Break Software

 

AUTHOR:James A. Whittaker

 

Here's a paper to get a tiny taste of this book:

http://wenku.baidu.com/view/2b2988eb19e8b8f67c1cb9aa.html

 

Most books that purport to be about testing are really about something else. They're

generally about planning, or process, or mathematics, or graph theory. Often, they're

about making models of software so that you can demonstrate that there are indeed

jillions of paths through a given piece of software--hardly news to anyone who's

bothered to think about it for a while. Sometimes they're about the underlying theory

of the thing you're supposed to be testing, such as "Web applications" or "security".

All of these are useful things to think about, to be sure. Many of these books are large,

and this one is small. I would venture to say, though, that few books talk about actual

bugs as much as this one does, and provide such entertaining, cringeworthy examples.

 

This book is about testing, and it's about thinking about testing. It provides a set of

theories of error, and follows these with worked-out examples of using those theories

of error to find bugs in real software.

 

If there is an area of software development that needs to be codified and formalized, it

is the procedures for testing the software before release. With the exception of software

that does only a few tasks, it is not possible to test all possible paths. The number of

possible paths expands very quickly so that it is effectively infinite, which means that it

is so large that it might as well be infinite. Furthermore, this problem will only get worse

as software continues to increase in complexity. Finally, the testing phase of software is

relegated to the last step and is often considered to be a menial task by developers.

Given these conditions and the general pressure of meeting a release date, it follows that

testing is often cut short.


With all of this as a background, it would appear that testing is a hopeless task. That is

not the case if the testing is done in a systematic manner, which is what this book will

teach you. Whittaker is a computer science professor whose area of expertise is that of

testing software. He breaks the process into two broad categories: user interface attacks

and system interface attacks. Each of these areas is then split into separate attacks,

seventeen for user interface attacks and six for system interface attacks.


The attacks for user interface are:
* Apply inputs that force all the error messages to occur.
* Apply inputs that force the software to establish default values.
* Explore allowable character sets and data types.
* Overflow input buffers.
* Find inputs that may interact and test combinations of their values.
* Repeat the same input or series of inputs numerous times.
* Force different outputs to be generated for each input.
* Force invalid outputs to be generated.
* Force properties of an output to change.
* Force the screen to refresh.
* Apply inputs using a variety of initial conditions.
* Force a data structure to store too many or too few values.
* Investigate alternate ways to modify internal data constraints.
* Experiment with invalid operand and operator combinations.
* Force a function to call itself recursively.
* Force computation results to be too large or too small.
* Find features that share data or interact poorly.

 

The attacks for system interface are:

* Fill the file system to capacity.
* Force the media to be busy or unavailable.
* Damage the media.
* Assign an invalid file name.
* Vary file access permissions.
* Vary or corrupt file contents.

 

Each of the attacks is presented using the subsections:

* When to apply this attack.
* What software faults make this attack successful?
* How to determine if this attack exposes failures.
* How to conduct this attack.

 

This approach leads to a very thorough demonstration of how to perform rigorous

software testing in a limited amount of time. If I ever teach a course in software

testing, this is what I will use as a text.


The book contains two software testing tools, one of which is particularly useful.

While it is running, you can move a slider to have it bind memory resources and

learn the point of memory use where your software performance begins to suffer.

This is very useful, and is much easier than trying to load up many other applications.


Software testing is a critical area of development that is still in the process of being

codified into patterns for reuse. This book demonstrates many of the currently available

strategies which can be used as reference.

转载于:https://www.cnblogs.com/caozhu1/archive/2011/05/28/2060666.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值