How to Break Software: A Practical Guide to Testing
暫譯: 如何破解軟體:實用測試指南

James A. Whittaker

  • 出版商: Addison Wesley
  • 出版日期: 2002-05-09
  • 售價: $1,530
  • 貴賓價: 9.5$1,454
  • 語言: 英文
  • 頁數: 208
  • 裝訂: Paperback
  • ISBN: 0201796198
  • ISBN-13: 9780201796193
  • 相關分類: 軟體工程軟體測試
  • 立即出貨(限量) (庫存=2)

買這商品的人也買了...

相關主題

商品描述

How to Break Software takes a very applied and non-rigid approach to teaching how to test software for common bugs. It is a departure from conventional testing in which testers prepare a written test plan and then use it as a script when testing the software. Instead of relying on a rigid plan, it should be intelligence, insight, experience and a “nose for where the bugs are hiding” that guide testers. This book helps testers develop this insight.

The techniques presented in this book not only allow testers to go off-script, they encourage them to do so. Don't blindly follow a document that may be out of date and that was written before the product was even testable. Instead, use your head! Open your eyes! Think a little, test a little and then think a little more.

Table of Contents

Preface.
Dedication.

Chapter Summaries.

 

I. INTRODUCTION.

 

 

1. A Fault Model to Guide Software Testing.

The Purpose of Software Testing.
Understanding Software Behavior.
Understanding Software's Environment.
The Human User.
File System User.
The Operating System User.
The Software User.

Understanding Software's Capabilities.
Testing Input.
Testing Output.
Testing Data.
Testing Competition.

Summary and Conclusion.
Exercises.
References.
 

II. USER INTERFACE ATTACKS.

 

 


2. Testing from the User Interface: Inputs and Outputs.

Using the Fault Model to Guide Testing.
Exploring the Input Domain.
First Attack: Apply inputs that force all the error messages to occur.
Second Attack: Apply inputs that force the software to establish default values.
Third Attack: Explore allowable character sets and data types.
Fourth Attack: Overflow input buffers.
Fifth Attack: Find inputs that may interact and test various combinations of their values.
Sixth Attack: Repeat the same input or series of inputs numerous times.

Exploring Outputs.
Seventh Attack: Force different outputs to be generated for each input.
Eighth Attack: Force invalid outputs to be generated.
Ninth Attack: Force properties of an output to change.
Tenth Attack: Force the screen to refresh.

Conclusion.
Exercises.
References.


3. Testing from the User Interface: Data and Computation.

Testing Inside the Box.
Exploring Stored Data.
Eleventh Attack: Apply inputs using a variety of initial conditions.
Twelfth Attack: Force a data structure to store too many/too few values.
Thirteenth Attack: Investigate alternate ways to modify internal data constraints.

Exploring Computation and Feature Interaction.
Fifteenth Attack: Force a function to call itself recursively.
Sixteenth Attack: Force computation results to be too large or too small.
Seventeenth Attack: Find features that share data or interact poorly.

Conclusion.
Exercises.
 

III. SYSTEM INTERFACE ATTACKS.

 

 


4. Testing from the File System Interface.

Attacking Software from the File System Interface.
Media-based Attacks.
First Attack: Inject faults that simulate memory access problems.
Second Attack: Inject faults that simulate network problems.
Third Attack: Damage the media.

File-based Attacks.
Fourth Attack: Assign an invalid file name.
Fifth Attack: Vary file access permissions.
Sixth Attack: Vary/corrupt file contents.

Exercises.


5. Testing from the Software/OS Interface.

Attacking Software from Software Interfaces.
Record-and-Simulate Attacks.
Observe-and-Fail Attacks.
Conclusion.
Exercises.
 

IV. CONCLUSION.

 

 


6. Some Parting Advice.

You'll Never Know Everything.
Bug Hunts.
Friday Afternoon Bug Fests.
Conclusion.
References.
 

APPENDICES.

 

 


Annotated Glossary of Programming Terms.
Appendix A. Testing Exception and Error Cases Using Runtime Fault Injection.

Introduction.
A Mechanism for Runtime Fault Injection.
Fault Selection.
Conclusions.
Acknowledgments.
References.


Appendix B. Using HEAT: The Hostile Environment Application Tester.

Canned HEAT User Guide.
The Application Band.
The Monitor Band.
Fault Injection Bands and Their Functionality.
The Network Band.
Disk Storage.
Memory.


Appendix C. What is Software Testing? And Why is it so Hard?

Introduction.
The Software Testing Process.
Phase One: Modeling the Software's Environment.
Phase Two: Selecting Test Scenarios.
Phase Three: Running and Evaluating Test Scenarios.
Phase Four: Measuring Testing Progress.
Conclusion.
References.


The Software Testing Problem.

商品描述(中文翻譯)

《如何破解軟體》採取了一種非常實用且不拘泥於形式的方法來教導如何測試軟體以找出常見的錯誤。這與傳統的測試方法有所不同,傳統方法中測試人員會準備一份書面的測試計畫,然後在測試軟體時依據該計畫進行。相較於依賴僵化的計畫,測試人員應該依賴智慧、洞察力、經驗以及「嗅出錯誤藏身之處的能力」來指導測試。這本書幫助測試人員培養這種洞察力。

本書中提出的技術不僅允許測試人員偏離計畫,還鼓勵他們這樣做。不要盲目遵循可能已過時且在產品尚未可測試之前就已編寫的文件。相反,請用你的頭腦!睜開你的眼睛!多思考一下,測試一下,然後再多思考一些。

目錄

前言。
獻辭。
章節摘要。

I. 引言。

1. 指導軟體測試的故障模型。
軟體測試的目的。
理解軟體行為。
理解軟體的環境。
人類使用者。
檔案系統使用者。
作業系統使用者。
軟體使用者。
理解軟體的能力。
測試輸入。
測試輸出。
測試數據。
測試競爭。
總結與結論。
練習。
參考文獻。

II. 使用者介面攻擊。

2. 從使用者介面進行測試:輸入與輸出。
使用故障模型指導測試。
探索輸入範圍。
第一次攻擊:施加輸入以強迫所有錯誤訊息出現。
第二次攻擊:施加輸入以強迫軟體建立預設值。
第三次攻擊:探索允許的字元集和數據類型。
第四次攻擊:溢出輸入緩衝區。
第五次攻擊:尋找可能互動的輸入並測試其各種組合。
第六次攻擊:重複相同的輸入或一系列輸入多次。
探索輸出。
第七次攻擊:強迫每個輸入產生不同的輸出。
第八次攻擊:強迫產生無效的輸出。
第九次攻擊:強迫輸出的屬性改變。
第十次攻擊:強迫螢幕刷新。
結論。
練習。
參考文獻。

3. 從使用者介面進行測試:數據與計算。
在盒子內進行測試。
探索儲存的數據。
第十一攻擊:施加使用各種初始條件的輸入。
第十二攻擊:強迫數據結構儲存過多/過少的值。
第十三攻擊:調查修改內部數據約束的替代方法。
探索計算與功能互動。
第十五攻擊:強迫函數自我遞迴調用。
第十六攻擊:強迫計算結果過大或過小。
第十七攻擊:尋找共享數據或互動不良的功能。
結論。
練習。

III. 系統介面攻擊。

4. 從檔案系統介面進行測試。
從檔案系統介面攻擊軟體。
基於媒體的攻擊。
第一次攻擊:注入模擬記憶體存取問題的故障。
第二次攻擊:注入模擬網路問題的故障。
第三次攻擊:損壞媒體。
基於檔案的攻擊。
第四次攻擊:指定無效的檔案名稱。
第五次攻擊:變更檔案存取權限。
第六次攻擊:變更/損壞檔案內容。
練習。

5. 從軟體/作業系統介面進行測試。
從軟體介面攻擊軟體。
錄製與模擬攻擊。
觀察與失敗攻擊。
結論。
練習。

IV. 結論。

6. 一些告別建議。
你永遠不會知道一切。
錯誤狩獵。
星期五下午的錯誤聚會。
結論。
參考文獻。

附錄。

附註的程式術語詞彙表。
附錄A. 使用運行時故障注入測試例外和錯誤案例。
介紹。
運行時故障注入的機制。
故障選擇。
結論。
致謝。
參考文獻。

附錄B. 使用HEAT:敵對環境應用測試器。
HEAT使用者指南。
應用程式帶。
監控帶。
故障注入帶及其功能。
網路帶。
磁碟儲存。
記憶體。

附錄C. 什麼是軟體測試?為什麼這麼困難?
介紹。
軟體測試過程。
第一階段:建模軟體的環境。
第二階段:選擇測試場景。
第三階段:執行和評估測試場景。
第四階段:測量測試進度。
結論。
參考文獻。

軟體測試問題。