探索性测试

大纲

自动化测试

手工测试

局部探索式测试法

全局探索式测试法

混合探索式测试技术

漫游与测试中的棘手问题

手工测试   软件缺陷的的根源:来自软件开发本身,两种缺陷:程序员引入的缺陷,运行环境导致的缺陷

缺陷预防和检测  1、设计更好的设计规范 ,2、实施代码审核制度,3、运行代码静态分析工具,4 、运行单元测试工具(自动化测试居多)

以上几点方式有些根本性问题: 开发人员只能是个糟糕的测试者,处于静止状态的软件,缺乏数据

缺陷检测:自动化测试,通过编写代码来测试一个应用,手工测试,使用程序的用户界面,手工输入数据进行测试

关于自动化测试: 需要测试人员编写代码---开发人员,花费太多的时间来开发测试代码,而减少了测试项目的时间,自动化测试很炫,可以重复执行很多次,自动化测试适合在测试环境中运行,预言家的难题:如何才能知道被测软件确实完成了他应完成的任务? 被测软件是否输出了正确的结果?在运行中是否回来带来副作用。

自动化测试擅长找到饿问题:1、程序崩溃2、系统死机3、程序挂起 4、突发异常 5、原有能用的功能出现问题

手工测试:由人来动手进行测试,手脑并用,充分发挥测试人员的聪明才智,设计出真实的用户情况,在真实的用户环境中使用真实的用户数据,可以识别出显而易见的缺陷和难以察觉的缺陷,善于发现应用程序业务逻辑相关的错误。,缺点:手工测试很慢,没有规律,不可反复使用,发现问题后也不能重现,测试人员的水平决定了手工测试的质量,使用细化的测试用例进行测试,则缺少变通。建议:测试用例不要使用太细节的描述,而是描述一些笼统的用户使用场景。手工测试也可以使用自动化测试工具。

探索性测试,

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

特点:1、根据收集到的信息,天马行空,自由发挥。2、测试结果、测试实例和测试文档在测试执行是创建3、探索测试适用于 敏捷开发过程 4、测试人员可能没有测试重点

探索式测试方法:局部探索式测试法  针对测试对象的局部内容进行测试的测率,例如,一个页面,一个输入框等的测试测率。全局探索式测试方法 ,使用测试即用来确定软件是否已经满足正式发布所需达到的质量标准。测试集中的测试用例都是相互有联系的整体,确定了如何对软件进行探索式测试的整体方向。

传统的测试和探索式方式的区别

两者的关系为互补关系,而不是对立的

传统测试通过收集来的各种信息和文档,编写出正式的测试用例,测试人员根据测试用例来执行,在执行正式的测试用例的同时,可以使用探索式测试来让测试用例更加的丰富和富有变化,提高测试代码的覆盖率,找到更多的bug。

目前测试的现状

测试的目标:所有的重要任务都完成了,而剩下没做的事情比较次要的,我们做到这一点就可以今早尽可能的降低发布风险。

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

局部探索式测试方法:测试不需要知道很多信息就可以完成测试任务,局部测试的重点是把测试经验、专业知识、软件在操作环境下如何构建和运行的知识结合在一起,使我们在测试过程中做出正确的决定。

测试的无穷特性:1、测试运行时的表现是否符合设计预期 2、用户为了某个功能而购买软件,可是该软件是否实现了这个功能?3、软件运行时,是否足够快、足够安全、足够稳定、等等.解决以上问题的方式:在某个特定操作环境中运行该软件,并且模拟软件预期的使用方式来输入这些值。问题:输入的内容太多。

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

最终产品发布后,在进行测试已经无法提高发布代码的质量了。对于无限的测试,我们唯一的希望寄托于我们选择了正确输入和其他测试决策。随机测试不好的测试方,因为他缺少必要的策略。

五要素之一------用户输入

输入:输入指的是有环境产生的一种刺激,该刺激导致被测试的应该用有所相应。分类:1、原子输入例如输入一个数字一个按钮, 2、抽象输入 例如 1-24443 之间的任何一个原子输入长度值。

考虑各种输入之间会相互影响 ,输入值的顺序 例如:1 、单独搜索cd无问题,单独搜索视频无问题,混合搜索视频和cd则有问题,2、a和b的输入,组合 ab,ba 3、abc的组合输入:abc,bac,bca等,4、购物车测试,先买书,结账。 为空的时候结账,买一本后结账,然后再买一本。软件的核心功能:1、接受输入 2、产生输出 3、存储数据 4、进行运算。程序的错误处理程序是重点。大量的代码除了处理程序的正常的逻辑之外,还需要大量的代码处理各种错误和异常情况。

常规输入  没有特定的格式或含义,开发计划中的输入,真实用户经常用的输入,例如:输入字母和数字等。

非常规输入  在比较特殊的情况下才会发生,或者某些特殊条件才会出发的输入。

默认输入 在空白的文本框中不输入任何东西,程序界面元素设定的默认值,测试方法:为空的时候直接提交程序处理,修改默认值,增加?减少?变换类型等方式

使用输出来指导输入 :把程序的主要输出结果列出来,确定哪些输入会引发这些输出。输入和输出配对,保证大部分场景都被测试过,考虑多次输入(相同值和不同值),对输出的影响,从保存起来的输出结果思考,改动这些值或者改变他们的功能(大小河类型等),可以测试该值对此系统的一些影响。

五要素之一------- 状态 

状态: 软件的一个状态就是状态控件中的一个点,它有所有内部数据结构的取值来唯一确定。

通俗的说:单个输入、一些输入或者全部输入会被软件“记住”,从而让软件看起来不同。

状态是软件所有变量的交叉集,状态的无穷尽。应用程序和其运行环境进行交互和接受到的所有输入导致软件状态发生变化,

可以使用等价类方法来进行一些状态测试

五要素之一-------代码路径

一条代码路径就是一连串的代码语句,它起始于软件开始运行的语句,终止于一条特定的语句。 一个程序有很多条代码路径,总量非常大。测试人员必须清楚程序里面有哪些分支。尽量测试所有知道 的分支,尝试探索发现未知的分支。可以分析代码覆盖率,基本评估自己的测试覆盖程度。

五要素之一------用户数据

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

测试环境中包含的数据应该和软件真实用户使用的数据尽量相似,困难如下:

真实用户的数据总是被不断添加和修改,组合无穷尽。

测试人员无法了解用户数据的关系和结构

海量数据,有可能无地方存放

使用真实的用户数据库,但是又被用户的隐私所困扰,只能尽可能了解被测试系统,想办法构造尽可能真实的用户数据模型,来进行数据层面的充分测试

五要素之一------运行环境

五要素的前4个如果都被充分测试了,但是如果软件迁移到一个新的运行环境,则一样有可能无法运行成功。

环境本身就是一种输入源

环境包含的要素很负责,列举一些“:

操作系统,当初配置,其他应用程序,网络拓扑,驱动程序,文件系统,网络带宽,性能 ,测试环境很关键,很难测试

局部探索式测试法

总结五要素的内容组合无穷尽,我们在测试过程中尽可能获取5要素中的各种信息,来为我们的测试决策提供素材

局部探索式测试的每一步都是根据软件过去和当前的运行状况,软件在测试表现出来的各种性为何软件运行时的各种信息来即时决定

全局探索测试

探索测试的几个目标:

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

提供必要信息,给出测试人员提供测试切入点尽可能发现新的、没有被探索过的功能

强迫软件展示其全部能力

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

找到缺陷

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

探索测试方法

指南测试法测试人员通过阅读用书手册并严格遵守手册的建议执行操作。

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

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

指南测试法--变种

博客测试法 遵循第三方的建议来测试,专家测试法 根据抱怨的或者吹毛求疵的用户评论来测试 ,竞争对手测试法 (适用于目前产品把竞争产品作为自己追随的标杆)使用竞争对手的操作手册来测试自己的应用程序

卖点测试法

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

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

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

地表测试法

使用指南测试法和卖点测试法,找到相关的地标

确定关键的软件特性,然后确定他们的前后此顺序,然后从一个地标跳转到另一个地标来探索这些应用程序。选择多个起始地标,开始探索。测试开始后,增加新的地标。改变地表的前后访问顺序。

极限测试法     例如 如何使软件发挥到最大程度?哪个特性可以是软件运行到其设计的极限,哪些输入可以欺骗他的错误检查历程,哪些输入和内部数据可以不断挑战软件的这种能力。 变种:找麻烦测试法

快递测试法   测试人员专注于数据,确认哪些存储起来的数据,跟随他们走遍软件,例如:在电子商务网站中,输入一个送货地址后,看看他存储在哪里,哪些页面会使用这个送货地址。 测试人员应该跟随数据的整个生命周期。

深夜测试法  非卖点的功能在夜间或者系统非繁忙的时候执行。例如:各种维护数据任务 数据归档 备份文件 系统可能会自动执行,测试人员也可以手工出发执行,变种:清晨测试法-----测试软件的启动过程和脚本

遍历测试法

通过选定一个目标(例如所有的菜单项目、所有的错误消息或者所有的对话框),然后使用发现的最短路径访问目标包含的所有对象。特点:用最快捷的方式遍历所有的测试对象,不追求细节一面影响测试速度,只检查明显的东西。

历史去测试类型:

恶邻测试法 

对缺陷横行的代码段进行反复测试,并且对其相邻的功能进行遍历测试。

博物观测试法

测试人员找出那些遗留代码和老的可执行文件,并确保他们在测试中收到和新代码同样的待遇。

上一版本测试测试法

如果当前产品构造是对先前版本的更新,狠招的一点就是必须运行先前版本上支持的所有场景和测试用例

娱乐区测试法:

配角测试法 和主要功能一起出现的功能也需要的到重视,将测试人员的注意力向左或向右调整几度,确保配角功能也你能的到应有的重视。

深巷测试法  对最不可能用到的或是哪些最不吸引用用用的的特性进行测试 

变种 :混合测试法一重要和不重要的功能混合测试

通宵测试法 使用软件爱的特性或者将文件一直处于打开状态,系统不断的运行(中间 不进行休息和重启等操作)

旅游区测试类型

收藏夹测试法 测试人员到达可以到达的所有地方吗,并把观察到的输出结果记录下来,确保尽可能多记录输出。

长路径测试法 设定测试的目标后,从尽可能远的功能在程序中穿行,最后达到测试目标,选择最长路径而不是最短,把哪个埋在程序最深处的界面作为测试目标

超模测试法  不关注功能间的交互,只关心界面和第一印象

测一送一测试法  测试的时候同时运行统一程序的多个拷贝情况  ,多个拷贝同时打开同一个文件,同时在网罗上传输数据,同时写一个文件

苏格兰酒吧测试法   测试难以找到的功能,此方法适用于大规模的复杂应用程序。通过各种方式了解待测对象,增加测试内容。

取消测试法  启动操作,然后停止它

懒汉测试法 测试人员尽力那个少做实际工作,接受所有的默认值

破旧去测试类型

破坏者 利用每个机会来破坏应用程序,在不同程度上移除资源和限制使用资源。

反叛测试法

输入最不能的数据,输入恶意数据。错序测试法,以错误的顺序来做事情

强迫症测试法

不断重复的输入相同数据,进行相同的操作,重负是一大特性。
混合探索式测试技术

测试中的场景: 1 讲述用户故事 2描述需求 3 演示产品功能 4 演示集成场景 5 描述设置和安装 6 描述警告和出错场景

通过场景操作引入变化

替换数据  改变不同的数据源

替换版本 容器的版本(浏览器的版本、操作系统版本、系统补丁版本、浏览器补丁版本)

修改本地设置

本地防火墙、防病毒软件、本地配置文件等

替换环境  1替换硬件 2 替换容器 3 替换版本 4 修改本地设置

漫游测试  测试人员根据测试用例找到需要做决定的地方或者找到可能产生逻辑分支的地方,先往完全不同的地方去探索,最后在回到测试用例描述的主要路径中来。

通过漫游测试引入变化

卖点测试法 将一些重要卖点功能加入到场景中

地表测试法  从场景中选择不同的地标,然后打乱顺序

极限测试法  在场景中,加入挑战软件极限的内容

深巷测试法 在场景中,加入很少用到的辅助功能作为补充

出租车测试法  重复执行某项特点的操作,但是不重复执行完全相同的测试路径

多元文化测试法  设定不同的字符集,考虑不同的语言习惯 。 改变不同的应用程序和操作系统语言,然后验证系统的文字等是否被硬编码了

尝试从右向左些的语言下启动应用程序,验证控件和窗口可以被正常运行

棘手的五个问题

漫无目的性

重复性

暂时性 软件测试人员对于这个软件来说都是暂时性介入,尽量模拟真实用户的操作,但是从理论上来说总是相差很远。

软件的问题随着时间的推移总是会不断暴露出来,测试人员只能尽可能在软件出厂前做好自己的工作。

单调性 测试工程师的大部分工作都是重复的内容,测试用例跑过一轮又一轮,很多人都因为他的枯燥性离开了这个行业,要不枯燥的工作做得有趣,重复的部分实现自动化,测试的测率、测试效率的提高、bug预防、测试领域的创新、这些都是富有创造性的工作。

探索式测试为测试热源听了一个创新的领域

健忘 大批的测试用例被创建,随着软件的发展,不断被废弃,很少被复用。有经验的测试人员不断离开测试项目或者测试行业,有些用例被测底的遗忘。

漫游测试在一定程度上效果更好,一条漫游路径可以代表任何数量的测试用例。 把漫游路径映射到软件特性和缺陷上,留下产品的记录,会形成有效的历史资料和积累。

总结  有些项目准备太充分了,导致需求变更后,大批用例作废和重写

有些项目准备的有不太充分,测试充满随意性和漫无目的性

探索式测试结余上述2者之间,相对来说可以高效的进行测试,有效控制风险









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NeilNiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值