需求阶段
1. 测试人员及早介入,需要彻底了解产品,设计测试过程
* 及早介入,可以了解在开发的过程中需要使用哪些新技术,新的平台, 测试组是否方便进行测试,是否方便进行自动化测试,早期开发和测试应该对这个进行评估
2. 验证需求,将功能性文档化,使以后测试更加全面,对测试内容进行分级,除了考虑需求,还需要考虑性能和安全,对测试过程进行区分优先级
3. 需求就绪后立即设计测试过程 不要推迟到软件版本交付后才给测试组 开发人员需要拽写设计文档,测试人员也需要提前撰写测试文档,同时这些文档是会变化的
4. 确保需求变化的传达 可以通过变更请求表传达给测试组
5. 注意在现存系统上进行开发和测试
编制测试计划
6. 了解手头的任务和相关的测试目标
7. 考虑风险 比如新的设计过程 新的技术
8. 根据功能优先级安排测试 测试的需求可以根据合同上的需求来设计,并且合同上的需求优先级安排高一点,尽量保证合同上的需求可以进行自动化测试,发布版本前都把这些自动化测试跑一遍,优先级的划分优点在于:在时间紧迫的时候可以更快地完成优先级最高的,也可以在人手不足的时候优先完成优先级较高的功能
9. 牢记软件方面的问题 制定测试计划的时候,测试组应该了解项目开发和交付的一些软件问题
10. 获得有效地测试数据 测试组和开发人员必须进行协调,收集测试数据,收集测试数据也是为了后续的自动化测试做准备,当需要测试数据的时候,最好在测试文档上进行标注
11. 规划测试环境 单元测试和集成测试通常由开发人员在开发环境里面完成,但是系统测试和用户验收测试最好在独立的测试实验室完成,测试实验室的设置应该和生产环境相同,能够发现所有影响应用程序的,比如配置,比如防火墙,网络波动等等
12. 估计测试准备和执行所需的时间
测试组
13. 定义测试组的角色和职责,比如GUI测试,性能测试, 开发测试
14. 测试技巧,行业知识和经验三者缺一不可 测试不是单纯地模拟用户,必须对于了解各方面才能进行边界测试等
15. 评估测试人员的有效性
* 要保持有效性,需要对测试工作的各个元素(测试策略, 测试环境和测试组的组成)不断地进行评估, 并且根据实际需求不断地改进这些元素
* 测试经理需要熟悉各个测试人员的背景,才能根据经验,专业知识进行分配任务和评估任务
系统架构
16. 了解系统的架构和组件,如果测试人员对这些熟悉,这些知识对于查明特定测试结果的应用程序的各个部分
17. 确认系统的可测试性
18. 使用日志增加系统的可测试性
19. 验证系统支持调试和发型两种执行模式
测试设计和测试文档
20. 有效地分解测试任务
21. 使用测试过程模板和其他测试设计标准
22. 根据需求得到有效的测试用例
23. 把测试过程当做"动态"的文档
* 开发会随时变化,测试要跟随者开发进行变化
24. 利用系统设计和系统原型
让用户预先看到某个功能的实现结果,让用户对应用程序有所体验
25. 设计测试用例场景时才用经过检验的测试技术
26. 在测试的过程中避免包含显示和详细的数据元素
27. 运用探索性测试
单元测试
28. 用结构化的开发方法来支持有效地单元测试
29. 在实现之前或者实现同时开发单元测试,为了简化单元测试的开发工作,开发人员必须重视基于接口的方法来实现组件,优秀的软件工程做法是围绕接口,而不是围绕组件内部的机理来设计软件
30. 使单元测试的执行成为生成过程的一部分
自动测试工具
31. 了解各类测试支持工具
32. 自主生成一个工具
33. 了解自动测试工具对测试工作的影响
34. 关注组织的需要
35. 在应用程序的原型上对工具进行测试
自动测试
36. 不要过分依赖记录/回放工具
37. 必要时自制开发一个测试工具
38. 使用经过考验的测试脚本开发技术
39. 尽量使回归测试自动化
40. 实现自动生成和烟雾测试
* 自动生成,通常每天执行一次自动生成
* 烟雾测试,回归测试的精简版本,主要对应用程序关键的高层功能(也就是主要功能)进行自动测试。
非功能性测试
41. 不要事后才考虑到非功能性测试
42. 用产品级数据库进行性能测试
43. 为预期受众定制可使用性测试
44. 特定需求和整个系统都需要考虑安全性
45. 研究系统对并发性测试计划的实现
46. 为兼容性测试建立搞笑的环境
管理测试的执行
47. 明确定义测试执行周期的开始和结束
48. 隔离测试环境和开发唤醒
49. 实现缺陷追踪生命周期
50. 追踪测试工作的执行