测试相关概念

概念

     通过人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

原则:

  1. 测试证明软件存在缺陷:无论执行什么样的测试操作都不能证明当前软件是没有缺陷的
  2. 不能进行穷尽测试:有些功能没办法将所有的测试情况都罗列处来
  3. 缺陷存在集群现象:二八理论,核心功能占20%,非核心占80%
  4. 某些测试需要依赖特殊的环境
  5. 测试应尽早介入
  6. 杀虫剂现象:同样的测试用例不能重复执行多次,因为软件会对它产生免疫
  7. 不存在缺陷谬论:任何软件不可能是完美的

流程:

  1. 需求分析:梳理清楚需要设计的点是什么。来源:需求规格说明书/API文档/同类产品分析/个人经验
  2. 制定测试计划:确定测试范围及测试策略。
  3. 设计用例:等价类划分法/边界值分析法/判定表
  4. 评审用例:
  5. 配置环境
  6. 执行用例:先进行冒烟测试
  7. 回归测试及缺陷跟踪
  8. 输出测试报告
  9. 测试结束

分类:

  • 按测试阶段分类

  1. 单元测试(UT):最小单元的单元
  2. 集成测试(IT或接口测试):
  3. 系统测试(ST):业务角度
  4. 验收测试:alpha测试(内部测试)/beta测试(公测)/UTA测试(特定场景测试,目的是让客户为当前软件买单)
  • 按测试手段分类

  1. 黑盒测试(功能测试):只测试功能,不关注内部实现,贴近用户的使用角度,自动化测试覆盖率低,复用率低。方法:等价类划分法,边界值分析法,错误推测法,因果图-->判定表法,正交试验分析法   
  2. 白盒测试(单元测试):关注内部逻辑(语句,条件,条件组合,分支,路径)。  方法:代码检测法,静态结构分析法,静态质量度量法,逻辑覆盖法,基本路径测试法
  3. 灰盒测试(接口测试):介于白盒与黑盒之间
  4. 静态测试:无需执行代码(互审,走查,会议)
  5. 动态测试:执行代码
  6. 手工测试:易发现缺陷,容易实施,灵活性高
  7. 自动化测试:包括 单元测试,接口测试,性能测试,优点:高效率,速度快,高复用性,准确/可靠
  • 按测试模型分类

  1. V模型:需求分析--概要设计--详细设计--软件编码--单元测试--集成测试--系统测试--验收测试。   优点:包含了底层测试(单元测试)和高层测试(系统测试);清楚的标识了开发和测试各个阶段;自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。   缺点:错误不能及时进行修改;需求经常变化导致返工量大,灵活度较低 。    改进:每个步骤都可以进行小的迭代工作。
  2. W模型:需求和设计阶段也有测试活动。 优点:更早的介入测试,修复成本低,分阶段工作,方便项目整体管理。   缺点:需要文档,不适合小型公司。
  3. H模型:
  4. 敏捷测试:从客户角度进行测试,尽早测试,不间断测试
  5. 基于脚本的测试(SBT)
  6. 探索式测试(ET):完全抛开脚本的测试
  7. 基于风险的测试(RBT)
  8. 基于模型的测试(MBT)
  • 按测试类型分类

  1. 功能测试:功能错误或遗漏,界面问题,性能错误,数据及访问错误,初始化及终止错误。   工具:selenium,  QTP,(winrunner , silkTest , ratinal , watir ,sikuli)
  2. 性能测试:负载测试,压力测试,强度测试,渗透测试(通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试)。并发用户数VU,每秒事务数TPS,系统响应时间,设备性能。  工具:jmeter, LoadRunner ,webload , apache bench , loadUI , silkperformer
  3. 安全测试:对软件产品进行测试以确保其符合产品安全需求和质量标准。  工具:appscan , webinspect , nessus , nmap , metaSploit , webScarab , fortify ,W3AF
  4. 兼容性测试:软件本身的兼容性,不同平台下的兼容性,软件对运行设备的兼容性,软件互操作性兼容性,浏览器兼容性。   工具:browsershots , browser sandbox
  • 其他分类

  1. 回归测试:重心在关键模块和重点功能组件。主要使用自动化测试。
  2. 冒烟测试:对当前软件的核心功能快速的执行流程进行验证。
  3. 文档测试:针对软件产品的交付品,配套的文档类部件的测试。如用户帮助手册等。  测试内容:完整性/正确性/一致性/易理解性/易浏览性。
  4. 可靠性测试:硬件/环境测试
  5. 应用性测试:用户使用是否感觉方便
  6. 本地化测试:针对软件的本地化实施的针对性测试。如 语言/书写习惯/时区/日期格式/货币/当地风俗/法律法规/政治敏感内容等
  7. 部署测试:确保软件经过安装测试后可以正常使用。在不同的环境下的部署测试/参照部署文档执行,过程的合理性/正确性,以及基础数据的导入。
  •    软件质量的六大特性

  1. 功能性:软件需要满足用户显式或者隐式的功能
  2. 易用性:软件易于学习和上手
  3. 可靠性:软件必须实现需求当中指明的具体功能
  4. 效率性:类似于软件的性能
  5. 可维护性:要求软件具有将某个功能修复后继续使用的能力
  6. 可移植性:软件可以从一个平台移植到另一个平台上使用的能力
  • 开发模型

  1. 瀑布模型:项目计划--需求分析--软件设计--程序开发--软件测试--集成维护。  适合需求稳定阶段
  2. 快速原型模型:适合需求不明确,小型,灵活度高的项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值