10分钟通读《软件测试》理论

计算机行业流行一个笑话: 有三样东西在制造过程中是永远看不见的, 它们是 法律, 香肠和软件 !

软件测试工程师

工作的职责:
  • 尽可能早一些找出软件缺陷, 并确保它得以修复
软件周期和所处的阶段
  • 构思
  • 分析
  • 设计
  • 开发
  • 测试
  • 最终产品
  • 维护
岗位要求(应具备的素质)
  • 他们是探索者
  • 他们是故障排除员
  • 他们不放过任何蛛丝马迹
  • 他们是追求完美主义者
  • 他们判断准确
  • 他们注重策略和外交
  • 他们善于说服
  • 他们受过软件编程方面的教育
什么是软件测试
  • 软件测试是一项批判性的工作
软件测试应该在项目什么阶段开始介入
  • 设计阶段

需求和Bug

什么是Bug
  • Bug即软件缺陷, 源自Mark Ⅱ
Bug的状态
  • 新的(New)
  • 已指派(Assigned)
  • 打开(Open)
  • 已修复(Fixed)
  • 待测试(Pending Reset)
  • 再测试(Reset)
  • 关闭(Closed)
  • 再打开(Reopen)
  • 拒绝中(Pending Reject)
  • 被拒绝( Rejected)
  • 延期 (Postponed)
  • 延期中 (Deferred)
测试报告, 描述软件缺陷的基本准则
  • 一致性
  • 唯一性
需求规格说明书
  • 完整
  • 准确
  • 精确, 不含糊, 清晰
  • 一致
  • 贴切
  • 合理
  • 代码无关
  • 可测试性
一个良好的需求应当具备哪些特征
  • 需求明确, 有确切的图文说明
  • 当前技术下, 需求可以实现
  • 功能实用, 与主功能模块不冲突
作为测试工程师, 如果你发现需求一直在变化, 怎么办
  • 通过与产品经理沟通, 稳定产品需求
  • 优先测试需求稳定的功能模块
  • 对需求变化频繁的功能部分, 编写通用性较好的测试用例

软件测试的现实挑战

测试的挑战性, 正确理解测试
  • 完全测试程序是不可能的
  • 软件测试是有风险的行为
  • 测试无法显示潜伏的软件缺陷
  • 并非所有的软件缺陷都需要修复
  • 产品说明书从没有最终版本
  • 软件测试员在产品小组中不受欢迎
  • 不存在没有缺陷的软件
  • 软件测试是一项讲究条理的技术专业
各种不同类型测试的定义及区别
  • 黑盒测试: 无需了解 软件内部代码结构, 重视功能, 不关注具体的实现方式
  • 白盒测试: 必须了解 软件内部代码结构, 重视实现的逻辑, 耗时更长, 无法考虑到所有情况
  • 静态测试: 不运行代码
  • 动态测试: 运行代码
你发现了一个缺陷, 但开发人员认为不是, 你如何处理
  • 主动与开发人员沟通, 讲明缘由
  • 向测试经理反应情况
  • 即时跟进bug的修改状态
  • 如果不是特别紧急的bug, 而产品急于上线, 可以先对bug进行记录, 在下一迭代周期提出bug

静态黑盒测试

需求规格说明书(spec)是什么?
  • 需求规格说明书展现了软件功能的雏形
  • 开发人员可以按照说明书, 有效制定自己的开发计划
  • 让用户了解将要开发软件的功能是什么,如果用户有不满意的地方,可以快速改进
  • 需求规格说明书不包括具体的编码要求,也不包括软件的具体功能操作步骤

静态黑盒测试需要耐心阅读文档, 具有想象力


动态黑盒测试

测试流程
  • 建立状态转换图
  • 减少要测试的状态及转换的数量
  • 定义测试用例
  • 执行重复, 压迫, 重负测试
测试工程师与测试经理的区别
  • 测试工程师侧重进行具体测试任务的执行
  • 测试经理侧重进行测试任务的调配
等价划分法
  • 等价类划分是指把分步骤把海量(无限)的测试用例, 缩减的很小, 但过程同样有效
如果能够执行完美的黑盒测试, 那还需要白盒测试吗?
  • 依然需要执行白盒测试, 因为结果正确, 不能表软件程序没有问题, 有可能是错误的程序得出了正确的结果

静态白盒测试

代码检查的流程和要求
  • 同事审查
  • 走查
  • 检验
代码检查的具体方法
  • 检测数据引用
  • 检测数据声明
  • 检测计算错误
  • 检测比较错误
  • 检测控制流程错误
  • 检测子程序参数错误
  • 检测输入输出错误
  • 其他检查(是否使用外语, 是否考虑移植, 兼容性)
代码检测对提高软件质量的积极作用
  • 尽早发现软件缺陷
  • 规范编码风格
  • 减少不必要的bug
静态白盒测试和软件开发调试有什么区别?
  • 静态白盒测试: 测试人员根据软件程序,寻找软件缺陷
  • 软件开发调试: 开发人员在开发过程中的操作

动态白盒测试

单元测试及集成测试的区别
  • 单元测试是从单元模块进行测试, 自底向上
  • 集成测试是从软件整体进行测试, 自顶向下
jUnit
  • jUnit是常用的Java语言测试框架

配置测试与兼容性测试

概念
  • 配置测试是指使用各种硬件来测试软件运行的过程
配置测试和兼容性测试主要的工作内容
  • 配置测试:
  1. 确定所需的硬件类型
  2. 确定用哪些厂商的硬件, 型号和驱动程序可用
  3. 确定可能的硬件特此, 模式和选项
  4. 将确定后的硬件配置缩减为可控制的范围
  5. 明确与硬件配置有关的软件的唯一性特征
  6. 设计在每一种配置中执行的测试用例
  7. 在每种配置中执行测试
  8. 反复测试直到小组对结果满意为止
  • 兼容性测试:
  1. 向后和向前兼容
  2. 测试多个版本的影响
  3. 测试高级和低级标准规范
  4. 数据共享兼容性
向上兼容和向下兼容的区别
  • 向上(向前)兼容是指可以使用软件未来的版本
  • 向下(向后)兼容是指可以使用软件以前的版本
工作量为什么会倍增
  • 客观来讲, 每个模块都有多个选项, 而这些选项的排列组合, 会上涨多个数量级
  • 只是单纯的软件本地化操作, 就要语言,文化, 内容, 数据格式, 数据兼容性等繁杂问题

外国语言测试

软件测试工程师不懂外语, 为什么还要参与外国语言版本的软件测试
  • 懂各国语言的专家, 不一定了解软测试
  • 测试工程师需要与语言专家配合共同完成测试

易用性测试和安全测试

基本概念
  • 易用性测试: 易用性测试是指让用户使用软件时是否方便
  • 应符合的标准规范: 直观, 一致, 灵活, 舒适, 正确, 实用

软件质量管理和CMM

基本概念
  • 检查和评价当前软件开发的过程, 找出改进的方法, 以达到防止软件缺陷出现的目标
SQA是什么
  • 软件质量保证
CMM是什么? 五个级别的基本定义?

能力成熟度模型(CMM)是一个行业标准, 用于定义和评价软件公司开发过程的成熟度, 提供怎样做才能提高软件质量的指导

  • 1级: 初始的
  • 2级: 可重复的
  • 3级: 定义的
  • 4级: 可管理的
  • 5级: 不断优化的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值