《软件测试》总结

《软件测试》Ron Patton著。

这本书很全面地介绍了软件测试的理论基础知识,也就是看了这本书对软件测试有了一定的了解,帮助我找到了一份关于软件测试的工作。在看这本过程中也有一些有疑问的地方,这里主要是针对自学软件测试以来对软件测试的理解的一点总结,并把自己不懂的地方梳理一遍。

一、软件测试工程师究竟要做些什么?

这本书中给到一个相对完整的答案:软件测试员的目标就是尽可能早地找出软件缺陷,并确保其得以修复。

在面试过程中,面试官曾经告诉过我,并不是为了找bug,而是协助开发人员完善产品。有道理,于是就更加同意一个忘了是在哪里看到的说法:软件测试有以下两个内容。(大概意思是以下)

1)检验需求分析文档所要求的功能是否完成。

2)检验产品是否符合最终用户的体验。

二、软件开发生命周期模式

4种最常用的模式

1、大爆炸模式

简单。几乎没有计划、进度安排和正规开发过程,所有精力都花在开发软件和编写代码上。尽量避免在此模式下进行测试。

2、边写边改模式

由于开头机会没有计划和文档编制,项目小组得以尿素展现成果。因此,边写边改模式极其适合意在快速制作并且用完就扔的小项目,例如原型范例和演示程序。

3、瀑布模式

强调三点:

1、瀑布模式非常强调产品定义

2、瀑布模式各步骤是分立的,没有交叉的。

3、瀑布模式无法回溯,一旦进入某一个步骤,就要完成该步骤的任务,才能向下继续。

4、螺旋模式(有点包含以上三种模式)

螺旋模式的总体思想是一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接收客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。

螺旋模式每一次循环包含6个步骤:1)确定目标、可选方案和限制条件;2)明确并化解风险;3)评估可选方案;4)当前阶段开发和测试;5)计划下一阶段;6)确定进入下一阶段的方法。

5、有些公司采用的模式:敏捷软件开发,快速原型,极限编程,进化开发等。

三、测试的方式

1、黑盒测试(功能性测试)

2、白盒测试(访问代码,能够查看和审查)

又可以分:

1、静态测试 ——测试不运行的部分,即检查和审核

2、动态测试 ——通常意义上的测试,即使用和运行软件

于是结合两种就出现了以下测试方式:

1、静态黑盒测试——测试产品说明书,并在软件编写之前找出问题(找出根本性问题)

2、动态黑盒测试——不深入代码细节测试软件的方法。

动态黑盒测试测试用例的方法

1)等价类划分

2)边界值分析

3)数据测试

4)状态测试

失败状态测试

1)竞争条件测试和时序错乱

2)重复测试——是否存在内存泄露

   压迫测试——尽可能地限制软件的必要条件

   重负测试——尽量提供条件任其发挥

5)通过性测试和失效性测试

失效性测试——纯粹为了破坏软件而设计和执行的测试用例

其他:像笨拙的用户那样做、在已找到软件缺陷的地方再找找、像黑客一样思考问题、凭借经验,直觉和预感。

3、静态白盒测试——通过正式审查和检验检查代码的细节

即在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时称为结构化分析

1)正式审查——进行静态白盒测试的过程。

确定问题、遵守规则、准备、编写报告4个基本要素。

(1)同事审查——最简单,要求最低

(2)走查——比同事审查更正规化的下一步

(3)检验——最正式的审查类型。表述者不是原来的程序员。

2)通用代码审查清单

(1)数据引用错误

(2)数据声明错误

(3)计算错误

(4)比较错误

(5)控制流程错误

(6)子程序参数错误

(7)输入/输出错误

(8)其他检查

4、动态白盒测试——利用查看代码功能(做什么)和实现方式(怎么做)得到的信息来确定哪些需要测试、哪些不需要测试、如何开展测试。(也称结构化测试structural  testing

测试用例方法:

1)分段测试

(1)单元测试(模块测试)

(2)集成测试

(3)系统测试

以上三种递增测试有两条路径:自底向上(bottom-up)和自顶向下(top-down

自底向上测试中要编写测试驱动模块调用正在测试的模块。

自顶向上测试有点像小规模的大爆炸测试。(编写一小段称为桩Stub的代码充当接口模块。)

2)数据覆盖

数据流、次边界、等式和公式、错误强制

3)代码覆盖

程序语句和代码行覆盖

分支覆盖

条件覆盖

没有指明动静态时好像通常指的是动态的。

四、其他测试的技术

配置测试

兼容性测试

外国语言测试

易用性测试

文档测试

软件安全性测试

网站测试

五、测试的补充

自动测试、缺陷轰炸、Beta测试(让他人验证和确认软件的常用过程)

性能测试、特别测试

六、测试文档

测试计划==》测试设计说明==》测试用例说明==》测试过程说明

一些典型问题:

1、 问:软件测试主要分哪些阶段?

答:

和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段。

单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。

集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的。。

系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。

验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。

2、软件测试工程师所应具备的职业素质

优秀的测试工程师除了具备“专业技能、行业知识”外,还必须具备相应的交流技巧、组织技能、实践技能和积极态度。除此之外,还应该具备一些基本的个人素养:即专心、细心、耐心、责任心和自信心“五心”

3、软件测试职业发展方向

 

原文地址:https://www.cnblogs.com/cailingsunny/p/5134615.html