Skip to content

Latest commit

 

History

History
68 lines (62 loc) · 3.36 KB

那些被遗忘的测试点.md

File metadata and controls

68 lines (62 loc) · 3.36 KB

那些被遗忘的测试点

大多数人对测试的理解仅限于“只要功能实现了,测试就通过了”。然而测试的内涵不仅限于此,前面提到的想法充其量只是功能测试,对于决定软件成败的非功能测试却只字未提。

一个完整的软件测试至少包含下面的内容:

  • 功能测试
  • 性能测试
  • 用户体验
  • 安全测试
  • 兼容性测试
  • Monkey Testing

这里简要列出每部分需要考虑的测试点:

  • 功能测试
    • 功能是否实现?
    • 程序是否能正确处理各种变量的输入组合:正常范围、异常范围、类型的极值、边界值、是否非空?
    • 申请的资源是否释放:正常结束时和异常结束时?
    • 异常发生之后,程序状态是否一致:持久数据(数据库或其他形式保存的)、内部逻辑状态、等等?
    • 异常时,程序考虑是否会丢数据?
    • 从异常恢复之后,之前失败的操作是否能从失败点继续下去?
    • 集群环境下程序是否依旧能正常工作?尤其需要注意:
      • 用户Session
      • 定时器等资源
  • 性能测试
    • 平均处理时间:轻负荷时和重负荷时?
      • 典型类型:页面加载、数据库查询:SQL和NoSQL、网络处理、算法处理
      • 典型负荷:
        • HTTP Request
        • TCP Packet
        • 数据量,不同数据量下对于数据库操作(更新、删除和查询)和算法影响非常大
    • 压力之下,资源使用是否正常?
      • 典型资源:数据库连接、OS句柄、内存
    • 压力之下,是否能水平扩展?同时需要注意新加入机器之后,多长时间内压力得到缓解?因为在集群环境下,会涉及数据的移动,这会抢占处理器资源,对正在进行的处理有影响。典型的数据移动:
      • 集群数据复制到新加入的机器上
      • Shading之后,数据的rebalance
    • 新老程序的压力对比?
  • 用户体验
    • 一致性检查:外观和操作?
    • 文字说明是否清晰明了?
    • 必要的链接是否添加了,如系统中相关的实体?
    • 其余的参照应用的UI规范
  • 安全测试
    • 典型的Web安全测试,参见OWASP TOP 10?
      • XSS
      • SQL注入
      • CSRF
      • ……
    • 用户和权限组检查,列出角色资源权限矩阵?
    • 敏感数据保存方面的考虑?
      • 避免密码明文
      • 不直接保存密码,包括加密后的密码,使用单向加密的方式保存密码的摘要
      • 使用salt
      • 使用“重置密码”替代“找回密码”
    • 网络传输方面的考虑?
      • SSL
      • 密码传输到后台时是否开启了HTTPS
    • 防机器人的策略?
    • 防DDOS的策略?
    • 面对多类型客户端时安全性的考虑?
  • 兼容性测试
    • 平台兼容性,如浏览器、Mobile等等?
    • 版本兼容性,如通信协议、API接口和数据格式等?
  • Monkey Testing
    • 相当于随机性测试的一种,乱序操作、随机输入,在这种情况下程序需依旧能正常处理,而不是异常退出?

此外,还有一点需要重点强调的是:这份检查单并不仅仅是用来“事后检查”的。相反,应该在程序设计之初就需结合考虑,避免后期不得不推到重来。