admin 管理员组

文章数量: 887021

精读

本文是关于精读书籍《软件测试的艺术》的一些学习笔记和分享

本书共有九章包括测试思想(心理,经济),代码检查,测试用例设计,模块测试,更高级别的测试,调试,极限测试和因特尔应用系统的测试

本文主要是介绍调试的方法来确定错误的位置,以及敏捷开发模型——极限测试和关于网页应用系统的测试。

调试:

调试主要有两个步骤即错误定位和错误修改,其中对错误定位是相对比较重要的。所以,这里记录一下关于错误定位的方法。

关于错误定位,主要有暴力法调试,归纳法调制,演绎法调制,回溯法调试和测试法调试。

  • 暴力法调制
    1. 利用内存信息输出来调试
    2. 使用自动化的调试工具来进行调试
    3. 根据“在程序中插入打印语句”的建议来调试
  • 归纳法调制
    1. 确定相关的数据
    2. 组织数据
    3. 作出假设
    4. 证明假设
  • 演绎法调制
    1. 列举出所有可能的原因或假设
    2. 利用数据排除可能的原因
    3. 提炼剩下的假设
    4. 证明剩下的假设
  • 回溯法调制

        对于小型程序,沿着程序的逻辑结构回溯不正确的结果,直到找出程序逻辑出错的位置

  • 测试法调制

        通过编写和运行测试用例来确定错误的位置。此方法并不是一个完全独立的方法,它常常结合归纳法一起使用,以获得假设或证明所需要的条件。

调试的原则

定位错误的原则

  • 动脑筋
  • 如果遇到了僵局,就留到稍后解决
  • 如果遇到了困境,就把问题描述给其他人听
  • 仅将测试工具作为第二种手段
  • 避免使用试验法

修改错误的技术

  • 存在一个缺陷的地方,很有可能还存在其他缺陷
  • 应纠正错误本身,而不仅是在其症状
  • 正确纠正错误的可能性并非100%
  • 正确修改错误的可能性随着程序规模的增加而降低
  • 应意识改正错误会引入新错误的可能性
  • 修改错误的过程意识临时回到设计阶段的过程
  • 应修改源代码,而不是目标代码

错误分析

  • 错误出现在什么地方
  • 谁制造了这个错误
  • 哪些做的不正确
  • 如何避免该错误的出现
  • 为什么错误没有早些发现
  • 谁如何更早的发现错误

极限测试

最流行的敏捷软件开发过程——XP模型

XP模型高度依赖模块的单元和验收测试。需要首先创建单元测试和验收测试,然后才创建代码库,这种形式的测试又被称为极限测试(XT)。

极限编程的12个团队实践:

  1. 计划与需求分析
    • 市场和业务开发人员集中起来
    • 程序员预估完成场景的时间
    • 客户根据时间和商业价值选择软件的功能特征
  2. 小规模、递增的发布
    1. 努力添加细微,实在的,可增值的特征,频繁的发布新版本
  3. 系统隐喻
    1. 编程小组确认隐喻,便于建立命名规则和程序流程。注:软件隐喻的本质是一种认知隐喻。我们可以通过在日常生活中无意识获得的基本隐喻系统,在软件开发过程中,受到关联性的启发和影响,使得主观经验和感觉经验相互匹配,然后通过概念融合而形成具有启示意义和指导意义的软件隐喻,例:白盒(whitebox),臭虫(bug)等
  4. 简要设计
    1. 实现最简单的设计,使代码通过单元测试用例
  5. 连续测试
    1. 在编写模块之前就生成单元测试用例。模块只有在通过单元测试之后才告完成。
    2. 程序只有通过了所有的单元测试和验收测试完成之后才算结束
  6. 重构
    1. 清理和调整代码库,单元测试有助于确保在此过程终不能破坏程序的功能
    2. 在任何重构之后重新进行所有的单元测试
  7. 结对编程
    1. 两位程序员协同工作,在同一台机器开发代码库
  8. 代码的集体所有权
    1. 所有代码归全体程序员所有,没有哪一个程序员只致力于开发某一个代码库
  9. 持续集成
    1. 每天都变更通过单元测试之后将其集成到代码库中
  10. 每周40小时工作
  11. 客户在现场
    1. 开发人员和编程小组可以随时接触客户,可以快速、准确的解决问题,是开发过程不至于中断
  12. 按标准编码
    1. 所有的代码看上去必须一致,设计一个系统隐喻有助于满足该原则。

极限单元测试

两个原则:

  • 所有代码模块在编码开始之前必须设计好单元测试用例
  • 在产品发布之前必须通过单元测试

验收测试

验收测试的目的是判断应用程序是否满足功能和易用应等其他需求。主要是客户使用验收测试阿里验证应用程序是否得到了预期的结果。

测试因特网应用系统

Web服务器的三层结构:

表示层:应用系统的可视化的外观和感觉提供给最终用户

业务层:事务处理,用户身份确定,数据确认,程序日志等

数据源:描述如何进行数据储存。通常是从关系数据库系统(RDBMS)中储存和获取数据

表示层业务层数据层
  • 确保字体在不同的浏览器中都相同
  • 检查一切报每一个连接都指向正确的文件或者站点
  • 检查图形以确保其分辨率和大小正确
  • 对每一页进行拼写检查
  • 让原稿编辑检查语法和风格
  • 在页面载入时检查光标为孩子以确保其在正确的文本框中
  • 检查以确保在页面载入使选中了默认的按钮
  • 检查运算和逻辑运算是否正确
  • 确保提出的响应时间、吞吐率等性能指标得到了满足
  • 验证事务正确完成
  • 确保失败的事务回滚正确
  • 确保正确采集数据
  • 确保数据库操作满足性能要求
  • 验收数据储存适当且正确
  • 验收可使用当前备份来恢复
  • 测试故障处理和冗余功能

表示层的测试:

内容测试:包括整体审美、字体、色彩、拼写、内容准确性和默认值

Web站点结构:包括无效的链接或图形

用户环境:包括Web浏览器版本和操作系统配置

业务层的测试:

性能:检查应用系统是否满足书面的性能规格说明(通常定义为响应时间和吞吐率)

数据有效性:发现从客户那里采集到的数据中的错误

事务:发现事务处理过程中的错误。其中可能包括信用卡的处理、电子邮件验证以及计算等

数据层的测试:

响应时间:数据操作语言的完成时间

数据完整性:验证数据储存适当且正确

容错性和可恢复性:最大化MTBF(平均无故障工作时间)和最小化MTTR(平均修复时间)

本文标签: 精读