测试方法与系统测试
以自动售货机为例:
给售货机投入不同的硬币,选择不同的货物,然后观察售货机将会给出什么样的输出,将售货机的输入与输出一一地对应起来,检查售货机的功能是否正确,这样只是了解售货机的功能,叫做对售货机进行黑盒测试。
将售货机的外围的一层铁皮全部拿走,售货机的内部的机械结构全部能够看得清清楚楚,有多少个机械结构,每个机械结构由那些零件组成,零件与零件之间是否触发正常,这就需要我们对售货机的内部展开测试,这样对将所有的零件遍历一遍,这就是对售货机进行白盒测试。
白盒测试
1、白盒测试
是一种测试用例设计的方法。白盒,即盒子是透明的,里面的结构以及如何运作能够被看得很清楚。因此,白盒测试要求对系统内部的结构以及工作原理都有清楚的了解。并且基于这个知识来设计测试用例。
2、白盒测试用例能够:
1)保证每个测试用例模块的所有路径至少被测试一次。
2)对所有的逻辑结构均需要侧四true false 值
3)在上下边界及操作的范围内都要运行所有的循环
4)检查内部数据结构以保证其正确性。
3、为什么要进行白盒测试
1)当我们设计除主流外的功能、条件与控制时,其实错误就开始出现在我们的工作中。 日常处理的往往能够很好的了解,但是“特殊情况”却很难被发现
2)我们主观地相信某些路径是不会被执行的,但是往往错误就可能在正常的基础上被执行。但是我们因为主观地直觉,关于控制流与数据流在无意识假设中产生错误的设计,因而需要路径测试才能发现这些错误。
3)笔误是随机的。当程序被翻译成程序设计源代码时,可能产生错误。很多语法可以被检测。但是部分需要当测试开始时才能够被发现。
4、白盒测试常用技术
1)静态分析技术:
有控制流分析技术,数据量分析技术,信息流分析技术。
主要功能是检查软件的表示与描述是否一致。是纠正软件的描述、表示与规格上的错误。静态分析技术主要是覆盖了软件的程序编程语法的词汇分析,并研究和检查独立语句和使用。程序内部检查一致性和完整性,考虑预定义规则,把程序与其对应的规格或者文档进行比较。
2)动态分析技术
对软件系统的行为进行分析,主要包括逻辑覆盖率和程序插装。
逻辑覆盖率是知道测试用例的设计,并且用来衡量白盒测试的力度。覆盖率包括语句覆盖率、条件覆盖率、判定覆盖率、判定条件覆盖率、路径覆盖率。
程序插装:是往被测程序中插入操作来获取实现测试服的的方法。主要是用来获取程序 的各种信息。是一种测试工作的有效手段。
5、白的测试的优点与缺点
优点:
迫使测试人员去仔细思考软件的实现
程序代码中的每条分支与路径都得到了测试
可以得到隐含在代码中的错误
代码测试的比较彻底
最优化
缺点:
费用昂贵
无法检查出代码中遗漏的路径与数据敏感性错误
不验证规格的正确性
黑盒测试
1、黑盒测试
黑盒测试是检测软件功能的实现,不是内部的逻辑结构。主要是验证是否与规格一致。黑盒测试是不考虑其控制结构,而是注重于信息域。它不是白盒测试的替代品,而是辅助白盒测试发现其他类型的错误。
2、黑盒测试能够检测的错误
功能错误与遗漏
界面上的错误
数据结构或者外部数据库访问错误
性能错误
初始化和终止错误
3、黑盒测试的优缺点
优点:
对于更大单元代码来说,比白盒测试的效率要高
不需要对代码内部的业务逻辑结构了解,也不需要懂得代码编写语言
测试人员与开发人员是彼此独立的
测试人员进行的测试时站在用户的角度进行的,很容易被大家所理解
有助于检测出与规格不一致的或者有歧义的地方
合一在规格完成后马上执行。
缺点:
只有一小部分可能的输入被测试到,有许多有可能的输入流几乎不能被测试到
没有清晰与简明的规格说明书,就不能写出好的测试用例
如果测试人员没被告知开发人员已经进行的测试用例,可能会导致存在不必要的重复
很多将测试路径不能被测试到
不能针对特定的程序段,这些程序段可能非常地复杂,其中可能隐含了许多问题
白盒测试与黑盒测试比较
白盒测试只考虑软件的代码,指出实现部分的缺陷。它不保证完整的需求规格是否被满足
黑盒测试只是考虑测试需求规格,它不保证所有的实现部分被测试到。只是发现遗漏的缺陷,提出部分规格说明书的功能没完成。
系统测试
系统测试:是将已经集成好的软件系统,作为基于计算机系统的一个元素,与计算机硬件、外围设备、支撑软件、数据以及人员等其他元素组合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。实际上是对系统中各个组成部分进行的综合性检验。
目的:是通过与系统定义的需求进行比较,发现软件与系统定义的不符合或与之不匹配矛盾的地方。
1、系统的测试类型:
纯软件:例如在PC机上运行的软件,qq,(服务器运行软件)淘宝网站。
软件+硬件:例如空调、电梯、手机、ATM。
软件+硬件+维护人员:电信与移动所使用的系统。
2、实际环境与开发环境不同处
被测系统所包含的的代码不同:实际环境中,代码是干净的,而开发环境中,代码包含了大量的测试代码。(两个环境下的代码是通过宏开关来进行控制的)
配置不同:实际环境下,用户的电脑配置有高有低。开发环境下配置都相对比较高。
所含的dll不同:实际环境中所包含的dll比较少。而开发环境下dll包含的比较多,所以可能在开发环境下运行的软件在实际环境下运行不了。
3、系统测试的类型
1)功能测试
功能测试时系统中最基本的测试。它不管软件内部的逻辑实现,主要是根据产品的需求规格说明书与测试需求列表,来验证产品的功能是否满足需求规格。需求规格说明书是功能测试的基本输入。
可以检测出的错误:
a、不正确或者被遗漏的功能
b、实现的功能是否满足用户需求和系统设计的隐藏需求
C、是否能够接受正常的输入,是否能够正确地输出
功能测试注意要点:
a、多考虑用户会在什么情况下来进行输入
b、尽可能多地将功能组合使用
c、如果是服务器软件,得多多地考虑多用户同时访问与操作的情况
2)性能测试
性能测试是来测试软件在集成系统中的运行性能。目的是度量实际系统与预定义的系统目标的差异。
性能测试要点:
a、验证系统实现的性能是否与性能需求完全一致
b、检测系统实现的具体性能到底怎么样
c、如果是服务器软件,得考虑多用户同时访问与操作的情况,因此对资源占用的要求是非常高的。例如CPU、内存、吞吐量、并发用户等等性能信息。
d、对客户端软件需要关注响应时间与用户端内存消耗。
3)压力测试
压力测试是在非正常情况下的一种测试。目的在于调查系统在其资源超负荷的情况下的表现。研究的是一个短时间内火丁处于峰值时的反应,
压力测试要点:
要做到压力测试,必须将极限的情况模拟出来,然后再在该极限情况下进行测试,看系统性能如何。
压力测试例子:
打开word空白文档到不能新建为止,然后再在其中一个空白文档中写字,然后保存,看需要花费多少时间。
4)容量测试
容量测试是使系统承受超额的数据容量来发现它是否能够处理的数据容量。是面向数据的。
容量测试要点:
容量测试关键在于测试一个最大值。能打开的最大文件大小,能保存的最大数据量等等。只要是系统中对用户而言非常重要的最大值都可以作为容量测试的对象。
容量测试例子:
打开word空白文档到不能新建为止,测试最多能新建多少个空白文档。
5)安全测试
安全测试是验证系统内的保护机制是否能够在实际中保护系统不受非法的侵入。安全测试的测试用例的策略包含四个方面的分析:
资产:是实体确切的和非确切的资源。评价方法是什么应当被保护
危险:是引起损失或者伤害的事件。评价方法是列出潜在的危险源头
暴露出的行为:可能的损失或伤害的形式。评价方法:危险发生时对资产发生什么事去。
安全性功能或者控制:度量针对损伤或受伤害的保护。评价方法:列出安全性功能和任务并且关注与特定系统功能或者过程中包含的控制。
安全性的性能:有效性、生存性、精确性、反应时间、吞吐量。
6)GUI测试
GUI测试是一个分层的图形化的软件前端。从一个固定的事件集中接受用户和系统产生的事件,并且产生确定的图形输出。
GUI测试:一方面是界面实现与界面设计是否吻合。另一方是确认界面处理的正确性。
界面元素划分:
界面原子(按钮、菜单项、列表框、编辑框,用于接受输入输出等)
界面组合元素(是由界面原子组合的,如工具条、组合框)
完整的窗口(是有界面组合元素组合的。例如对话框、单文档窗口)
GUI测试要点:
界面的显示
控件的功能
7)可用性测试
检测用户在理解和使用系统方面到底有多好。包括系统功能、系统发布、帮助文本和过程。用以保证用户能够舒适和系统交互。
可用性测试要点:
菜单级数
快捷键使用
网站导航
8)安装测试
安装测试就是要检验成功安装系统的能力。
安装测试要点:
安装前测试:检查安装包文件是否齐全
安装中测试:安装流程的测试以及检查安装文件时文件、注册表、数据库变动
安装后测试:检查安装的程序是否能够正常运行
9)配置测试
配置测试就是测试系统在各种软硬件配置、不同的参数配置下系统具有的功能和性能。
配置测试要点:
服务器配置:如果有服务器的话,需要考虑服务器的硬件。服务器上的web服务器的选择(IIS、apache、jboos),服务器上数据库软件的选择(mysql、sqlserver、oracle)
用户的设置:需要考虑用户端硬件、操作系统的选择、浏览器的选择、屏幕分辨率、浏览器设置、颜色质量的选择。
10)异常测试
系统异常测试又坏系统容错性测试。通过人工干预的方式使系统产生软、硬件的异常。通过验证系统异常前后的功能和运行状态,达到检验系统的容错、排错、恢复的能力。
系统对错误有两种处理方式:人工干预与系统自动处理
人工干预:系统某个无法自动恢复,需要人工进行强行恢复,关注人工平均干预时间是否在我们系统设计的容限范围内,
系统自动处理:关注系统运行的自我恢复。
异常测试要点:
系统断电
系统断网
系统死掉
系统数据丢失
11)备份测试
验证系统在软件失败的事件中备份数据的能力
备份测试要点:
备份数据的格式
备份是否成功,需要通过数据的导入来进行检查
12)健壮性测试
也叫容错性测试。测试系统在出现故障时,是否能够自动回复或者忽略错误继续运行。
健壮性测试要点:
如何制造故障