1.软件测试的经典分类方式:
A.黑盒测试(逻辑和功能性测试)和白盒测试(流程和代码校验,语句、判断、条件、多重条件判断等)。
B.单元(模块)测试、功能测试、系统测试(能力、容量、强度、易用性、安全性、性能、存储、配置、兼容、安装、可靠性、可恢复性、适用、文档、过程)、验收测试.

2.测试用例的设计过程:
A.把需求集划分成若干子集,每个子集包含若干等价元素,而只取每个子集的有限个元素来设计测试用例。
B.寻找软件需求的边界集合,边界集合包括了输入数据集的取值边界和输出集合的边界集,分别对其进行边界测试和超越边界测试。
C.加入适当的错误猜测测试用例。
D.除了测试软件本身的需求外,还要设计测试软件“不应该”功能的测试用例。

3.人工测试
A.代码检查(CodeView),小组形式(3~5人)以会议形式进行,coder自已进行代码讲解,参与人员逐行进行代码错误检查。可发现简单的逻辑和语言方面的错误。
B.代码走读。提供简单的测试用例,进行测试用例推演和提问,理解coder的逻辑流程,进而发现可能的错误.
c.桌面审查和同行评分。

4.单元测试方法:
A.增量测试,从依赖的底部开始测试,每确定一个模型没有问题,就增加一个依赖它的模块进行测试。
B.自底向上的测试,个人感觉就是增量测试法
C。自顶向下的测试,这种测试方法可能需要写较多的驱动模块(Drive Block)和桩模块(Stub Block),所谓驱动模块指的是待测试模块的客户端,就是使用测试模块的模块,而桩模块指的是待测试模块所依赖的服务模块.

    以上就大概是《软件测试艺术》的全部内容了,20多年前的书,也无怪乎少了很多现今应该具备的一些内容。比如测试工具、设计和测试的关系、测试和软件工程、自动化测试等等内容。
    比较专业的测试工具通用的如WinRunner、LoadRunner,面向语言的白盒自动化测试工具Junit(java)、Nunit(C#等.net语言)、CPPUnit(C++),内存检测工具如BoundChecker,面向intel平台的性能测试工具VTune、此外,nvidia和amd也有自己的GPU性能分析工具.这些工具能为专项的测试节约大量的时间和精力。
    在人工测试这一章里,作者提到了代码检查,但这只能作为简单逻辑错误检查的方式方法,如果要尝试从宏观架设、逻辑层次结构方面去检查应用程序的错误,个人认为设计评审、检查会有效得多,在这儿也可以认为设计评审就是一次设计测试。程序员能从设计评审中得到更多有益的设计思想和其它程序员的设计方式方法。
  此外,自动化的白盒测试个人认为应该是程序员在设计的时候就应该设计完大部分的测试用例,而每完成一个功能,就执行所有测试用例进行测试,而不要等到全部功能完成才统一测试,这也是极限编程中值得学习的一点。