软件测试的类型
软件测试按照测试类型来分类:
-
功能测试 性能测试 兼容性测试
-
部署测试 易用性测试
-
文档测试 本地化测试
-
安全测试 无障碍测试 可靠性测试等
功能测试:(软件测试中最主要的测试类型)
-
定义:根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。
-
工具:QTP、winrunner; silkTest; Rational robot; selenium; Watir; Sikuli
-
目标:
-
是否有不正确或遗漏了的功能?
-
功能实现是否满足用户需求和系统设计的隐藏需求?
-
输入能否正确接受?能否正确输出结果?
-
性能测试(Performance Testing):
-
定义 : 观察系统在一个给定的环境和场景中的性能表现是否与预期目标一致,评判系统是否存在性能缺陷,并根据测试结果识别性能瓶颈,改善系统性能的完整的过程。
-
性能指标:并发用户数VU、每秒事务数TPS、吞吐量、系统响应时间、资源利用率等
-
性能测试工具:LoadRunner、Jmeter等
-
分类 : 负载测试、压力测试、稳定性测试(可靠性测试)、容量测试等。
负载测试 -- Load Testing
-
在一定的软件、硬件及网络环境下,通过改变系统负载方式、增加负载等来发现系统中所存在的 性能问题。
-
用于确定系统所能承载的最大用户数、最佳用户数。关注不同用户数下的系统响应时间及服务器的资源利用率。
压力测试 -- Stress Testing
-
在一定的软硬件及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于 极限状态下长时间连续运行。
-
目的测试服务器在高负载情况下是否能够稳定工作,挖掘系统最脆弱的位置。
稳定性测试(可靠性测试)-- Stability Testing
-
在一定的软件、硬盘及网络环境下,模拟一定数量虚拟用户运行一种或多种业务,长时间的运行(7*24小时)系统。
-
目的是检测系统在长时间运行下的稳定性和性能相关指标是否符合预期
容量测试 -- Volume Testing
- 面向数据的,目的是显示系统可以处理目标内确定的数据容量。
兼容性测试(Compatibility Test Suite )简称CTS :
指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。
兼容性测试分类主要可以分为三大类:硬件兼容性测试、软件兼容性测试、数据兼容性测试。
-
硬件兼容:与整机兼容、与外设兼容
-
软件兼容:操作系统/平台、应用软件之间的兼容、不同浏览器的兼容、数据库的兼容、软硬件 配合兼容 注意:向前兼容是指可以使用软件的未来版本,向后兼容是指可以使用软件的以前版本。并非所有的 软件都要求向前兼容和向后兼容,这是软件设计者需要决定的产品特性。
-
数据兼容:不同版本间的数据兼容、不同软件间的数据兼容
安全测试(Security Testing) :
-
对软件产品进行测试以确保其符合产品安全需求和质量标准的过程。
-
用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入。用来保证系统本身数据的完整性和保密性。
-
如当受到恶意攻击时,设备的自我保护能力,病毒防护能力,自定义通信协议安全性等。
-
广义的还包括物理安全性测试、业务安全性测试。
安全性测试一般可以从以下方面考虑:
-
系统的登录
-
用户管理
-
防火墙
-
系统数据
-
数据库的安全性
-
内部通信协议
-
系统防病毒测试
-
WEB安全性,如WEB的加密,解密,数字签名等
功能性的一些安全性问题:
-
没有口令是否可以登录到系统中?
-
各级用户权限划分是否合理?
-
错误和文件访问是否适当地被记录?
-
系统配置数据是否能正确保存,系统故障时是否能恢复?
渗透测试:
是通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试。
与安全测试的区别:
-
出发点差异:渗透测试是以成功入侵系统,证明系统存在安全问题为出发点;而安全测试则是以发现系统所有可能的安全隐患为出发点。
-
视角差异:渗透测试是以攻击者的角度来看待和思考问题,安全测试则是站在防护者角度思考问题,尽量发现所有 可能被攻击者利用的安全隐患,并指导其进行修复。
-
覆盖性差异:渗透测试只选取几个点作为测试的目标,而安全测试是在分析系统架构并找出系统所有可能的攻击界 面后进行的具有完备性的测试。
-
成本差异:安全测试需要对系统的功能、系统所采用的技术以及系统的架构等进行分析,所以较渗透测试需要投入 更多的时间和人力。
-
解决方案差异:渗透测试无法提供有针对性的解决方案;而安全测试会站在开发者的角度分析问题的成因,提供更 有效的解决方案。
文档测试(Documentation Testing) :
-
定义:针对软件产品的交付品,配套的文档类部件的测试。如用户手册、使用说明、用户帮助文档等。
-
文档测试关注要点:完整性、正确性、一致性、易理解性、易浏览性。
-
目标:验证用户文档是正确的并且保证操作手册的过程能够正确工作。
可靠性测试:
软件可靠性、(可靠性测试更多的是)硬件可靠性。
本地化测试:
针对软件的本地化版本实施的针对性测试。 主要测试内容:
-
语言、书写习惯;
-
时区、日期格式、货币;
-
当地风俗、法律法规;
-
政治敏感内容
易用性测试:
-
测试用户使用软件时是否感觉方便,是否能保证用户使用体验。
-
测试方法有一致性测试法主要对象:用户界面(UI),所有用户跟产品交互的地方关注如下
-
用户界面:
-
风格、布局、元素上是否统一、一致
-
布局是否合理性、操作的合理性、提示等是否符合UI设计规范
-
-
一致性测试是一种“确认”(validation),目的是“证实”,具体方法:
-
进入用户界面,确认页面和产品整体风格,如字体大小,颜色,。。。
-
图标是否来自产品的图标库,风格统一
-
确认页面的“元素”是否符合产品的UI设计规范,是否统一。例如复选框是否都是口?单选框,switch控 件等。。。
-
确认页面布局是否是符合设计规范,比如设计规范要求分级组织不能超过3级,而软件实现太多。
-
确认操作合理性,比如查询结果,如果太多就要分页
-
确认提示是否合理,如输入错误提示等
-
部署测试:
也称安装测试,主要验证系统部署过程,并确保软件经过安装测试后可以正常使用。 主要测试内容:
-
在不同环境下的部署验证;
-
参照部署文档执行,过程的合理、正确性;
-
基础数据的准备。
无障碍测试:Accessibility Test
也称可访问性测试。是指软件需要提供便于特殊人群使用的功能,包括视障、听障、老年人、身 体残疾用户等,无障碍测试则是针对这部分功能的测试。
可用性测试(Usability Testing)
可用性测试法的对象也是UI,关注对象为产品提供的功能,对于用户来说是否易于学习理解、易于使用,需要和功能测试 结合起来,以场景作为测试粒度,以用户的视角进行测试。
-
步骤:
-
确定测试场景,可以根据需求规格写出来,每个场景《30分钟
-
一个场景不要超过10步
-
完成这个场景下,一共跳转了多少个页面/视图, 不要超过5个页面
-
测试者测完这个场景,一共求助了多少次,不要超过5次,不然这个产品可能用户理解就很差
-
可用性和易用性的区别:
-
可用性是以场景作为测试粒度,以用户的视角进行测试。(需要和功能测试结合起来)
-
易用性是以元素、布局,操作合理性的测试。
GUI测试
-
GUI测试是针对软件系统GUI界面进行的测试
-
GUI测试主要包括两方面的内容:
-
界面实现与界面设计的吻合情况;
-
确认界面处理的正确性。
-
-
一般业界常用的GUI自动化工具有QTP( QuickTestProfessional), SilkTest, QARun,selenium等。
GUI测试对象:
-
简单界面元素:指功能和属性相对比较单一的界面区域,即通常所指的各种控件
-
组合类界面元素:主要指一些复杂的界面元素,比如工具栏,组合框,表格,菜单栏等
-
完整界面(窗口):由一系列界面元素通过适当的形式组合而成的界面形式,最为常见的 为各种窗口。包括各种对话框、单文档窗口、多文档父窗口,多文档子窗口等
异常测试
概念: 系统异常测试又叫系统容错和可恢复性测试,它是通过人工干预手段使系统产生软、 硬件异常,通过验证系统异常前后的功能和运行状态,达到检验系统的容错、排错和 恢复的能力。它是系统可靠性评价的重要手段
容错处理:
-
系统自动处理
-
人工干预处理
注意:
-
系统异常测试还与系统的指标测试有关系,当系统需要提供的服务能力大于系统的设计指标时,也属于系统异常的情况,因此应该结合起来加以考虑
-
系统的可靠性是设计出来的,而不是测试出来的。测试出来的数据有助于为我们进行 进一步的系统优化设计积累经验,设计和测试是一个互为反馈的过程
网友评论