一、测试的本质
1、测试其实是发现并解决问题的过程,而其 目标则是让软件产品以尽可能高的质量交付给客户,使软件产品中存在的问题尽可能少、运用风险分析和不同系统功能的测试优先级,来确定测试的关注点,从而替代穷尽 测试。
2、软件开发本身是追求产出和投入比的工程性过程。因此,考虑测试的内容和方式时, 都应当以高产出投入比为最终目标
二、测试的抽样特性
除了小型项目,进行完全(各种输入和前提条件的组合)的测试是不可行的三、测试类型的多样性
1、单元测试:和开发最接近的一种测试。开发人员编写单元测试用例并执行,验证单元 模块是否得出预期的结果。
在敏捷开发模式中,有一种流行的开发模式叫做测试驱动开发。测试驱动开发的核心就是把单元测试用例先做好,功 能开发以通过相应的单元测试用例为目标。
敏捷开发从根本上避免了瀑布模型的弱点,它有两个核心点——迭代开发和增量开发
3、性能测试:重点验证软件的非功能性需求 的测试。通过自动化的方 法模拟真实用户并发访问的场景,以验证系统的性能指标(吞吐率、稳定性、可靠性)或发现其性能瓶颈
4、兼容性:版本、浏览器等等兼容检查
5、探索性测试:“无目的” + 站在用户角度“随机”使用系统
四、测试的目标
软件潜在问题尽可能的减少软件测试结果对软件的拥有者/用户负责
五、开发团队做的远不仅是开发
1、开发人员的开发技能与 软件是 否以高质量完成有重要的关系2、软件提测质量直接关系到测试人员的工作量,甚至产品上线质量
3、不规范的开发过程给测试、上线、乃至风险控制带来巨大困难
PS:开发人员要做的,远不仅限于开发;而测试专家要做的,也远不仅限于测试 。
六、测试架构师
1、职责。测试架构师的职责是定义测试策略,从宏观上定义测试的方向和方法。测试架构师对测试目标的技术特性和业务需求有准确的把握,能为测试团队提供方法论方面的全面建议。
2、要求。作为测试团队的“智囊”,测试架构师应该具有较高的技能水平,包括深入和全面的测试经验,对软件开发和测试的模型有全面的认识,对商业模式及 客户的业务需求也有比较深刻的理解。
ps: 目前说起架构师往往只考虑到了开发技术方面的牛人,往往有些忽略业务方向等方面的要求。个人认为,一名好的架构师必然不应该脱离业务来空谈测试的架构,架构师应该具备的能力:
- 对开发技术具有很深的理解,能从技术设计阶段给出专业建议
- 对业界测试方法具有前瞻性和经验,能针对不同技术架构设计相对应的测试策略(测试的广度和深度)
- 对业务方向具有前瞻性和经验,能从业务需求角度设计相对应的测试方案
3、与测试工程师的区别。
测试架构师 :宏观视角制定/指导团队的测试策略
测试工程师:具体测试的执行
七、测试度量
- 功能性质量 软件是否按照设计实现并满足相应功能性需求
- 结构性质量 软件是否满足相关的非功能性 需求
- 迭代过程度量
- 效率提升度量。
从项目整体的角度而言,“尽可能早地发现问题”才能降低风险,而问题越迟发现,项目的风险越高,对整体进度的影响越大 。
- 质量运营度量
八、尽可能早地发现问题
“尽可能早地发现问题”才能降低风险,而问题越 迟发现,项目的风险越高,对整体进度的影响越大。
2、作为测试专家,应该考虑的问题是如何更早地发现缺陷,以及有效地解决缺陷
- 如何更早地、有效地发现问题?
- 发现问题后的问题分析?
3、发现问题的可行方法有两类,分别是分析方法和测试方法
- 分析方法。非测试手段来发现问题
- 测试方法。各种测试手段发现问题
效率的提高有两种外在的表现:
第一种方式是使用相同时间完成更多的测试用例执行;
第二种方式是对于同一个或同一组测试用例,耗费的时间减少了
ps: 自动化设计过程中需要避免“过度自动化”