中国软件测试联盟

 找回密码
 注册

QQ登录

只需一步,快速开始

http://www.wanmeiff.comJS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!
查看: 346|回复: 0

系统测试方法之功能测试

[复制链接]
发表于 2018-3-17 10:28:20 | 显示全部楼层 |阅读模式
织雀教育-物联网测试的黄埔军校,专注软件测试人才培养

    功能测试又称正确性测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。
    基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。测试人员一定要设法减少枚举的次数,否则测试投入太大。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:记(A, B)是命题f(x) 的一个等价区间,在(A, B)中任意取x1进行测试。如果f (x1) 错误,那么f (x) 在整个(A, B)区间都将出错。如果f (x1) 正确,那么f (x) 在整个(A, B)区间都将正确。上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。
    还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。例如测试平方根函数的一段程序。凭直觉输入等价区间应是(0, 1)和(1, +∞)。可取x=0。5以及x=2。0进行等价测试。再取 x=0以及x=1进行边界值测试。
    有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。
单元测试思想之功能测试
  对于一个代码单元,首先要测试它的基本功能。功能就是在某种输入时应该产生某种确定的输出。对于一个代码单元,它的可能输入通常是无穷的,显然,把输入的所有可能取值都进行测试,是不可能也是无意义的,我们应该用一定的规则选择有代表性的数据来建立测试用例。要考虑的输入主要有三种:正常输入,边界输入,非法输入,每种输入还可以分类,也就是平常说的等价类法,每类取一个数据作为输入数据建立测试用例,如果测试通过,可以肯定同类的其他输入也是可以通过的。如果等价类的划分是准确且完整的,并且每一个等价类都进行了测试,那么,可以说这个代码单元经过了充分的测试。下面举例说明:正常输入例如字符串的Trim函数,功能是将字符串前后的空格去除,那么正常的输入可以有四类:前面有空格;后面有空格;前后均有空格;前后均无空格。
  边界输入上例中空字符串可以看作是边界输入。
  再如一个表示年龄的参数,它的有效范围是0-100,那么边界输入有两个:0和100.非法输入非法输入是正常取值范围以外的数据,或使代码不能完成正常功能的输入,如上例中表示年龄的参数,小于0或大于100都是非法输入,再如一个进行文件操作的函数,非法输入有这么几类:文件不存在;目录不存在;权限错误。
  如果输入有多个数据,还要考虑这些数据之间的关系,即等价类还要包括数据的组合。
  要人工找出所有的等价类通常是很困难的,但使用VU,通常不需要这样做,只要为容易想到的、比较典型的等价类建立测试用例就行了,后文会有进一步的论述。
  VU自动生成测试代码,用户只需要在测试用例编辑器中填写输入输出的数值即可:参数:系统已生成参数的声明,并且,不管是对象、引用、还是指针,甚至指针的指针,都生成对象,VU在调用这些参数时,对于引用、指针或指针的指针,会自动作出适当的处理。对于基本数据类型或定义了赋值操作符的高级数据类型,用户只需将参数的值直接填在"="后面;对于高级数据类型,则可以像普通代码一样,给结构的各个域赋值,或者调用对象的构造函数或其他初始化函数进行初始化。
  成员变量:可以用点操作符直接为成员变量赋值,当然,如果成员变量本身也是高级数据类型,则可以像普通代码一样,调用该成员变量的初始化函数。
  全局变量:如果全局变量在测试代码中是可见的,则直接引用就行了。
  外部数据:外部数据通常需要手工准备,例如文件中的数据或数据库中的数据。
  前置操作:可以用点操作符直接调用成员函数。如果前置操作是众多测试用例公用的,可以写在测试类的BeginCase()函数中,如果有多种不同的前置操作,还可以通过传递不同的参数来控制BeginCase()的行为。
  预期输出部分的语法与输入部分完全相同,输出可以是0项,1项或多项,每项输出的计算结果,都必须是布尔表达式。如果输出难于预先确定,或者比较复杂,可以在运行测试后再确认。
  从上述可以看出,测试用例编辑器可以适应很复杂的测试用例的编辑。只要一个测试用例已编辑完毕,第二个及更多的测试用例就很简单了:选定一个现有的测试用例,由系统自动拷贝,用户再对部分数值进行修改就行了。由于各个测试用例之间的差别通常很小,这种方式可以很快建立测试用例集。
  测试用例编辑器还具有代码模式,很特殊的情况下,可以切换到代码模式下直接编辑代码。
分享到: 更多
中国软件测试联盟(www.51sqae.com),一个免费权威的讨论新软件技术的论坛。
织雀教育-物联网测试的黄埔军校,专注软件测试人才培养
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

本站资源仅供学习交流,非营利性质,如有侵权等行为,请联系管理员删除|中国软件测试联盟 ( 京ICP备17018412号;京公网安备11010802017997

GMT+8, 2018-12-10 20:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表