Date | Log |
---|---|
05/04/2017 | 初始版本,增加测试基础知识。 |
本文汇总了在学习视频课程<系统测试>过程中所做的总结,记录。
基础知识
基本概念
- 测试的概念:整个研发过程中对文档、流程、产品等进行确认和验证的一系列活动。
- 证明软件不能工作。
- 破坏性的工作。
- 目标:发现缺陷,度量质量,预防问题。
- 技术能力:测试、编程、网络、数据库。
- 业务知识:行业标准、规范。
- 沟通能力:开发、产品、客户。
软件研发模型
- 软件生命周期:从软件构思到发行或丢弃的过程。
- 大爆炸模型:没有组织、没有流程、没有文档,现已少用。
- 瀑布模型:每个过程顺序衔接,一次性通过,有严格的进入和退出条件,有大量的文档,不能后退,开发周期较长,适用于需求明确且很少变更的项目。
- 增量模型:采用随时间进展而交错的线性序列,每个序列产生一个可发布的增量、每个增量产生一个可操作的产品、第一个增量是核心产品;开始时不用投入大量资源,但需要开放式的开发体系架构,管控风险较大;适用于需求经常变更的场景。
- 螺旋模型:每一圈都经过计划、风险分析、实施、评估过程;由文档和风险驱动,有利于提高大型项目开发的质量和效率;建设周期长、风险大;适用于需求经常变化的大型复杂系统。
- 快速原型模型:快速构建原型,便于与用户沟通进一步细化需求,在新获取需求基础上进行系统开发;可避免需求模糊带来的风险;快速开发以及频繁修改可能造成开发质量降低;适用于用户需求不明的场景。
- 双 V 模型:开发与测试同步进行,开发保证设计被实现,测试验证是否正确;测试接入早,有利于保证产品质量;对于测试开发技术要求比较高;适用于需求明确的场景。
- 敏捷模型:将大的项目分为多个相互联系,但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可用状态;最重要的是尽早并持续交付可用的产品;对于工程人员个人业务素质要求较高;轻量、高效、低风险,适用于中小型开发团队;变化的模型,按需和其它模型结合。
软件缺陷
- 概念:破坏软件正常运行的问题。
- 术语:故障-fault;缺点-defect;失败-failure;事件-incident;偏差-variance;改进-improvement;缺陷-bug…
- 缺陷修复成本随开发阶段推进呈数量级增长。
- 引入原因:软件的复杂性、沟通缺失、设计与开发与测试理解偏差、程序设计错误、项目进度压力、需求变化、文档贫乏…
测试分类
- 测试类型:功能-用的对、性能-用的快、安全-用的放心、可靠-随便怎么用、可用-用的爽、兼容-到处可用…
- 测试阶段:单元测试-对代码函数的测试,一般由开发人员完成;集成测试-接口或模块或子系统之间的对接;系统测试-产品完成可能包括软硬件;验收测试-内测(α 测试),公测(β 测试),生产环境测试,可能是在开发方(模拟用户)测试,也可能在客户方测试。
- 测试过程:分析-依据需求分析;设计-测试方案、用例;实现-用例的开发;执行。
- 测试技术:自动化;手工。
- 测试手段:静态-不执行程序,审查代码,文档;动态-执行程序。
- 测试方法:黑盒-系统测试大量采用;灰盒-集成测试采用,有时偏白,有时偏黑;白盒-单元测试采用。
测试的实施
测试十大原则
- 测试是一个持续进行的过程,而不是一个阶段
- 测试必须被计划、控制,并且被提供时间和资源
- 测试应当有重点
- 测试不是为了证程序的正确性,而是为了证明程序不能工作
- 测试是不可能穷尽的,当测试出口条件满足时就可以停止测试
- 测试是开发的朋友,不是开发的敌人
- 测试人员应当站在公正的立场上进行测试,如实的记录和报告缺陷
- 测试自动化能解决一部分问题,但不是全部
- 测试不能仅仅包括功能性的验证,还应当包含性能、可靠性、可维护性、安全性等方面的验证
- 并非所有的软件缺陷都需要修复(时间、修复之后引入更多问题)
测试十大误区
- 调试(开发人员排故)和测试(测试人员发现错误)是一样的
- 测试组应当为保证质量负责
- 过分依赖 Beta 测试
- 把测试作为新员工的一个过渡工作
- 把不合格的开发人员安排做测试
- 关注于测试的执行而忽略测试的设计:分析和设计是很难的,是重点
- 测试自动化是万能的
- 测试是可以穷尽的
- 测试是为了证明软件的正确性
- 测试是鼓噪乏味,缺乏创造力的工作
测试十大最佳实践
- 尽早频繁地进行测试是降低项目成本,提高质量的一个好的实践
- 尽早的产生一个综合的主测试计划
- 对质量要求较高的产品或大型复杂的产品成立独立的测试组
- 在每个开发阶段,使用测试和评价的结果作为是否可以通过的标准
- 开发和维护一个测试需求和目标的风险优先级列表
- 把测试产出物作为产品的一部分等同管理起来,使用相同的评价标准和过程
- 提供集成化的测试工具和测试基础支持
- 加强测试度量工作和缺陷分析工作,不断的改进测试
- 加强测试的培训并且为测试人员提供技能发展的通道
- 加强沟通,让项目组内所有的人员都了解测试的重要性和测试工作
参考资料: 系统测试-测试基础,类型,用例设计方法