性能测试通常和应用程序、操作系统、数据库服务器、中间件服务器、网络设备等有关,定位问题也很难,如何快速、有效地定位并解决性能问题,是性能测试人员的一个重要任务。
软件测试的分类,测试流程,性能测试技术
loadrunner的使用
完整的性能测试方案、计划、用例设计、性能总结、相关交付文档
性能测试的基本过程:性能测试需求分析、性能测试计划、性能测试用例、测试脚本编写、测试场景设计、测试场景运行、场景运行监控、运行结果分析、系统性能调优、性能测试总结。
脚本录制、负载(场景设计、执行)、结果分析、断点设置、单步跟踪、日志输出等调试技术。
监控进程、CPU、内存、磁盘I/O等性能
LoadRunner在性能测试中的应用过程。包括 模型建立、性能测试用例设计、工具的引入、脚本代码的编写、场景设计、性能结果分析等。
前端性能测试, 以及前端性能测试分析工具HttpWatch、DynaTrace Ajax、FireBug、YSlow.
功能测试工具QTP、WinRunner、Jmeter
软件=程序+文档
程序:实现某种功能的指令的集合
文档:软件的整个生命周期中产生的各类图文的集合。包括《用户需求规格说明书》、《需求分析》、《系统概要设计》、《系统详细设计》、《数据库设计》、《用户操作手册》等。
软件缺陷:计算机的硬件、软件系统、应用软件出现的错误。
硬件错误,原因:1. 设计错误 2.硬件部件老化失效
软件生命周期:从软件需求的定义、产生直到被废弃的生命周期。
软件测试就是在软件投入正式运行前期,对软件需求文档、设计文档、代码实现的最终产品以及用户操作手册等方面审查过程。
软件测试,是为了找出软件缺陷而执行多组测试用例的活动。
测试用例是执行软件测试的最小实体。
软件测试还需要考虑测试环境。包括硬件环境(PC、笔记本电脑、服务器、小型机、大型机),软件环境(操作系统、web应用服务器、数据库)、网络环境(局域网、城域网、因特网、局域网是10Mbit/s还是100Mbit/s等)。
测试环境的搭建,需要注意:1).尽量模拟用户的真实场景 2).干净的环境(避免其他软件等的干扰) 3).独立的测试环境(测试和研发的环境应该独立)。
测试的各种分类结构图
性能测试:性能测试、负载测试、压力测试、容量测试、并发测试、配置测试、可靠性测试、失败测试。
黑盒测试, 随机性比较大。美国一个官方说法:20%的问题是在开发过程中发现的,80%的问题是在集成测试和系统测试过程中发现的。
白盒测试,着重于程序的内部结构及算法,通常不关心功能与性能指标。
灰盒测试,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集内部路径执行信息和外部用户接口结果的测试技术。
单元测试,是测试过程中的最小粒度。对函数和模块进行测试。 针对JAVA的单元测试主要用Junit,.Net则有Nunit,Delphi有Dunit等工具。
单元测试环境:驱动模块->被测模块->多个桩模块。
驱动模块,模拟被测模块的调用模块;桩模块,模拟被 被测模块 调用的模块。
集成测试:验证组成系统的各模块的接口和交互作用。分为增量式集成和非增量式集成。
一次性将所有模块组装到一起进行测试,即非增量式集成。
系统测试完全采用黑盒测试。根据需求分析时确定的标准检验软件是否满足功能、性能等方面的要求。
这是发现问题的主要阶段。将部分有规律的重复性工作使用自动化测试工具来进行,会减少我们的工作量,提高工作效率。
验收测试,验证软件是否符合用户的要求。
α测试,软件开发公司组织内部人员模拟各类用户行为对即将面市的产品进行测试。α测试之后,β测试,典型用户对软件进行测试。如在互联网上供用户下载试用。
回归测试,对软件新的版本,重新执行上一个版本测试时使用的测试用例。
冒烟测试,版本编译人员或其他研发人员,确定软件的基本功能正常。
随机测试。考察健壮性
防止生成大量垃圾数据的情况时非常有用。
软件开发模式:直接编写法、边写边改法、瀑布法、快速原型法,螺旋模式法。
直接编写法,几乎被放弃了。
边写边改法,适用于小项目。
瀑布法,是一种线性顺序模型,优点是各阶段之间存在严格的顺序性和依赖性,缺点是,在系统建立前,很难给出一套完整、有效的用户需求。 需求明确时可以使用瀑布模型。
计划->需求分析->设计->编码->测试->运行维护。
快速原型法。快速的开发出软件的原型,实现产品最重要的功能,然后逐步调整,得到更加明确的用户需求。然后,丢弃原型,开发出用户满意的产品。
螺旋模式法。规划,风险分析,原型开发,用户评审。
进行风险分析,大大影响项目利润,那么进行风险分析就毫无意义。因此,螺旋模式法只适合大型项目。风险分析要准确。并且让客户相信这种风险分析,是比较困难的,因此,这种模式往往适应于内部大型软件开发。
软件测试流程:测试计划,测试设计,执行测试,测试总结。
测试计划,就是描述所有要完成的测试工作。包括被测试项目的背景、目标、范围、方式、资源、进度安排、测试组织,与测试有关的风险等。
测试设计,设计测试用例和测试数据,要保证测试用例完全覆盖测试需求。
测试用例:
功能测试用例、安全测试用例、用户界面测试用例、安装/反安装测试用例、集成测试用例、性能测试用例。
评价测试用例的好坏的两个标准:(1)是否可以发现尚未发现的软件缺陷 (2)是否可以覆盖全部的测试需求
测试用例的设计方法:等价类划分,边界值分析法,因果图表法,判定表方法,错误推测法,场景法
测试执行。分为缺陷管理和测试执行。
缺陷管理:发现缺陷,进行处理。
测试执行:设置测试环境,测试环境初始化,执行测试过程。
使测试用例通过评审,部署相应的环境,执行用例,将发现的缺陷提交到缺陷管理工具中。第一轮测试完成。 然后,修改、完善、补充用例,并且给出一个测试报告,指出当前存在缺陷的严重等级数目、重要的缺陷、缺陷的列表等。
开发人员修复缺陷之后,进行第二轮测试。需要进行回归测试。
测试报告包括如下内容:系统的概述、编写目的、参考资料、测试环境、差异、测试充分性评价、残留缺陷、缺陷统计、缺陷分析、测试活动总结、测试结论等方面。
系统概述:主要归纳对测试项的评价。指明 被测试项及其版本/修订级别,测试项概述,如项目/产品的名称、版本以及测试项内容等。