探索式软件测试

探索式软件测试:

在敏捷测试中应用非常广泛

没有固定的测试用例,有一些测试思想和固定的框架以及一些测试场景,来完成测试工作。

即不同的测试思想,不断的应用这些测试思想,本身就是一些策略

自动化测试

手工测试

局部探索性测试

全局探索式测试

混合探索式软件测试

漫游与测试中的棘手问题

手工测试

软件缺陷的根源:

来自软件开发本身!

两种缺陷:

程序员引入缺陷

运行环境导致的缺陷

测试环境和上线环境相差很大

缺陷预防和检测

1.设计更好的设计规范

2.实施代码审核制度 (代码review)

3.运行代码静态分析工具

(代码是否规范,提高代码质量)

4.运行单元测试工具

(自动化测试居多)

敏捷测试中的重构:只是改变实现方法,入参和出参没有改变,因此可以更好的支持敏捷的开发

根本性问题:

开发人员只能是一个糟糕的测试者

处于静止状态的软件

缺乏数据

缺陷检测:

自动化测试:

测试人员编写代码来测试一个应用

selenium

适合用来测试流程固定或者大部分功能以前没有问题,是否依旧没有问题

自动化测试不是用来发现更多的bug,开发的初期很少引入自动化测试

手工测试:

点点点

快速执行,快速执行

自动化测试:

需要测试人员编写代码-----开发人员

花费太多的时间来开发测试代码,减少测试项目时间

自动化测试很炫,可以重复执行多次

自动化测试适合在测试环境中运行

自动化测试局限:

预言家的难题:

如何才能知道被测软件确实完成了他应完成的任务?

被测软件是否输出了正确的结果?

在运行中是否会带来副作用?

自动化测试擅长问题:

1、程序崩溃

2、系统死机

3、程序挂起

4、突发异常

5、原有能用的功能出现问题

过度的依赖自动化测试会为程序的最终成功带来隐患

手工测试缺点:

手工测试很慢,没有规律

不可反复使用

发现问题后不能重现

测试人员的水平决定了手工测试的质量

使用细化的测试用例进行测试,则却笑变通

建议:

测试用例不要使用太细节的描述,而是面试一些笼统的用户使用场景

(对所有字段做输入判断测试)

(输入判断测试测试那些东西?)

手工测试也可以使用自动化测试工具

探索式软件测试

完全抛开测试用例,使用定义的比较笼统的测试用例,称之为探索式软件测试

特点:

1、根据收集到的信息,天马行空,自由发挥

2、测试结果、测试实例和测试文档在测试执行时创建

3、探索式测试适用于“敏捷开发过程”

敏捷:小步快跑,不断的持续集成

4、测试人员有可能没有测试重点

探索式软件测试

局部探索式测试

针对测试对象局部内容进行测试的策略,例如:一个页面,一个输入框等测试策略

全局探索式测试

使用测试集来确定软件是否已经达到发布的质量标准

测试集中的测试用例都是相互有联系的整体

确定了如何对软件进行探索式测试的整体方向

测试目标

所有的重要任务都完成了,而剩下没做的事情是比较次要的,做到这一点就可以尽早尽可能地降低发布风险

方法:

测试是一个不停进行抉择的过程,测试和人员必须季节执行测试用例时和分析现有信息所涉及的各种复杂性,这有助于从多种可行方案中做出正确选择

局部探索式测试法

测试人员不需要知道很多信息就可以完成测试任务,局部测试的重点是把测试经验、专业知识、软件在操作环境下如何构建和运行的知识结合在一起,

使我们在测试过程中做出正确的决定

测试的原则

把测试工作简化为先在所有输入(或者运行环境等)的全体集合中选择一个子集,最后在输入时使用选中的子集,最后通过推理认定是否这些输入已经足够多了

最终产品发布后,再进行测试已经无法提高已发布代码的质量了

对于无限的测试,我们唯一的希望寄托于我们选择了正确的输入和其他的测试策略

随机测试不是好的测试方法,因为他不是缺少必要的策略

探索式测试的精髓:他有一些方针、方向和策略。

五要素之一:用户输入

输入:

输入指的是由环境产生的一种刺激,该刺激导致被测试的应用有所响应

分类:

1、原子输入

例如:输入一个数字、点击一个按钮

2、抽象输入

例如:1-25535之间的任何一个原子输入长度值

3、考虑各种输入之间会相互影响

4、输入值得顺序

例如:

1)单独搜索CD没有问题,单独搜索MV没有问题,混合搜索NV和CD 有问题

2)a和b 的输入组合,ab,ba

3)abc的输入组合:abc,bac,bca等

4)购物车测试,先买书,捷航。为空的时候结账,买一本后结账,然后再买一本

软件的核心功能:

1、接收输入

2、产生输出

3、存储数据

4、进行运算

程序的错误处理程序是重点:

大量的代码除了处理程序的正常逻辑之外

还需要大量的代码处理各种错误和异常情况

微软代码中:50%的代码是用来实现功能的,50%的代码用来做容错(即提示错误信息和异常情况),因,测试设计的测试用例的一半是正常的操作,另外一半做不正常的操作

错误处理程序

1、输入筛选器

防止非法的输入值被传递给应用程序的功能代码

确认开发人员是否正确实现了筛选器

确认是否考科一绕过输入的屏蔽器

2、输入检查

通过if then else case select 等方式实现

测试人员关注错误提示信息,挖掘其他可以触发错误的方式

3、异常代码处理

错误的提示信息比较笼统

确认异常产生的输入、进行修改和引申变化,确认出现异常的函数,通过运行调用次函数的测试用例,尝试查询是否可以发现新的缺陷

常规输入

没有特定的格式或者含义,开发计划中的输入,真实用户经常用的输入

例如:字母和数字等

非常规输入

比较特殊的情况下才会发生,某些特殊条件才会触发的输入

例如:ctrl+c shift+c,esc,ctrl

操作胸膛保留字

不同的字符集,本地化的问题

默认输入

在空白的文本框中不输入任何东西

程序界面元素设定的默认值

测试方法

为空的时候直接提交程序处理

去掉页面默认值后,提交程序处理

修改默认值,增加?减少?变化类型等方式

使用输出来指导输入

把程序的主要输出结果列出来,确定哪些输入会引发这些输出

输入和输出配对,保证大部分场景都被测试过

考虑多次输入(相同值和不同值),对输出的影响

从保存起来的输出结果思考,改动这些值或者改变他们的功能(大小和类型等),可以测试该值对系统的一些影响

五要素之一:状态

软件所处的一种现状

每种状态决定了系统有不同的表现,基于各种状态就可以做不同类型的测试

使用状态信息来帮助寻找相关的输入

使用状态信息来便是重要的输入序列

五要素之一:代码路径

一条代码路径就是一连串的代码语句,始于软件开始运行的语句,种植于一条特定的语句

五要素之一:用户数据

软件一般要存储海量的数据

五要素之一:运行环境

操作系统

当前配置

网络拓扑

驱动程序

文件系统

网络带宽

局部探索式测试

总结:局部探索式测试的每一步都是根据软件过去和当前的运行状况、软件在测试时表现出来的各种行为和软件运行小时的各种信息及时决定

全局探索式测试

探索式测试的几个目标:

理解应用程序如何工作,他的接口看起来怎样,他实现了那些功能

强迫软件展示其全部能力

验证软件可以达到设计和发布的要求

找到缺陷

探索各种软件的极端情况来发现潜在的问题,发现为被测试过的功能或者包含缺陷多的功能

指南测试法

测试人员通过阅读用户手册并严格遵守手册的建议执行操作

如果手册描述了某个特性以及如何使用该特性,则需要进行详细测试

目的是尽量执行手册中提交的场景,验证软件实现的软件特性,也验证用户手册的准确性

指南测试法——变种

博客测试法(第三方建议)

专家测试法(根据抱怨或者用户评论)

竞争对手测试法

卖点测试方法

软件最核心的功能,用户希望使用的功能就是卖点

销售人员会花费大量的时间给用户演示这些程序的卖点,他们会创造出很多出彩的使用场景

测试人员应该和销售人员保持好关系,获取各种销售方面的信息,进一步探索软件的使用场景

地标测试法

极限测试法

快递测试法

深夜测试法

遍历测试法

历史区测试法

娱乐区测试法

旅游区测试法

破旧区测试类型

混合探索式测试

通过场景操作引入变化

漫游测试

通过漫游测试引入变化

棘手的几个问题

漫无目的性

暂时性

单调性

健忘

原文地址:https://www.cnblogs.com/python-xiakaibi/p/8460607.html

时间: 2024-10-31 11:47:46

探索式软件测试的相关文章

[ 测试思维 ] 探索式软件测试

非常不错的关于探索式软件测试的学习资料 1.探索式测试简析 作者:微软 史亮 http://pan.baidu.com/s/1c2D4tAo 2.探索式测试白皮书 作者:淘宝 季哥 http://pan.baidu.com/s/1qYFNG3y

《探索式软件测试》读书笔记(上)

<探索式软件测试>读书笔记(上) 2015-05-12 一.局部探索式测试 1.如何测试用户输入  1)合法输入和非法输入    输入筛选器   输入检查   异常处理代码  2)常规输入还是非常规输入  3)默认输入或用户提供的输入  4)使用输出来指导输入选择 2.如何测试软件状态 3.代码路径 4.用户数据 5.运行环境二.全局探索性测试 分类 方法 商业区 指南测试法 卖点测试法  地标测试法  极限测试法  快递测试法  深夜测试法  遍历测试法  历史区 恶邻测试法  博物馆测试法

12.探索式软件测试

又是James的大作.相见恨晚,可惜出版5年之后才发现这本书.书中的大部分内容都在微软内部的大型项目上成功应用过. 不论是测试还是开发,都应该仔细读读,对提高自己的程序设计大有益处. 在微软公司,通过使用指南测试法和卖点测试法,可以提前确定那些关键的软件特性,也就是这里的地标.在选择地标后,要确定他们的前后顺序,然后从一个地标执行到另一个地标来探索应用程序,直到访问了列表中的全部地标.在这个过程中,需要记录使用过了哪些地标,并创建一个地标覆盖图来标识工作的进展(可以考虑使用思维导图). 1.全局

15.探索吧!深入理解探索式软件测试

1) 测试的很多思维不仅适用于工作也适用于生活,而那一刻,在她的面前,我却退缩了.Elisabeth则以她的热情和专业积极推动着敏捷测试,而这也为她赢得了2010年度的敏捷联盟Gordon Pask奖,该奖的设立正是为了表彰像她一样对敏捷实践做出了卓越贡献的人们. 2)探索式测试很重要. 尽管,将此方式运用于任何种类的开发均能产生价值,然而,它最适合于那种快速循环和突发变化很常见的敏捷开发.开发和测试的方法有很多共通之处. 3) 太让人失望了,不管我们写多少测试,也不管我们执行多少测试用例,都没

&lt;&lt;探索式软件测试&gt;&gt;第四章 全局探索式测试法

第四章 全局探索式测试法 1.探索软件 探索式测试有以下几个目标: a.理解应用程序如何工作,他的接口看起来怎样,他实现了哪些功能 b.强迫软件展示其全部能力 c.找到缺陷 2.旅游者比喻 (1)商业区测试类型 a.指南测试法(The Guidebook Tour) 旅游手册--用户说明书 指南测试法要求测试人员通过阅读用户手册并严格遵照手册的建议执行操作. 这个测试法不仅可以验证软件确实实现了手册所描述的各种特性,同时也验证了用户手册的准确性. 这个测试法的变种: *博客测试法(Blogger

&lt;&lt;探索式软件测试&gt;&gt;第二章 手工测试

第二章 手工测试 1.软件缺陷的根源 本书讨论两种缺陷: a.程序员引入 b.运行环境导致 2.缺陷预防和检测 (1)缺陷预防 缺陷预防技术一般是从开发角度来说的,包括: a.更好的设计规范 b.是时代码审核制度(code review) c.运行代码静态分析工具(static analysis tool) d.运行单元测试(unit testing) 所有缺陷预防技术都有以下根本问题: a.开分人员是糟糕的测试者 b.处于静止状态的软件 c.缺乏数据 (2)缺陷检测 测试人员一般使用两种形式的

探索式软件测试--第二章 手工测试

1.软件缺陷的根源 (1)本书讨论两种缺陷:a.程序员引入b.运行环境导致 2.缺陷预防和检测 (1)缺陷预防缺陷预防技术一般是从开发角度来说的,包括:a.更好的设计规范b.是时代码审核制度(code review)c.运行代码静态分析工具(static analysis tool)d.运行单元测试(unit testing) 所有缺陷预防技术都有以下根本问题:a.开分人员是糟糕的测试者b.处于静止状态的软禁c.缺乏数据 (2)缺陷检测测试人员一般使用两种形式的动态测试:a.自动化测试(通过编写

探索式软件测试--第三章 局部探索式测试法

1.想不想测试软件? 局部性测试的重点把测试经验.专业知识.软件在操作环境下如何构建和运行的知识结合在一起,是我们在测试中做出正确决定.决策分为5部分:a.输入(input)b.状态(state)c.代码路径(code path)d.用户数据(user data)e.执行环境(execution environment) 2.测试就是有所变,有所不变 测试人员进行测试时必须回答如下问题:a.软件运行时的表现是否符合设计预期?b.用户为了某个功能而购买了软件,可是软件是否实现了这个功能呢?c.软件

&lt;&lt;探索式软件测试&gt;&gt;附录一 经营成功的测试职业生涯

附录一 经营成功的测试职业生涯对于你参加的每个项目,都有两部分(不一定相等)的任务.第一部分的人物是保证当前测试项目获得成功.第二部分的任务是学习你应该做些什么以便使下一个测试项目获得成功. 1.上山(1)重复做任何一件事,绝不要重复两次而不意识到或质疑这其实是个问题.测试自动化世界解决重复劳动的答案. (2)技术测试人员常常会对软件失效进行分析.分析缺陷时,我们从开发人员的失败中学习如何编写可靠的代码.我们也分析那些被我们忽略的缺陷.分析我们的成功也同样重要.理解我们成功的原因很重要,只有这样