软件测试基础

软件测试基础

定义:软件测试是为了发现错误而执行程序的过程。 IEEE定义:使用人工或自动的手段来运行或者测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

软件测试五大要素:质量、人员、资源、流程、技术

软件测试两个目标:测试覆盖率、测试效率

软件测试所遵循的原则:

  • 测试显示缺陷的存在,但不能证明系统不存在缺陷
  • 穷尽测试是不可能的,应设定及时终止的条件
  • 测试应尽早进行
  • 缺陷具有群集特性
  • 测试的杀虫剂悖论
  • 测试的二八原则
  • 测试活动依赖于测试背景

软件测试的分类

按测试阶段分类:
单元测试
定义:对软件测试中的最小可测试单元进行检查和验证 原则:
  • 尽可能保证各个测试用例是互相独立的
  • 一般由代码的开发人员来实施,用以检验所开发的代码是否符合自己的设计要求

好处:

  • 能尽早发现缺陷
  • 有利于重构
  • 简化集成
  • 文档
  • 用于设计

限制:

  • 不能覆盖所有的执行路径 ,不能捕捉到所有路径的错误
  • 每一行代码,一般需要3~5行测试代码才能完成单元测试,所以存在投入和产出的一个平衡

测试框架:XUnit、JUnit、nUnit、PHPUnit、CPPUnit

集成测试
定义:在单元测试的基础上,测试是将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动

集成测试的实施方案:Bilg Bang、自顶向下、自底向上、核心系统集成、高频集成

集成测试与单元测试的区别:

  • 测试的对象不同
  • 测试的依据不同
  • 测试的方法不同
系统测试
定义:是将经过集成测试的软件,作为计算机系统的一部分与系统其他部分结合起来,在实际运行环境中对计算机系统进行的一系列严格有效的测试,以发现软件潜在问题,保证系统正常运行。

系统测试关注点:

  • 关注系统本身的使用
  • 关注系统与其他相关系统间的连通
  • 关注系统在不同使用压力下的表现

系统测试与集成测试的区别:

  • 测试对象
    集成测试:由通过了单元测试的各个模块所集成起来的构件
    系统测试:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集 和传输构件、支持软件、系统操作人员等整个系统
  • 测试时间
    集成测试:介于单元测试和系统测试之间
    系统测试:集成测试之后
  • 测试内容
    集成测试:各个单元模块之间的接口
    系统测试:整个系统的完整功能性
  • 测试角度
    集成测试:偏于技术角度的验证
    系统测试:偏于业务角度验证
验收测试
定义:也称交付测试,针对用户需求、业务流程的正式测试,确定系统是否满足验收标准,由用户、客户以及其他授权机构决定是否接受系统。

细分:

  • 用户验收测试
  • 运行验收测试
  • 合同和规范验收测试
  • alpha测试(开发者环境)
  • Beta测试(脱离开发者)
按测试手段分类
以对象可见度:
黑盒测试
优点:
  • 容易实施,不需要关注内部的实现
  • 更贴近用户的使用角度

缺点:

  • 测试覆盖率较低,一般覆盖的代码量不到40%
  • 针对黑盒测试的自动化测试复用率低,维护成本较高

主要测试内容:

  • 是否有不正确或遗漏的功能
  • 在接口上,输入是否能正确的接收,能否输出正确的结果
  • 是否有数据结构错误或外部信息访问错误
  • 性能是否满足需求

主要设计方法

  • 等价类划分法
  • 边界值分析法
  • 错误推测法
  • 因果图法
  • 正交试验分析法
  • 状态迁移图法
  • 流程分析法
白盒测试(结构化测试、透明测试)
优点:
  • 迫使测试人员去思考软件的实现,理解原理
  • 可以检测代码中的每条分支和路径
  • 揭示隐藏在代码中的错误
  • 对代码的测试比较彻底

缺点:

  • 昂贵
  • 无法检测代码中遗漏的路径和数据敏感性错误
  • 不能直接验证需求的正确性

主要测试方法:

  • 代码检测法
  • 静态结构分析法
  • 静态质量度量法
  • 逻辑覆盖法
  • 基本路径测试法
灰盒测试
介于白盒和黑盒测试之间,关注输出对于输入的正确性,同时也关注内部实现
以状态:
静态测试
静态测试是指无需执行被测程序,而是通过评审软件测试文档或代码,来度量程序静态复杂度,以检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率
动态测试
动态测试是指运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性、健壮性等。
以测试执行方式:
手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为,更使用针对深度的测试和睦强调主观判断的测试
自动化测试
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
按测试模式分类
瀑布模型
敏捷测试
特点:
  • 强调从客户角度进行测试
  • 重点关注迭代测试新功能,不再强调测试阶段
  • 尽早测试,不间断测试,具备条件即测试
  • 强调持续反馈
  • 预防缺陷重于发现缺陷
基于脚本的测试
基于风险的测试
探索式测试
...
按测试类型来分类
功能测试
定义:根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定他们是否满足设计需求

针对问题:功能错误或遗漏、界面问题、性能错误、数据及访问错误、初始化及终止错误

功能测试工具:商用:QTP winrunner、silkTest、Rational robot
开源:Selenium、watir、sikuli

性能测试
定义:验证软件系统的性能可以满足需求规格给定的指标要求

性能指标:并发用户数VU、每秒事物数TPS、系统响应时间、设备性能

性能测试工具:LoadRunner、Silkperformer、Jemeter、WebLoad、Apache Bench、LoadUI

LoadRunner
组件:
  • Virtual User Generator,录制最终用户业务流程,并创建性能测试脚本
  • Controller,组织、驱动、管理并监控负载测试
  • Analysis,用于查看、剖析和比较性能结果

功能:

  • 轻松创建虚拟用户
  • 创建真实的负载
  • 定位性能问题
  • 分析结果以精确定位问题所在
  • 重复测试保证系统发布的高性能

测试步骤:
使用VUGen创建脚本–>使用Controller创建测试场景–>使用Analysis分析测试结果

部署测试
文档测试
定义:针对软件产品的交付品,配套的文档类部件的测试,如用户手册、使用说明、用户帮助文档等

文本档测试关注点:完整性、正确性、一致性、易理解性、易浏览性

安全测试
定义:对软件产品进行测试以确保其符合产品安全性需求和质量标准

安全测试工具:Appscan、Webinspect、Nessus、Nmap、MetaSploit、WebScarb、Fortify、W3AF

兼容性测试
测试范围:软件本身的兼容性、不同平台下的兼容、软件对运行设备的兼容性、软件互操作性、浏览器兼容性

浏览器兼容性测试工具:BrowserShots、Browser Sandbox

易用性测试
本地化测试
无障碍测试
可靠性测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值