功能性测试的测试方法一

上一篇 / 下一篇  2013-04-10 09:36:28 / 个人分类:转载

---------------------------------------------------------------------------------- 
1.1软件故障模型 
优秀的软件测试人员可以很快找到解决办法.虽然测试时有很多单个输入变量,多个输入变量的组合,但是优秀的软件测试人员不会依靠运气,他们有着丰富的确验和直觉,可以从中找到哪些是要进行测试的,哪些不需要测试,哪些操作可能会引起软件失效.把这些测试人员的经验和直觉尽量归纳和固化,以形成一些故障模型(fault model).如同在PowerPoint中做演示文稿通常会利用模板一样,故障模型也是这样的一些模板,它指明了故障是如何以及为什么在软件执行时引起软件失效的.在测试过程中,可以按照这些故障模型所提供的缺陷类型和寻找该类缺陷的办法找到尽量多的缺陷. 
--------------------------------------------------------------------------------------------- 
1.1.1 故障模型框架 
对测试人员来说最重要的是能够建立一个准确的故障模型,并使用该模型决定测试策略,设计和运行测试用例.建立故障模型是要针对具体的软件类型,应用环境,甚至开发工具的. 
--------------------------------------------------------------------------------------------- 
1.2 方法1:输入非法数据 
凡是在有需要输入数据的地方,输入与需求说明不符的数据. 
--------------------------------------------------------------------------------------------- 
1.2.1 分析缺陷产生的原因 
开发人员通常用以下3种技术来处理非法输入: 
1.防止不正确的输入进入被测试软件.过滤掉不正确的输入,只允许合法输入通过界面. 
2.输入了不正确的数据后,软件提示错误信息,拒绝不正确的输入.例如,开发人员可以加入IF语句来保证输入的合法性,IF输入合法THEN处理输入,ELSE显示错误信息.在测试时,要确保可以看到这样的信息. 
3.允许不正确的输入进入系统并进行处理,软件失效时调用异常处理程序,它通常包括重新设置内部变量,并闭文件,存储软件等代码.一般还要显示一些错误信息. 
--------------------------------------------------------------------------------------------- 
1.2.2 如何发现这类问题 
软件应该能够拒绝非法的输入或对非法的输入做出反应.我们可以给出一组不正确的输入来测试软件的这个能力.无论测试的是GUI的输入还是API调用的参数,在进行测试时,都必须从输入的属性出发,一般要考虑的属性有以下3点. 
1.输入类型:输入无效的数据类型常会产生错误信息. 
2.输入长度:对于字符型,输入太多的字符常会引出错误信息. 
3.边界值:输入边界值或超过边界值的数据. 
--------------------------------------------------------------------------------------------- 
1.2.3 测试方法小结 
1.应用场合:GUI的输入 
2.测试方法:分别从输入数据的类型,输入数据的长度,输入数据的边界值等方面进行考虑,设计有效的测试用例. 
3.测试信息的检查:除了考虑输入非法数据,还要留意错误信息本身,特别要注意以下几点: 
(1) 错误信息和错误要一致,防止A的错误提示显示给了错误B 
(2)错误信息的内容为空,用户不知道为什么出错. 
(3)显示的错误信息是给开发人员调试使用的.例如"error 5-unknown data",用户看不懂. 
4.测试知识储备:牢记基本数据类型的边界值. 
类型                     长度                   范围 
无符号整型                2字节                  0~65535                         4字节                  0~4294967295 

有符号整型                2字节                 -32768~32767 
                         4字节                 -2147483648~2147483647 

字符型                   1字节                 256个值 
                        2字节                  65536个值 

布尔型                   1字节                 真或假 

浮点型                   4字节                1.2E-38~3.4E+38 
                        8字节                 2.2E-308~1.8E+308 
                        10字节                3.4E-4932~1.1E+4932 
--------------------------------------------------------------------------------------------- 
1.3 方法2:输入默认值 
输入默认值,看程序的处理结果是否正确. 
--------------------------------------------------------------------------------------------- 
1.3.1 分析缺陷产生的原因 
一旦软件中使用了变量,就必须赋给初始值,如果在赋值之前就使用了这些变量,软件就会失效,正确地使用变量的顺序是:声明变量~~给变量赋值~~使用变量.通常会由于以下两个原因使变量的默认值不正确: 
1.给变量赋值这一步经常会被开发人员不经意地跳过.虽然在编译期间,使用代码分析工具就可以发现这种情况,但是开发人员有可能没有使用这种工具.使用未初始化的变量的一种结果就是会引发一般保护性错误,使应用程序崩溃.另一种情况是内存中的值被随机地赋给了变量,软件不会崩溃,但是会产生错误的结果.测试人员必须仔细分析存在问题的软件的输出,寻找无用字符,显示或返回的错误数据类型(例如,在希望显示数字的地方显示字母)等. 

2.开发人员有时不确定到底要赋什么初始值,就随便给了一个值,但用户并不认可该值,这种情况下,软件并不一定会失效.但对用户的使用会带去很多不方便.例如某程序把打印默认输出份数为2份,将给用户造成很大麻烦.测试人员必须认真检查软件显示的每个默认值,以确定是否是用户想要的正确的默认值. 
--------------------------------------------------------------------------------------------- 
1.3.2 如何发现这类问题 
创建默认值是相当难的程序设计工作.开发人员要确保变量在进入循环或进行函数调用之前就做了初始化.如果没做初始化,使用这样的变量将产生严重的后果.确定应用软件中所使用的数据有以下一些基本原则: 
1.查找选项按钮,配置面板,安装屏幕等.这种屏幕上显示的数据常常在应用程序的许多地方用到. 
2.查阅源代码的数据声明部分 
3.确定了要测试的数据,可以通过以下操作来强制使用或不使用默认值: 
(1)接受软件显示的黑认值.有时软件需要用户输入一个值,如果没有输入任何值,软件就可能失效.这时可以只是简单地单击"确定"按钮来接受默认值,完成这个功能测试. 
(2)键入空值.删掉默认值,使输入框变成空值. 
(3)将默认值改为另一个值,这样会使应用程序以不同的值来运行. 
(4)将默认值改为另一个值,然后再变为空值. 
一个好的软件会这样处理以上情况,将输入的不合法内容默认为合法边界内的某个合理值,或者返回错误提示信息. 
--------------------------------------------------------------------------------------------- 
1.3.3 测试方法小结 
应用场合: 需要有默认值的地方. 
测试方法:分别从选项按钮,配置面板,安装配置,开始界面等方面进行考虑,强制使用或不使用默认值等. 
测试知识储备:全面理解需求规格说明书中对默认值的要求;同时深刻理解被测软件的行业背景. 
--------------------------------------------------------------------------------------------- 
1.4 方法3:输入特殊字符集(或数据类型的合法输入) 
1.4.1 分析缺陷产生的原因 
应用程序接受字符串输入,如果程序没有针对特殊输入进行特殊编程,那么就有可能导致程序挂起,主要包括以下3种情况: 
1.字符集包括普通字符和特殊字符.例如,ASCII字符集包括普通字符和特殊字符.应用程序有时只能处理普通字符,当输入特殊字符时就会出现错误. 
2.实现应用程序的程序设计语言有特定的处理一些字符和字符串的方法.例如,C语言把\n,++,&这样的字符用于特殊目的.如果将这些字符串输入到对话框中,程序必须进行错误处理,否则容易产生错误. 
3.应用程序有时也使用设备名称,系统对象和程序的保留字符串集合.只要在程序中使用了这些字符串,就可能导致失效. 
--------------------------------------------------------------------------------------------- 
1.4.2 如何发现这类问题 
1.根据被测试软件所处的操作系统,使用的程序设计语言,字符集等信息列出表格,通过测试小组的讨论,标明应用表格中的哪些字符和数据类型作为输入来测试. 
2.根据经验,软件很少会因为这种操作而崩溃,通常它会挂起无响应,可以通过任务管理器结束该任务. 
--------------------------------------------------------------------------------------------- 
1.4.3 测试方法小结 
应用场合:需要接受字符输入的地方. 
测试方法:根据被软件的具体情况输入非法字符. 
测试知识储备:尽可能多地了解字符集,程序设计语言和操作系统中的保留字符串及其特定含义,可以更好的分辨这类缺陷.以下列出了ASCII字符集及一些可能出问题的字符,以供参考. 
字符值:NUL         
ASCII值:0         
适用范围:windows dos,C语言,C++         
用途:1.MS-DOS的系统函数使用NUL终止字符串 2.对所有标准库函数,C用NUL作为终止字符串字符             
故障模型:嵌入的空串可能会影响用于系统调用的字符串.NUL可能会使后面的所有字符被忽略 

字符值:ETX 
ASCII值:3 
适用范围:windows dos 
用途:MS-DOS 使用ETX作为程序中断符 
故障模型:输入ETX程序就会中断 

字符值:EOT 
ASCII值:4 
适用范围:UNIX 
用途:UNIX使用EOT作为文本的文件结束符 
故障模型:忽略输入EOT以后出现的字符或程序可能终止,或其他预料不到的行为 

字符值:BS 
ASCII值:8 
适用范围:windows 
用途:退格 
故障模型:在持久数据中嵌入退格.引起退格或没有视觉效果的光标移动 

字符值:Tab 
ASCII值:9 
适用范围:所有 
用途:Tab键 
故障模型:将Tab键扩展作为持久数据中的空格,或者当应扩展时,仍然作为一个Tab字符 

字符值:LF 
ASCII值:10 
适用范围:windows 
用途:换行 
故障模型:windows使用CR/LF作为换行字符.多余的LF可能会引起

TAG:

萱的house 引用 删除 victoriay   /   2013-04-15 13:17:10
很详细哦,鲜花
 

评分:0

我来说两句

日历

« 2024-05-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 15689
  • 日志数: 22
  • 建立时间: 2013-04-10
  • 更新时间: 2013-11-20

RSS订阅

Open Toolbar