计算机行业流行一个笑话: 有三样东西在制造过程中是永远看不见的, 它们是 法律, 香肠和软件 !
软件测试工程师
工作的职责:
尽可能早一些找出软件缺陷, 并确保它得以修复
软件周期和所处的阶段
构思
分析
设计
开发
测试
最终产品
维护
岗位要求(应具备的素质)
他们是探索者
他们是故障排除员
他们不放过任何蛛丝马迹
他们是追求完美主义者
他们判断准确
他们注重策略和外交
他们善于说服
他们受过软件编程方面的教育
什么是软件测试
软件测试是一项批判性的工作
软件测试应该在项目什么阶段开始介入
设计阶段
需求和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语言测试框架
配置测试与兼容性测试
概念
配置测试是指使用各种硬件来测试软件运行的过程
配置测试和兼容性测试主要的工作内容
配置测试:
确定所需的硬件类型
确定用哪些厂商的硬件, 型号和驱动程序可用
确定可能的硬件特此, 模式和选项
将确定后的硬件配置缩减为可控制的范围
明确与硬件配置有关的软件的唯一性特征
设计在每一种配置中执行的测试用例
在每种配置中执行测试
反复测试直到小组对结果满意为止
兼容性测试:
向后和向前兼容
测试多个版本的影响
测试高级和低级标准规范
数据共享兼容性
向上兼容和向下兼容的区别
向上(向前)兼容是指可以使用软件未来的版本
向下(向后)兼容是指可以使用软件以前的版本
工作量为什么会倍增
客观来讲, 每个模块都有多个选项, 而这些选项的排列组合, 会上涨多个数量级
只是单纯的软件本地化操作, 就要语言,文化, 内容, 数据格式, 数据兼容性等繁杂问题
外国语言测试
软件测试工程师不懂外语, 为什么还要参与外国语言版本的软件测试
懂各国语言的专家, 不一定了解软测试
测试工程师需要与语言专家配合共同完成测试
易用性测试和安全测试
基本概念
易用性测试: 易用性测试是指让用户使用软件时是否方便
应符合的标准规范: 直观, 一致, 灵活, 舒适, 正确, 实用
软件质量管理和CMM
基本概念
检查和评价当前软件开发的过程, 找出改进的方法, 以达到防止软件缺陷出现的目标
SQA是什么
软件质量保证
CMM是什么? 五个级别的基本定义?
能力成熟度模型(CMM)是一个行业标准, 用于定义和评价软件公司开发过程的成熟度, 提供怎样做才能提高软件质量的指导
1级: 初始的
2级: 可重复的
3级: 定义的
4级: 可管理的
5级: 不断优化的