-
软件测试目的
1)确保软件质量
2)减少质量问题给企业及用户带来隐患
-
测试分类
1)安装测试
2)构建测试
3)白盒测试
4)黑盒测试
5)性能测试
6)迁移测试
……
-
单元测试
1、定义:开发人员针对程序模块(软件设计的最小单位)来进行正确性检验的测试;
2、单元测试是和开发最接近的一种测试;
3、单元测试是粒度最小的软件测试
- 过程化编程:单个程序、函数、过程
- 对象化编程:方法、基类、抽象类、派生类
4、子系统只有通过单元测试之后才能集成到大系统中
白盒测试
定义:指测试人员可直接访问内部数据结果、算法及其代码实现的测试
常见的方法:
- 接口测试
- 代码覆盖率测试
- 缺陷注入测试方法
“单元测试”和“白盒测试”区别
1、测试目的不同
“白盒测试”是测试程序的整体逻辑
“单元测试”是测试程序中一个独立的模块
2、执行人员不同
“白盒测试”一般是由专门的白盒测试人员完成
“单元测试”一般是由程序员自己完成
功能测试(黑盒测试)
1、定义:通过黑盒模式发现代码集成后存在的功能问题的测试(关注的重点是系统的功能;可以自动或手动执行测试用例)
2、与“单元测试”的区别:粒度不同
3、单元测试关注的是最小代码片段
4、功能测试关注的是一个完整的业务功能
性能测试
1、关注重点:验证软件的非功能性需求的测试
2、相应测试项:吞吐率、稳定性、可靠性
3、主要手段:通过自动化的方法模拟真实用户并发访问的场景
4、最终目的:1、验证系统的性能指标或发现其性能瓶颈;2、从根本上保证用户体验和长远利益
手工测试特点
优点:
- 方便灵活
- 首次投入成本低
- 人员素质要求低
缺点:
- 效率低
- 重复开销大
- 难以模拟复杂的使用场景,如:并发或连续事务
自动化测试特点
优点:
- 效率高,提供很强的生产力
- 重复活动开销小
- 基本可以模拟任何复杂的使用场景
- 弱化了软件测试人员个体差异的影响
缺点:
- 首次投入成本高
- 变更成本大
- 人员素质要求高
自动化 vs 手动测试
- 形成良好互补,2/8原则
- 创造性的工作交付人来做,重复性工作交付机器来做
- 大项目适合自动化测试,小项目适合手工测试
针对小规模项目分析:
- 小规模测试基本上手动和自动都可以适用
- 在很小规模的时候,手工在成本上有很大的优势
- 随着回归次数增加,手工成本基本线性增加,自动化则成本趋于稳定
大规模项目分析:
- 软件项目随着规模增大,很容易产生滚雪球效应
- 手工测试很快遇到天花板,无论是成本还是可操作性都会出现障碍,投入成本增幅远高于开发成本增幅
- 自动化将成为主流,基本成本的增长和开发的成本投入幅度相当
测试工具:
开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis
开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject
开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator
[TestDirector]:企业级测试管理工具,也是业界第一个基于Web的测试管理系统。
[Quality Center]:基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷。
[QuickTest Professional]:用于创建功能和回归测试。
[LoadRunner]:预测系统行为和性能的负载测试工具。
其他工具与自动化测试框架:Rational Functional Tester、Borland Silk系列工具、WinRunner、Robot等。
国内免费软件测试工具有:AutoRunner和TestCenter。
1.Winrunner 最主要的功能是自动重复执行某一固定的测试过程。它以脚本的形式记录下手工测试的一系列操作,在环境相同的情况下重放,检查其在相同的环境中有无异常的现象或与预期结果不符的地方。可以减少由于人为因素造成结果错误,同时也可以节省测试人员大量测试时间和精力来做别的事情。功能模块主要包括:GUI map、检查点、TSL 脚本编程、批量测试、数据驱动等几部分。
2.LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快地查找和发现问题。此外,还能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。
3.QTP是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件QuickTest Professional ,可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。Mercury QuickTest Pro 是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。 Mercury QuickTest Pro为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案
4.TestDirector基于WEB的测试管理工具。他能够让你系统地控制整个测试过程,并创建整个测试工作流的框架和基础,使整个测试管理过程变得更为简单和有组织。他能够帮助你维护一个测试工程数据库,并且能够覆盖你的应用程序功能性的各个方面。T并且还为你提供了直观和有效的方式来计划和执行测试集、收集测试结果并分析数据。还专门提供了一个完善的缺陷跟踪系统。并可以同Mercury公司的测试工具、第三方或者自主开发的测试工具、需求和配置管理工具、建模工具的整合功能。你可以通过他进行需求定义、测试计划、测试执行和缺陷跟踪,即整个测试过程的各个阶段
5.SilkTest 是面向Web应用、Java应用和传统的C/S应用,进行自动化的功能测试和回归测试的工具。它提供了用于测试的创建和定制的工作流设置、测试计划和管理、直接的数据库访问及校验等功能,使用户能够高效率地进行软件自动化测试。
为提高测试效率,SilkTest提供多种手段来提高测试的自动化程度,包括:从测试脚本的生成、测试数据的组织、测试过程的自动化、测试结果的分析等方面。在测试脚本的生成过程中,SilkTest通过动态录制技术,录制用户的操作过程,快速生成测试脚本。在测试过程中,SilkTest还提供了独有的恢复系统(Recovery System),允许测试可在24×7×365全天候无人看管条件下运行。在测试过程中一些错误导致被测应用崩溃时,错误可被发现并记录下来,之后,被测应用可以被恢复到它原来的基本状态,以便进行下一个测试用例的测试
6.Selenium是为正在蓬勃发展的web应用开发的一套完整的测试系统。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好的工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上,包括IE、Mozilla Firefox、Chrome、Safari等。
7.TPT是针对嵌入式系统的基于模型的测试工具,特别是针对控制系统的软件功能测试。TPT支持所有的测试过程:包括测试建模、测试执行、测试评估以及测试报告的生成。
TPT软件由于首创地使用分时段测试(Time Partition Testing),使得控制系统的软件测试技术得以极大提升;同时由于TPT软件支持众多业内主流的工具平台和测试环境,能够更好地利用客户已有的投资,实现各种异构环境下的自动化测试;针对MATLAB/Simulink/Stateflow以及TargetLink,TPT提供了全方位的支持进行模型测试