1、系统测试
1.系统测试定义
是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机进行一系列的测试活动。
2.系统测试目的
1)通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方;
2)系统测试的测试用例应根据需求分析说明书来设计,并在实际使用环境中运行。
3.系统测试分类(系统测试对象)
1)纯软件(单机软件、客户端软件、服务器端软件、插件软件);
2)软件+硬件(空调、电梯等);
3)软件+硬件+维护人员(电信、移动、联通使用的系统)。
4.系统测试实际环境和开发环境区别
1)被测系统所包含的代码不同;
2)配置不同;
3)包含的dll不同;
验证时尽可能的模拟实际的运行环境与条件。
2、系统测试类型
系统测试是针对一定的质量特性,采用一定的测试方法所进行的测试。
1.功能测试(Functional Testing)
1)功能测试概念
根据产品的需求规格说明书和测试需求列表,验证产品的功能实现是否符合产品的需求规格。
2)功能测试目标
功能测试主要是为了发现以下几类错误:
1)是否有不正确或遗漏了的功能?
2)功能实现是否满足用户需求和系统设计的隐藏需求?
3)能否正确的接受输入?能否正确的输出结果?
3)功能测试要点及举例说明
功能测试需要注意以下几点:
1)单一功能,例如打电话功能、听歌功能等;
2)功能组合,例如对手机测试,可以测试接听电话的时候是否可以查看信息、通讯录等;
3)独占资源的功能测试,对于服务器的软件多考虑多用户同时访问、操作的情况,需要检查用户的同时使用是否会导致功能的失效。
2.性能测试(Performance Testing)
1)性能测试概念及介绍
*1* 在实时系统和嵌入系统中,符合功能需求但不符合性能需求的软件是不能被接受的,所以需要进行性能测试,性能测试就是测试软件在集成系统中的运行性能。
*2* 性能测试可以发生在测试过程的所有步骤中,即使是在单元层,一个单独模块的性能也可以使用白盒测试来进行评估,性能分析师需要知道系统内部的工作原理,并且定义特殊的系统资源来进行检查。
*3* 性能测试是一个混合黑盒测试和白盒测试的方法,从黑盒测试角度来看,性能分析师不需要知道系统内部的工作原理,只需根据实际的工作符合或基准来比较一个系统版本与另一个系统版本在性能上的改进和降低。
*4* 注意:只有当整个系统的所有成分都集成到一起后,才能检查一个系统的真正性能。
*5* 性能测试必须要有工具支持。
2)性能测试目标
*1* 度量系统相对于预定义目标的差距;
*2* 文档化实际的性能级别和需求性能级别的差距 。
3)性能测试收集的信息有:
*1* CPU、IO、内存、信道使用情况;
*2* 每个模块执行时间百分比以及一个模块等待IO完工的百分比;
*3* 控制从一个模块到另外一个模块的次数;
*4* 指令随时间的跟踪路径、每一组指令页换入和换出的次数;
*5* 所有主要指令的单元执行时间;
*6* 系统反应时间;
*7* 系统吞吐量,即每个时间单元的处理数量。
3.压力测试(Stress Testing)
1)压力测试目的及介绍
*1* 调查系统在其资源超负荷的情况下的表现;
*2* 需要在一种反常数量、频率或者资源的方式下执行系统;
*3* 研究系统在一个短时间内活动处在峰值时的反应(一个短时间内的吞吐量);
*4* 压力测试通常发现主要的设计缺陷,会影响很多区域,因此应当在开发过程中尽早进行。
2)压力测试目标
*1* 通过极限测试方法,发现系统在极限或者恶劣环境中自我保护能力;
*2* 验证系统的可靠性。
3)压力测试要点
必须将极限情况模拟出来,然后在该极限情况下进行测试,查看系统性能如何。
4)压力测试举例说明
*1* 将输入数据的量提高一个数量级来测试输入功能会如何响应?
*2* 某手机正常使用翻盖次数为10万,结果翻盖15万次,看是否还可以正常使用;
*3* 某电子商务网站的服务器的cpu占用率达到100%时,继续访问该网站,查看网页响应时间。
4.容量测试(Volume Testing)
1)容量测试目的及介绍
*1* 目的是使系统承受超额的数据容量来发现它是否能够正确的处理该数据容量;
*2* 容量测试是面向数据的。
2)容量测试目标
检测系统处理大容量数据方面的能力。
3)容量测试要点
系统中对于用户而言,非常重要的最大值都可以作为容量测试的对象。
4)容量测试举例说明
*1* 检查手机最多可以保存的短信数量,联系人数量;
*2* 测试某电子商务网站最多支持的并发用户数量;
*3* 发短信时,输入足够多的文字,显示短信软件可以处理的数据容量。
5.安全性测试(Security Testing)
1)安全性测试目的及介绍
*1* 通过模拟攻击来寻找安全缺陷,以提高安全性质量;
*2* 用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入;
*3* 用来保证系统本身数据的完整性和保密性。
2)安全性包含内容
*1* 环境安全(漏洞扫描、防病毒、缓冲区溢出);
*2* 产品安全(漏洞、产品本身会不会被破解);
*3* 权限安全(登录、权限控制、跨站脚本攻击、网页安全漏洞);
*4* 信息安全(数据库有特定的保密措施)。
3)常见功能性的安全性问题
*1* 没有口令是否可以登录到系统中?
*2* 各级用户权限划分是否合理?
*3* 错误和文件访问是否适当的被记录?
*4* 系统配置数据是否能正确保存,系统故障时是否能恢复?
4)安全性测试要点
常见的web系统安全测试要点:
*1* 不登录系统,直接输入登陆后的页面的url是否可以访问;
*2* 退出登录后,按后退按钮是否能够访问之前的页面;
*3* 重要信息(如密码、身份证号码、银行卡号等)在输入或查询时是否会明文显示;
*4* url中不可以修改的参数是否可以被修改等。
5)安全性测试举例说明
*1* 多次错误登录手机支付宝,查看是否可以自动锁定账号;
*2* 同一QQ账号是否可以同时在多个用户端登录?
*3* 微信支付中解绑银行卡时是否需要验证方式。
6.GUI测试(Graphic User Interface Testing)
1)GUI测试内容
GUI测试是针对软件系统GUI界面进行的测试,是一种可优化性测试,测试内容有两方面:
*1* 测试界面实现和界面设计的吻合情况;
*2* 确认界面处理的正确性。
2)GUI测试对象(依据界面复杂性分类)
*1* 简单界面元素,指功能和属性相对比较单一的界面区域。例如:一个菜单项、一个按钮、一个快捷键等;
*2* 界面组合元素,主要指一些复杂的界面元素。例如:工具栏,菜单栏、组合栏、表格等;
*3* 完整界面(窗口),指有一系列界面组合元素组成的能够完成一个完整的输入输出功能的界面属性组合,具有自己是视图。例如:对话框等。
3)GUI测试要点
*1* 界面的显示(是GUI测试的重点,包含整体性、文字、窗口、窗口中的元素(按钮、字体等)、视觉、触觉等各种感知方式);
*2* 控件的功能。
4)GUI测试举例说明
测试QQ界面显示,执行步骤:
*1* 电脑桌面上没有其他任何窗口,运行QQ,查看QQ窗口界面显示位置并记录;
*2* 电脑桌面上有浏览器窗口,运行QQ,查看QQ窗口界面显示位置并记录;
*3* 比较在不同情况下QQ界面显示的位置异同,如果不同,则有可能存在Bug。
7.可用性测试(Usability Testing)
1)可用性测试目的及介绍
*1* 是为了检测用户在理解和使用系统方面到底有多好;
*2* 主要考虑产品是否符合实际应用情况,是否符合用户习惯和特殊需求;
*3* 考虑操作方式是否方便合理、设备和用户间的交互信息是否准确易于理解、是否遵从行业习惯、外观/界面是否美观等;
*4* 应涉及到所有和用户交互的功能或者子系统,包括:系统功能、系统发布、帮助文本和过程,以保证用户能够舒适的和系统进行交互。
2)可用性测试要点
在系统测试阶段开展可用性测试,首先针对一些能量化的特性进行检查,例如:菜单级数、快捷键的使用、网站导航。
3)可用性测试举例说明
*1* 任何系统中菜单的级数一般不超过3级,这是为了方便用户操作,例如word文档;
*2* 网站导航,保证了网站的可用性,好的网站导航能让用户自由地任意的在网页间切换;
*3* 手机上运行某一App软件,会有帮助信息(新手导航等)。
8.安装测试(Installation Testing)
1)安装测试目的及介绍
*1* 定义
主要是根据软件的测试特性列表、软件安装、配置文档,设计安装过程的测试用例,发现软件在安装过程中的错误。
*2* 目的
查找安装软件本身的错误;
查找安装文档的错误 ;
验证成功安装系统的能力。
*3* 测试对象
安装包、安装手册
2)安装测试要点
*1* 安装前测试
检查安装包文件是否齐全,尤其是dll文件,还有检查安装手册。
*2* 安装中测试
主要是安装流程的测试,以及检查安装时文件、注册表、数据库的变动。
*3* 安装后测试
主要检查安装后的软件能否运行,基本功能能否使用。
3)安装测试举例说明
安装应用软件,验证安装速度,安装是否完整,安装完功能是否可以正常使用
9.配置测试
1)配置测试目的及介绍
*1* 定义
配置测试主要测试系统在各种软硬件配置、不同的参数配置下,系统具有的功能和性能。
*2* 目的
检验该配置是否满足需求;
在一定条件下寻找最佳配置。
*3* 目标
验证全部配置的可操作性和有效性,特别需要对最大配置、最小配置和特殊配置进行测试。
*4*软件产品配置测试常见配置项
硬件配置、操作系统配置、基础软件配置、产品自身配置。
2)配置测试要点
配置测试并不是一个完全独立的测试类型,需要和其他测试类型相结合,比如功能测试、性能测试、GUI测试等。
3)配置测试举例说明
测试百度网址在不同版本360浏览器下的显示测试。
10.异常测试/系统容错和可恢复性测试
1)异常测试概念
异常测试是通过人工干预手段,是系统产生软硬件异常,通过验证系统异常前后的功能和运行状态,达到检验系统的容错、排错和恢复的能力。
2)容错处理分类
*1* 系统自动处理;
*2* 人工干预处理。
3)异常测试目的
验证产品容错、排错、恢复能力,提高可靠性。
4)异常测试中需注意的问题
*1* 系统异常测试与系统的指标测试有关系,当系统需要提供的服务能力大于系统的设计指标时,也属于系统异常的情况,因此应该结合起来加以考虑;
*2* 系统的可靠性是设计出来的,而不是测试出来的。测试出来的数据有助于我们进行进一步的系统优化设计积累经验,设计和测试是一个互为反馈的过程。
5)测试过程
*1* 人为产生异常;
*2* 实施和检查容错、排错、恢复过程;
*3* 检查产品前后变化情况。
6)异常测试涉及知识
*1* 系统可靠性的指标:
系统平均失效间隔时间(MTBF)——>正常时间
系统平均恢复时间(MTTR)——>失效时间
*2* 系统可靠性设计技术
避开错误
容错技术(结构冗余、信息冗余、时间冗余、硬件冗余、附加冗余技术)
7)异常测试举例
浏览器异常退出,重启启动是否能够恢复之前浏览的网页
11.备份测试(Backup Testing)
备份测试是恢复性测试的一个补充,目的是验证系统在软件或者硬件失效的事件中备份它数据的能力。
12.健壮性测试(Robustness Testing)
健壮性测试有时也叫容错性测试,主要用于测试系统在出现故障的时候,是否能够自动恢复或者忽略故障继续运行。
范例:下载App软件,如果版本配置不符合,手机是否会自动提示,回避该问题
13.文档测试(Documentation Testing)
1)文档测试不同于评审和检视工作。
2)主要是针对系统提交给用户的文档的验证。
3)目标:验证用户文档是正确的,并且保证操作手册的过程能够正确工作。
4)优点:改进系统的可用性、可靠性、可维护性和安装性。
5)测试要点:文档中内容是否有遗漏,是否模糊或者错误?
6)实例:手机使用手册帮助信息的测试,Google书签新建书签功能中文字帮助信息的测试等。
14、在线帮助测试(Online Help Testing)
1)主要用于验证系统的实时在线帮助的可用性和正确性。
2)测试时需要关注的问题:
*1*帮助文件的索引,以及内容是否正确?
*2*在系统运行过程中帮助是否能被正常的激活?
*3*在系统的不同位置激活的帮助内容与当前操作内容是否相关联?
*4*帮助是否足够详细并能解决需要被解决的问题?
3)关注点:需要帮助的信息与当前界面是否对应。
4)实例:Windows在线帮助测试、手机应用软件中的新手区提示等
15.网络测试(Network Testing)
网络测试是在网络环境下和其他设备对接,进行系统功能、性能与指标方面的测试,保证系统对接正常。
1)测试内容
考察系统的处理能力,系统兼容性,系统稳定可靠性及用户使用等方面。如通信产品,主要进行协议测试:
*1*一致性测试:检测所实现的系统与协议规范符合程度。
*2*性能测试:检测协议实体或系统的性能指标(数据传输率、联接时间、执行速度、吞吐量、并发度等)
*3*互操作性测试:检测同一协议不同实现厂商之间,同一协议不同实现版本之间,或同一协议不同实现版本之间互通能力和互联操作能力。
*4*坚固性测试:检测协议实体或系统在各种恶劣环境下运行的能力。
2)实例
连接网络的情况下,访问该网络是否成功
16.稳定性测试
1)测试目的
评价系统在一定负荷情况下,长时间的运行情况。
2)测试内容
系统在一定负荷下,再增加新的业务,原有的业务是否会受影响,新的业务能否正常工作,系统资源有无泄露,数据有无不一致的情况,系统性能是否会下降?
3)测试关键点
确定一个一般的负载,然后在该负载下长时间让系统工作,检查系统是否会出现故障;
长时间运行后,系统的状况如何,系统平均无故障时间MTBF是否满足系统设计要求。
4)实例
手机保持长时间通话,检查手机会不会死机,通话是否正常?
Windows系统连续开机两天,会不会导致系统不稳定?
17.兼容性测试
1)检测被测系统是否可以和其他元素共存,是一种对比性测试。
2)目的:测试能否与其它产品共存于一个运行环境。
3)实例:Android手机中微信和QQ能否同时运行
18.负载测试(Loaded Testing)
1)在用户要求的负载范围内,比较系统在不同负载情况下的性能。
2)实例:手机root后,分别开启3个软件、5个软件、7个软件运行,比较手机的运行性能属于负载测试