一、软件测试目的
1.根本目的:尽可能多的发现并排除软件中潜藏的错误。
2.(1)测试是为了发现程序中的错误而执行程序的过程。
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的方案。
(3)成功的测试是发现了迄今为止尚未发现的错误的测试。
二、软件测试准则
1.所有测试都应该能追溯到用户需求。2.应该远在测试开始之前就制定出测试计划。
3.Pareto原理(二八原理):测试发现的错误中的80%很可能是由程序中的20%的模块造成的。
4.应该从“小规模”测试开始,逐步进行“大规模”测试。即从单元测试开始,逐步转向集成测试。
5.穷举测试是不可能的。
6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
三、测试方法
1.黑盒测试(功能测试)
黑盒测试法将程序看做一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,
黑盒测试是在程序接口处进行的测试,他只检查程序功能是否按照规格说明书的规定正常使用,
程序是否能适当的接收输入数据并产生正确的输出信息,程序运行过程中是否能保持外部信息
(例如数据库和文件)的完整性。
黑盒测试力图发现下述类型的错误:
(1)功能不正确或遗漏了功能。
(2)界面错误。
(3)数据结构错误或外部数据库访问错误。
(4)性能错误。
(5)初始化和终止错误。
设计黑盒测试方案时,应考虑下述的几个问题:
(1)怎样测试功能的有效性?
(2)哪些类型的输入可构成好的测试用例?
(3)系统是否对特定的输入值特别敏感?
(4)怎样划定数据类的边界?
(5)系统能承受什么样的数据率和数据量?
(6)数据特定的组合将对系统的运行产生什么影响?
黑盒测试技术
①利用判定树和判定表作为工具,列出输入数据各种组合与程序应做的动作(及相应输出结果)
之间的对应关系,然后为判定表的每一列至少设计一个测试用例。
②把计算机测试和人工测试有效结合起来。
2.白盒测试(结构测试)
2)控制结构测试
(1)基本路径测试
第一步:根据过程设计结果画出相应的流图。
第二步:计算环形复杂度,有三种方法,一是看独立区域数;
二是边数减去节点数加2;三是分支节点数加一。
第三步:确定线性独立路径的基本集合。
(2)条件测试
(3)循环测试
简单循环:应使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数。
跳过循环;只通过循环一次;通过循环两次;通过循环m次,其中m<n-1。
通过循环n,n-1,n+1次。
嵌套循环:从最内层循环开始测试,把所有其他循环都设置成最小值。
对最内层循环使用简单循环测试方法,而使外层循环的迭代参数(例如循环
计数器)取最小值,并为越界值或非法值增加一些额外的测试。
由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,
其他嵌套循环为典型值。继续进行下去,知道测试完所有循环。
串接循环:若循环彼此独立,则使用简单循环方法;若不独立,用嵌套循环方法。
四、测试步骤
1.单元测试(模块测试)
(1)模块接口:参数的数目、次序、属性或单位系统与变元是否一致;
是否修改了只作输入用的变元;全局变量的定义与用法在各个模块中是否一致。
(2)局部数据结构:局部数据说明、初始化、默认值等方面的错误。
(3)重要的执行通路
(4)边界条件的测试
2)测试类的技术
(1)随机测试
(2)划分测试:基于状态划分;基于属性划分;基于功能划分
(3)基于故障的测试
2.集成测试
1)多类测试:随机测试;划分测试
2)从动态模型导出测试用例
3.系统测试
系统测试,英文是System Testing。是对整个系统的测试,将硬件、软件、操作人员看作一个整体,
检验它是否有不符合系统说明书的地方。
这种测试可以发现系统分析和设计中的错误。如安全测试是测试安全措施是否完善,能不能保证系统不受非法
侵入。再例如,压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取) 等情况下是否还能正常
地工作。
4.验收测试(确认测试)
(1)alpha测试:用户在开发者场所中测试,是可控的;
(2)beta测试:是在开发者的场所中,是不可控的。