第一部分 软件测试综述

第一章 软件测试的背景

1.软件测试员的目标:尽可能早地找到软件缺陷,并确保其能得以修复。

2.仅仅测试程序是否按预期方式运行有何问题:程序能完好的跑通并不代表软件不存在缺陷,有些缺陷是功能实现不完整,或者说未实现原本应该有的功能。还有可能出现本不该实现的功能却出现了这样的功能也是软件缺陷。所以单纯的测试程序是否按预期方式运行存在很大的问题。

3.好的测试人员力求完美,但不可求完美,尽力接近目标。要知道何时追求“完美”,何时做到“够好”。

4.给出理由说明产品说明通常是软件产品制造中缺陷的最大来源:

说不出来就做不出来。在许多情况下说明书没有写;也有可能因为说明书不够全面、经常改动,或者整个开发小组没有很好的沟通。

第二章 软件开发过程

1.在软件行业中,用于描述制造出来并交付他人的软件产品组件的术语是可交付的部分(deliverable)。

2.对于软件产品不仅限于代码这点事,非软件部分包括:

帮助文件 用户手册 样本和示例  标签和不干胶  产品支持信息 图标和标志 错误信息 广告和宣传材料 安装 说明文件

3.软件开发生命周期模式:软件产品从最初的构思到公开发行的过程。

4.四种最常用模式:大爆炸模式、边写边改模式、瀑布模式、螺旋模式。

5.程序员在编写代码之前需要完成的任务:开发小组了解客户需求,分析在产品说明书中定义功能特性,设计,然后才是编写代码

6.正式被锁定不能修改的产品说明书的缺点:当客户需求分析不够的时候,可能导致无法按预期完成;当客户需求变化时,则很难修改软件;失去修改软件的灵活性。

7.软件开发大爆炸模式的最大优点是:简单。

8.采用边写边改模式何时进行软件发布:只要认为做的足够了就会发布。没有真正的退出标准,除非进度到了或者有人阻止则会结束。

9.瀑布模式的特点:非常强调产品定义;各步骤是分立的,没有交叉;无法回溯(最大的缺点),只有完成该步骤的任务才能到下一步任务。

10.螺旋模式的优点:软件测试人员可以知道产品的来龙去脉,可以尽早的发现问题的所在不至于在最后一分钟还在进行测试,节省时间。

第三章 软件测试的实质

1.软件测试员要学会的关键思想:如何把数据巨大的可能测试减少到可控的范围,以及如何 针对风险作出明智的抉择,哪些测试重要,哪些不重要。

2.图示最优测试

3.确认:是保证软件符合产品说明书的过程;

验证:是保证软件满足客户要求的过程。

4.软件质量保证人员的只要职责:创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法。

第二部分 测试基础

第4章 检查产品说明书(静态黑盒测试)

1.软件质量的定义:“满足客户要求”。

第5章 带上眼罩测试软件

1.动态黑盒测试:不深入代码细节测试软件的方法。

2.通过性测试和失效性测试

3.等价划分

4.数据测试:边界条件、次边界测试、默认|空白|空值|零值|无、非法|错误|不正确|垃圾数据。

5.状态测试:逻辑流程测试、失败状态测试。

6.其他黑盒测试。

第6章 检查代码

1.静态白盒测试:检查代码和设计,在不执行软件的条件下有条理的仔细审查软件设计、体系结构和代码,从而找出软件缺陷。也叫结构性分析。

2.正式审查:确定问题、遵守规则、准备、编写报告。

3.编写标准和规范:坚持 可靠性、可读性/维护性、移植性。

4.通用代码审查清单:数据引用错误、数据声明错误、计算错误、比较错误、控制流程错误、子程序参数错误、输入/输出错误、其他错误。

第7章 带上X光眼镜测试软件

1.总结前面学到的基本测试技术:静态黑盒测试(测试产品说明书)、动态黑盒(测试软件)、静态白盒(检查程序代码)。

2.动态白盒测试:也叫结构化测试,与静态黑盒测试(结构化分析)对比。动态白盒测试主要包括:

1)直接测试底层函数、过程、子程序和库。在Microsoft Windows中称之为应用程序编程接口(API);

2)以完成程序的方式从顶层测试软件,但是根据对软件运行的了解调整测试用例;

3)从软件获得读取变量和状态信息的访问权,以便确定测试与预期结果是否相符,同时强制软件以正常测试难以实现的方式运行;

4)估算执行测试时“命中”的代码量和具体代码,然后调整测试,去掉多余的测试用例,并补充遗漏的用例。

3.动态白盒测试盒调试的区别:目标不同。动态白盒测试的目标是寻找软件缺陷,而调试的目标是修复缺陷。

4.分段测试:单元(模块)测试和集成测试

在底层进行的测试称为单元测试或者模块测试,然后找出底层软件缺陷并修复之后,对模块的组合进行集成测试指直到整个产品(至少是整个产品的主要部分)在称为系统测试的过程中一起测试。可以分为两种:自底向上(bottom-up)和自顶向下(top-down)

5.桩(stub)的代码充当接口模块。

6.数据覆盖:数据流覆盖,次边界,公式和等式,错误强制。

7.代码覆盖:测试程序的状态及程序流程,设法进入和退出每一个模块,执行每一行代码,进入软件每一条逻辑和决策分支。(动态白盒测试)最简单的形式是利用编译环境的调试器通过单步执行程序查看代码。对于大多数程序进行代码覆盖测试要用到代码覆盖率分析器的专用工具。

主要包含:

1)程序语句和代码行覆盖;

2)分支覆盖,试图覆盖软件中的所有路径称为路径覆盖;

3)条件覆盖。(最好,综合了分支覆盖和语句覆盖)

8.小结:

静态黑盒测试是指:检查产品说明书,并在软件编写之前找出问题;

动态黑盒测试是指:在不了解软件产品如何工作的前提下进行测试;

静态白盒测试是指:通过正式审查和检验检查代码的细节;

动态白盒测试是指:在看到软件的工作方式时,根据获得的信息对软件进行测试。

9.测试桩和测试驱动的区别:测试桩是用于自顶向下的测试,它用自己替换低级模块。其对于要测试的高级代码,外表和行为就像低级模块一样。

测试驱动和测试桩相反,用于自底向上的测试。它是代替高级软件,更加有效地运行低级模块的测试代码。

10.总是首先设计黑盒测试用例。基于软件测试行为操作的认识程度来设计测试用例,然后利用白盒测试技术进行检查使其更加有效。

第三部分 运用测试技术

第8章 配置测试

1.配置测试(configuration testing):是指使用各种硬件来测试软件运行的过程。

2.如何计划执行配置测试:

1)确定所需的硬件类型;

2)确定有哪些厂商的硬件、型号和驱动程序可用;

3)确定可能的硬件特性、模式和选项;

4)将确定后的硬件配置缩减为可控制的范围;

5)明确与硬件配置有关的软件唯一特性;

6)设计在每一种配置中执行的测试用例;

7)在每一种配置中执行测试;

8)反复测试直到小组对结果满意为止。

3.获得硬件。

4.明确硬件标准。

5.对其他硬件进行配置测试。

第9章 兼容性测

1.软件兼容性测试:是指检查软件之间是否能够正确地交互和共享信息。

第10章 外国语言测试

第11章易用性测试

1.易用性是交互的适应性、功能性和有效性的集中体现。

2.用户界面(UI)测试。

3.为有残疾障碍的人员测试:辅助选项测试。

4.所有软件都有一个用户界面因此必须测试易用性。就算嵌入再深的软件也会以一种可见的界面呈现在用户的面前。

5.用户界面没有明确的对与错,怎么测试:符合标准与规范。

6.会影响软件易用性的残疾:视力损伤、听力损伤、认知和语言障碍、运动损伤。

第12章 测试文档

1.软件文档的类型

2.文档测试的重要性:提高易用性、提高可靠性、降低支持费用。

3.审查文档时要找什么:测试文档有两个等级1)非代码——静态过程的技术编辑或技术校对;2)文档和代码结合一起——动态测试。

4.启动windows画图程序,应该测试的文档例子:

如:翻滚帮助——当鼠标停在某个画图程序绘图工具上方看到的弹出方式描述;

从Help菜单选择About命令显示版权和许可协议窗口。

按F1启动联机帮助,阅读手册、按索引选择或者输入关键词搜索。

。。。。。。

第四部分 测试的补充

第15章 自动测试盒测试工具

1.工具和自动化的主要属性:

* 速度

* 效率

* 准确度和精确度

* 节省资源

* 仿真和模拟

* 坚持不懈

注意:软件测试工具不能代替软件测试员,只是帮助和辅助软件测试员更好的工作。

2.测试工具:

1)查看器和监视器;

查看器:代码覆盖率分析器(入侵式工具)、通信分析器;

2)驱动程序:是控制和操作被测试软件的工具。

批处理文件

3)桩:与驱动程序是一样属于白盒测试技术。当软件需要与外部设备进行通信时就经常要用到桩。

4)压力和负载工具

5)干扰注入器和噪声发生器:

6)分析工具:文字处理软件,电子表格软件、数据库软件、文件比较软件、抓屏和比较

软件、调试器、二进制——十六进制计算器等等

3.软件测试自动化:

1)宏录制和回放

2)可编程的宏

3)完全可编程的自动测试工具

关于市面上流行的测试自动化产品的信息

Software Development Technologies at www.sdtcorp.com

Mercury at www.mercury.com

Segue Software at www.segue.com

4.随机测试:猴子和大猩猩

模拟用户可能的操作的自动化类工具称为测试猴子

5.使用测试工具和自动化的实质

第16章 缺陷轰炸和beta测试

1.让别人测试你的软件

2.测试共享

3.beta测试:软件分发给选定的潜在客户群,让他们在实际环境中使用软件。

4.外包测试

第五部分 使用测试文档

第17章 计划测试工作

1.测试计划的目的:规定测试活动的范围、方法、资源和进度;明确正在测试的项目、要测试的特性、要找执行的测试任务、每个任务的负责人,以及与计划相关的风险。

2.测试计划只是创建详细计划过程的一个副产品,重要的是计划过程,而不是产生的结果文档。

第18章 编写和跟踪测试用例

1.测试用例计划的目标:

1)组织

2)重复性

3)跟踪

4)测试(或者不测试)证实。

2.测试用例计划综述

测试设计说明:目的是组织和描述针对具体特性需要进行的测试。

测试用例说明:为编写用于输入的实际数值和预期输出结果数值。

测试过程说明:为明确指出为实现相关测试设计而操作软件系统和试验具体测试用例的全部步骤。

3.测试用例组织和跟踪

第19章 报告发现问题

1.报告软件缺陷的基本原则:

1)尽快报告软件缺陷

2)有效描述软件缺陷

3)快速技巧提示

4)在报告软件缺陷时不要做评价

5)对软件缺陷报告跟踪到底

2.分离和再现软件缺陷

3.并非所有软件缺陷生来就是平等的

常用划分严重性和优先级

严重性:表示软件缺陷的恶劣程度,当用户碰到缺陷时影响的可能性和程度;

优先级:表示修复软件缺陷的重要程度和紧迫程度。

4.软件缺陷的生命周期

5.软件缺陷跟踪系统

6.假设正在windows计算器上执行测试,发现1+1=2,2+2=5,3+3=6,4+4=9,5+5=10,6+6=13写出一个软件缺陷标题和有效描述该问题的软件缺陷描述

标题:偶数之间的加法得到的结果比实际值大1

描述

测试用例:简单加法

设置步骤:启动计算器程序1.0版

再现步骤:尝试两个偶数相加,例如2+2,4+4,6+6

预期结果:所有数字对相加得到正确结果——2+2=4,4+4=8,。。。

实际结果:两个偶数相加,答案比正确值大1——2+2=5,4+4=9,6+6=13,依次类推。

7.软件缺陷生命周期的3个基本状态:打开、解决、关闭。

2 个附加状态:审查和推迟

未完待续。。。。。。

编程菜鸟的日记-《软件测试》Ron Patton著-读书笔记的更多相关文章

  1. 《JavaScript面向对象编程指南(第2版)》读书笔记(一)

    目录 一.对象 1.1 获取属性值的方式 1.2 获取动态生成的属性的值 二.数组 2.1 检测是否为数组 2.2 增加数组长度导致未赋值的位置为undefined 2.3 用闭包实现简易迭代器 三. ...

  2. 《JavaScript面向对象编程指南(第2版)》读书笔记(二)

    <JavaScript面向对象编程指南(第2版)>读书笔记(一) <JavaScript面向对象编程指南(第2版)>读书笔记(二) 目录 一.基本类型 1.1 字符串 1.2 ...

  3. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  4. 编程菜鸟的日记-Linux无处不在

    原文来自:http://www.linuxfederation.com/linux-everywhere Linux无处不在 “Linux无处不在.从空间站到微波炉到有Linux.”你可能听说很多以及 ...

  5. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习9

    #include <iostream> #include <fstream> #include <cstdlib> #include <string> ...

  6. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习8

    #include <iostream> #include <fstream> #include <cstdlib> const int SIZE=20; using ...

  7. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习7

    #include <iostream> #include <string> #include <cctype> using namespace std; int m ...

  8. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习6

    #include <iostream> #include <string> using namespace std; const int MSIZE=100; struct j ...

  9. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习5

    #include <iostream> using namespace std; const double N1=35000; const int N2=15000; const int ...

随机推荐

  1. vue组件通信的几种方式

    最近用vue开发项目,记录一下vue组件间通信几种方式 第一种,父子组件通信 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue 2.Child ...

  2. Spring Boot系列(二) Spring Boot 之 REST

    Rest (Representational Stat Transer) 是一种软件架构风格. 基础理论 架构特性 性能 可伸缩 简化的统一接口 按需修改 组件通信透明 可移植 可靠性 架构约束 C/ ...

  3. 好奇,项目根目录下的.editorconfig文件

    一..editorconfig文件是什么? 在项目里,大多时候都能看到.editorconfig文件,刚开始总是忽视掉它,认为它不太重要.但是,它的存在,必定有它的理由,于是,抽空来研究一下,它是什么 ...

  4. kettle使用记录

    1.linux系统抽取数据 export KETTLE_HOME=/home/oracle/Kettle/pdi-ce-6.1.0.1-196/data-integration export JAVA ...

  5. java接口,接口的特性,接口实现多态,面向接口编程

    package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...

  6. mui slider禁止滑动

    网上方法: mui('.mui-slider').slider().setStopped(true); 实际使用 mui('.mui-slider').slider().stopped = true; ...

  7. TopN案例

    准备三份数据 t1 2067 t2 2055 t3 2055 t4 1200 t5 2367 t6 255 t7 2555 t8 12100 t9 20647 t10 245 t11 205 t12 ...

  8. Django与Ajax

    一.Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...

  9. CocosCreator脚本中向依赖的组件赋值后, 被依赖的组件没有取到值的问题!

    问题描述: 两个节点parent&child(其中都包含脚本组件), parent脚本组件依赖了child组件, 节点关系如下图: parent脚本内容如下: child脚本内容如下: 预览时 ...

  10. TCP和UDP的区别以及使用python服务端客户端简单编程

    一.TCP.UDP区别总结 1.TCP面向连接(如打电话要先拨号建立连接):UDP是无连接的,即发送数据之前不需要建立连接 2.TCP提供可靠的服务,也就是说,通过TCP连接传送的数据,无差错,不丢失 ...