(1)软件质量
功能性 可靠性 易用性 效率性 维护性 可移植性
(2)测试类型
•功能测试 需求规格说明书、或概要、详细设计文档 与软件实际实现是否一致
• 性能测试 集成系统中的运行性能 (可包括 负载 压力 稳定性 兼容性)
• 负载测试 不同的负载下的性能表现
• 压力测试 系统在超负荷的情况下的表现
• 容量测试 面向数据 显示处理的确定数据容量
• 稳定性测试 一定负荷下的运行情况
• 安全性测试 数据完整性与保密性
• 兼容性测试 不同软件 不同操作系统之间 能够良好运行
• GUI测试 界面实现与设计的吻合 处理正确性 是否美观
•可用性测试 用户理解使用方面
•异常测试 容错、可恢复性 实际性能与指标不符 可靠性是设计出来的
•文档测试 用户文档与软件实现相符
•安装与卸载测试 安装,卸载可符合用例设计,顺利完成
•接口测试 内部、外部交互点 系统组件间接口
功能测试
概念:
功能测试是根据产品的需求规格说明书、或概要、详细设计文档,验证被测试对象的功能实现是否符合预期。
目标:
功能测试主要是为了发现以下几类错误:
•是否有不正确或遗漏了的功能?
•功能实现是否满足用户需求和系统设计的隐藏需求?
•输入能否正确接受?能否正确输出结果?
例如:
单元测试中的某个函数功能是否正确。
系统测试中的登录功能是否正常。
性能测试
•性能测试(Performance Testing)就是用来测试软件在集成系统中的运行性能的,验证被测试对象的性能是否符合预期。
•性能测试有时需要有工具支持,市面上有一些专门用于性能测试的工具,如Loadrunner,Jmeter等 。
•例如:
单元测试时测试加法函数完成加法运算消耗的时间
系统测试时测试大量用户使用淘宝系统时,确认系统的响应时间
关注指标:
•响应时间
•业务成功率
•CPU占用情况
•内存占用情况
•硬盘读写情况
•并发用户量
负载测试
负载测试是通过给被测试系统施加不同的符合,观察被测试系统在不同的负载下的性能表现。
目标:
验证系统在不同用户压力下,性能的相关指标和表现。
找到系统处理能力的极限和临界点。
例子:
-分别测试50个用户、100个用户、500个用户同时去登陆系统,验证在不同的用户负载下系统的性能指标
压力测试
压力测试(Stress Testing)的目的是调查系统在其资源超负荷的情况下的表现。尤其感兴趣的是这些对系统的处理时间有什么影响。这类测试在一种需要反常数量、频率或资源的方式下执行系统。
目标:
通过极限测试方法,发现系统在极限或恶劣环境中自我保护能力。主要验证系统的可靠性,找到系统薄弱环节。
例子:
-模拟1000个用户同时去购物,让cpu占用率达到100%,运行一段时间看系统哪个节点先崩溃
容量测试
容量测试(VolumeTesting)的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
例子:
-使用编译器编译一个极其庞大的源程序;
-一个操作系统的任务队列被充满;
-庞大的Email信息和文件充满了Internet。
稳定性测试
系统稳定性测试目的是评价系统在一定负荷情况下、长时间的运行情况。包括系统在一定负荷下,再增加新的业务,原有的业务是否受影响,新的业务是否能正常工作,系统资源有无泄漏,数据有无不一致的情况,系统性能是否会降下来,关键点是长时间的运行后,系统的状况如何,系统平均无故障时间MTBF(MeanTimeBetweenFailure)是否满足系统设计要求。
安全性测试
安全测试(Security Testing)用来验证集成在系统内的保护机制是否能够在实际中保护系统不受到非法的侵入。 用来保证系统本身数据的完整性和保密性。如当受到恶意攻击时,设备的自我保护能力,病毒防护能力,自定义通信协议安全性等。
一些功能性的安全性问题:
-没有口令是否可以登录到系统中?
-各级用户权限划分是否合理?
-错误和文件访问是否适当地被记录?
-系统配置数据是否能正确保存,系统故障时是否能恢复?
一般可以从以下方面考虑安全性测试
•系统的登录
•用户管理
•防火墙
•系统数据
•WEB安全性,如WEB的加密,解密,数字签名等
•数据库的安全性
•内部通信协议
•系统防病毒测试
兼容性测试
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试
例如:app在不同的Android系统版本上运行
app软件软件在不同的分辨率的手机上运行
使用不同的浏览器访问网站
GUI(GraphicalUserInterface)测试
•GUI测试是针对软件系统GUI界面进行的测试
•GUI测试主要包括两方面的内容:
界面实现与界面设计的吻合情况;
确认界面处理的正确性。
界面是否美观
可用性测试
可用性测试(Usability Testing)是为了检测用户在理解和使用系统方面到底有多好。主要考虑产品是否符合实际应用情况,是否符合用户习惯或特殊要求,操作方式是否方便合理、设备和用户间的交互信息是否准确易于理解、是否遵从行业习惯、外观/界面是否美观等。应涉及到所有和用户有交互的功能或子系统。这包括系统功能、系统发布、帮助文本和过程,以保证用户能够舒适地和系统交互。
一些测试人员应当关注的可用性问题:
-过分复杂的功能或者指令;
-困难的安装过程;
-错误信息不准确或者过于简单;
-用户被迫去记住太多的信息;
-语法、格式和定义不一致。
安装卸载测试
定义:
系统的可安装性测试,主要是根据软件的测试特性列表、软件安装、配置文档,设计安装过程的测试用例,发现软件在安装过程中的错误。安装测试同时测试安装文档的正确性。
另外验证通过程序提供的方式进行卸载,能否正常卸载,另外卸载后还可以成功的安装。
异常测试
概念:
系统异常测试又叫系统容错和可恢复性测试,它是通过人工干预手段使系统产生软、硬件异常,通过验证系统异常前后的功能和运行状态,达到检验系统的容错、排错和恢复的能力。它是系统可靠性评价的重要手段
容错处理:
•系统自动处理
•人工干预处理
注意:
•系统异常测试还与系统的指标测试有关系,当系统需要提供的服务能力大于系统的设计指标时,也属于系统异常的情况,因此应该结合起来加以考虑
•系统的可靠性是设计出来的,而不是测试出来的。测试出来的数据有助于为我们进行进一步的系统优化设计积累经验,设计和测试是一个互为反馈的过程
文档测试
文档测试(Documentation Testing)的目标是验证用户文档是正确的
并且保证操作手册的过程能够正确工作。
接口测试
概念:
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
•现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了),需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
•如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。
网友评论