软件测试方法之探索式软件测试

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

探索式软件测试一、局部探索式测试法:1、用户输入什么是用户输入:由环境产生的一种刺激,该刺激导致被测试的应用程序有所响应。分成原子输入和抽象输入,如单击按钮,字符串或整数等就是原子输入,抽象输入则是有相互关联的原子输入合并成的输入。(1)合法输入、非法输入原因/目的:1、正向测试与反向测试,测试要覆盖的基本的东西。2、大多数开发人员不愿写错误处理代码,从而比较容易导致非法输入的情况会报错或者处理不当。方式:以开发人员的思路来构造一个非法输入值。因为开发人员必须要知道什么是合法输入、什么是非法输入,对于他们认为的非法输入值做了什么样的错误处理,这一部分就是我们需要测试的。如:空值测试、需求规定输入之外的输入、特殊字符、超长字符等。(2)输入筛选器原因/目的:输入筛选器是用于防止非法的输入值被传递给应用软件的功能代码,输入筛选器就是默默把非法输入排除在外,能传递给应用软件的数据都会被当做正常数据来处理。测试人员需要测试输入筛选器的功能是否正确实现了、是否可以绕过输入筛选器将值传递给应用软件。方式:1、测试内容:如输入面板只可输入整数,则输入筛选器实现只显示整数值的输入,其余的输入都会被忽略。下拉列表、勾选框也是一种输入筛选器,只提供了合法的输入。2、输入合法的值,筛选器正确显示。输入非法值,筛选框正确屏蔽。即确保开发设定的输入筛选器范围是正确的。3、通过某种方法绕过输入筛选器。如修改前端html代码,或者使用某种工具跳过js校验等。(3)输入检查原因/目的:应用接受一个输入值,如果输入值合法,那么接着运行处理它,否则就产生一条错误消息并中止处理。并会报警,显示错误信息描述当前状况。方式:1、牢牢抓住错误信息,仔细阅读错误信息,检查是否写错了。错误信息一般会指出当前输入值被认定为非法值的根本原因以及如何修改让它变成合法值。2、根据错误信息,可以分析那些输入值可以触发其他的错误信息,或者是那些输入值应当导致错误而软件没有报错。(4)异常处理代码原因/目的:软件在运行过程中出现任何指定错误,异常处理代码可以处理各种各样的失效状况,不单单局限与非法输入。方式:1、对于异常出错信息(一般这个信息不会有什么比较具体的报错内容,指向范围较大),继续反复测试同一函数,继续使用刚才引发异常的数据或者稍微改一下,看会不会继续引发错误2、尝试运行其他地方,调用该函数的测试3、连续不断的异常,看程序是否会崩溃4、检查日志是否记录对应的报错信息(5)常规输入还是非常规输入原因/目的:常规输入就是计划中的输入,也会是用户经常使用的输入。非常规输入是在比较特殊的情况下才会发生的,或者只是机缘巧合才会发生。如:用户输入大写C时不小心按下Ctrl+c,而实际应该是Shift+c.方式:1、所有和Ctrl、Alt、Esc按键组合的输入2、最终用户可能会使用的特殊字体3、测试不同国家的语言以及特殊符号4、一些特殊字符,与软件运行平台相关的字符,将其作为输入值。(6)默认输入或用户提供的输入原因/目的:表单通常都会有一些设定好的默认值,指定值或者是空值。一个字段如果预先设置好默认值,便和不含默认值的字段在程序处理时往往有很大的不同。方式:1、空白字段中不输入字符或是给某个API传递NULL参数。正常情况下他们需要在默认状态继续运行下去。2、检测设置好的默认值是否用户最有可能使用的数值。3、删除默认值,留下空白字段,进行提交测试。4、测试默认值附件的一些其他值。如:一个默认数值,设置比默认值大1或小1,字符串,修改默认字段头部、尾部的几个字符,加上几个字符,删除几个字符等操作。(7)使用输出来指导输入选择原因/目的:先明确自己希望软件会产生什么样的反应,然后确定那些输入会引发相应输出,然后再测试对应的输入值。将输出大致分为非法输出和合法输出。方式:1、从输出的结果来思考整个问题。2、先确实希望程序产生什么样的输出,考察用户场景,看如何生成期望的输出。3、先观察输出结果,再选择新的输入,并保证新的输出是重新计算后的结果(或与原先不同)4、未被初始化和已初始化产生输入有无不同。5、寻找被保存起来的输出结果(页面显示、文件存储等),改变这些值或者改动他们的功能(大小、类型),测试是否在原有值上重新生成了。(对每一个功能都需要运行这样的测试)2、状态什么是状态:软件的状态是状态空间中的一个点,是由所有内部数据结构的取值来唯一确定的一个点。软件的状态空间是由软件内部所有变量构成的一个交叉积。应用程序与其运行环境进行交互和接收输入导致软件状态发生变化。软件接收到输入,并在内部存储这些输入值后,软件状态就会发生变化。如何测试软件状态:(1)、测试软件是的正确更新了它自身的当前状态(2)、测试软件当前状态接收某些输入时是否发生异常(3)、软件是否进入了不应该有的状态。(4)、测试人员应根据自己的时间和预算,结合考虑最终用户可以承担怎样的风险,来确定测试尽可能多的状态。方法:(1)、使用状态信息帮助寻找输入:关观察状态对结果有什么影响,得到相关输入和状态信息后,就可以通过某种方式确定需要测试那些组合。需要确保重要的情况和变化都被测试到。(2)、使用状态信息来识别重要的输入序列:当一个输入导致状态发生变化时,接着多次使用同样的输入导致一连串的状态变化,观察一连串状态变化会不会导致溢出。如:存放数据的列表过大,如购物车,加购物车的物品是不是过多了。通过观察这些状态的累积程度,重复相同的内容看是否会产生副作用。(比如连续删除、连续点击?)3、代码路径代码路径是指一连串代码语句,其实于软件开始运行的语句,终止于一条特定语句。测试人员需要明确程序里有哪些分支,特别是在不接触代码或者使用代码覆盖率工具时。某些分支没有被测试到则很可能存在缺陷。除了分支、还有循环语句等可以导致代码路径总数变大,也就是会有各种可能。4、用户数据:软件需要处理海量数据或者文件时,测试人员需要在测试环境模拟相应的环境。怎么模拟对应的数据,且保证数据的真实有效,是测试人员需要解决的问题。方式:(1)尽量使用真实数据(2)删除或者添加数据测试时,注意还原数据(3)注意处理数据中的敏感信息。5、运行环境:运行环境本身也是软件的一项输入,当软件使用的运行环境有变化时,可能会产生实效。方式:操作系统、浏览器、配置文件、网络状态、与软件相关的其他应用程序等二、全局探索式测试法(漫游测试)1、商业区测试类型(软件的重要功能模块)指南测试法:要求测试人员严格按照用户手册执行操作。不仅可以验证软件确实实现了手册描述的各种特性,也同时验证了用户手册的准确性。该测试法的变种:a、博客测试法:要求测试人员遵循第三方的建议来测试。b、专家测试法:要求测试人员根据评论者的抱怨来创建测试用例。卖点测试:找到最能卖钱的特性,也就是最符合用户需求,最能吸引眼球或者用户最期待的一些功能。方式是观摩销售演示,观看销售录像并跟着销售人员一起拜访客户。(或者给产品或领导做演示时能参与,一方面观察演示人员的演示路径和步骤,一当面了解产品或领导更关心的功能。)该测试法的变种:a、质疑测试法:就是在测试人员执行卖点测试时,不断提出质疑,提出问题,打乱原计划做演示地标测试法:先选择地标,再确定他们的顺序,然后从一个地标执行到另一个地标来探索应用程序,直到访问了列表中的所有地标,过程中需要记录以及使用过的地标并创建一个地标覆盖图来标识工作进展。极限测试法:向软件提出很多难以回答的问题,比如如何使软件发挥到最大程度,哪个特性会使软件运行到极限。不同的软件有不同的测试角度。该测试方法的变种:a、找麻烦测试法:要求测试人员故意设置各种障碍来看软件如何应对。如制作一些色彩斑斓的最炫的文档、把任何相邻两页的排版都颠倒、只在奇数页打印页面等,总之就是所做的一切不一定有什么实际意义,而只是软件允许这么做,可以这么做。极限测试法以及其变种可以发现各种各样的缺陷,从非常重要到简单到愚蠢的缺陷(有待验证)。测试人员需要区分哪些纯属发难问题,哪些是可以让软件正确运行的问题。尽力去创造那些用户真正使用的负责文档、订单或者其他数据。(这样做才会更有意义,否则很容易被驳回被否认)快递测试法:测试必须专注于数据,确认那些被存储起来的输入数据并“跟随”它们走遍软件。深夜测试法:下班之后软件执行各种维护任务,将数据归档,备份文件等等。程序不自动执行的时候,测试强制程序执行。该测试法的变种是a、清晨测试法:测试软件的启动和脚本遍历测试法:通过选定一个目标(如:所有菜单项、所有错误消息或所有对话框),然后使用可以发现的最短路径来访问目标包含的所有对象2、历史区测试类型恶邻测试法:某个区域代码缺陷很多,建议对邻近功能使用遍历测试法进行测试,以此来验证那些修复已知缺陷的代码没有引入新的缺陷。产品缺陷多的地方值得反复测试。博物馆测试法:找出遗留代码和老的可执行文件,并确保它们在测试中受到和新代码同样的待遇。(老代码经过修改或者未经修改就放到新的环境中去运行,软件生成后期或者是维护阶段这种情况就比较典型吧)上一版本测试法:如果产品更新,必须运行先前版本上支持的所有场景和测试用例。应仔细检查在新版本中无法再运行的测试用例,以确保产品没有遗漏必需的功能。(产品重新实现了一些功能或者删除了一些功能,侧人员在使用新版本的需求测试同时,也要检查旧版本的功能已不可用)3、娱乐区测试类型(辅助特性)配角测试法:鼓励测试专注于某些特定功能,特别是紧邻主要功能的辅助功能。这些功能往往和主要功能一起出现在用户屏幕当中,若发生错误,虽不影响正常流程也会造成用户体验不佳。深巷测试法:建议测试人员应该测试使用情况列表中排在最下面的几项特性,这部分常常是未被测试代码。该测试法的变种:a、混合测试法:试着把最不流行和最流行的特性放在一起测试。通宵测试法:让程序一直执行而不去关闭它。4、旅游区测试类型(快速访问软件的各种功能)收藏家测试法:收集软件的输出,越多越好。确保能观察到软件能生成的任何一个输出。此方法庞大,通常以小组为单位进行。长路径测试法:测试离应用程序开始点尽可能远的特性。(就跟旅游路线一样,很长的路程才能到达目的地或许会中途放弃)超模测试法:重点不是在功能或测试功能间真正的作用,而只是测试界面,观察界面上的各种元素,是否正确描绘,是否与期望一致。测一送一:测试同时运行同一应用程序多个拷贝的情况。测试时运行一个应用程序,然后运行该应用程序的另外一个拷贝,然后再运行一个拷贝。试着用所有不同拷贝同时打开同一个文件,或者让它们同时在网络上传输数据。如果在一个拷贝上发现了一个缺陷,就在所有的拷贝上发现了同样的缺陷。苏格兰酒吧测试法:特别适用于大规模的复杂应用程序。测试不容易找到的功能。5、旅馆区测试类型(经常被忽略或者爱测试计划中较少描述的次要及辅助功能)取消测试法:启动操作然后停止它。可以对任何提供取消功能或者需要较长时间才能完成的功能做同样的操作。如果没有取消按钮,对于在浏览器中运行的程序可以试着按Esc键或是程序中的回退按钮。另外,按下Shift+F4键或者点击关闭按钮也可以彻底关闭应用程序。还可以开始一个操作,不要停止它,然后开始另一个同样的操作。这个测试法中,测试人员见到的失效绝大多属于应用程序自我清除能力不足有关。懒汉测试法:测试人员做尽量少的实际工作。接受所有默认值,保持输入字段继续为空,在表单中尽可能少填数据,从不点击广告,在进入下一个界面时不点击任何按钮或者输入任何数据等等。(编程中经常会出现没有对默认值进行处理的情况)6、破旧区测试类型破坏测试法:强迫软件做一些操作;掌握软件成功完成操作必须使用的资源;在不同程度上移除或者限制使用那些资源。比如增加或删除文件,改变文件权限,断网,在后台运行其他程序,把要测试的应用程序部署在有问题的机器上等(故障注入)。反叛测试法:要求输入最不可能的数据或者已知的恶意输入。有以下方法可以实现反叛行为:a、逆向测试法:每次都输入那些最不可能的数据,选择与上下文无关的或者是愚蠢、荒谬的输入。b、歹徒测试法:输入一些不该出现的数据(关于如何处理非法输入)c、错序测试法:要求测试人员以错误

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功