第七章软件测试自动化
第七章 软件测试自动化
[本章要点] 1.自动化测试应考虑的各种因素; 2.自动化测试和手工测试中涉及的问题以及二者的 优缺点 3应用自动化测试工具的目的; 4.自动化测试工具的分类和选择方法 5.自动化测试过程实例及自动化测试经验
[本章要点] 1.自动化测试应考虑的各种因素; 2. 自动化测试和手工测试中涉及的问题以及二者的 优缺点; 3.应用自动化测试工具的目的; 4.自动化测试工具的分类和选择方法; 5.自动化测试过程实例及自动化测试经验
[本章目标 1.了解自动化测试应考虑的各种因素以及如何衡量 自动化测试成本。 2掌握自动化测试和手工测试的优缺点,知道如何 正确选择两种软件测试策略。 3.了解测试工具的分类、使用目的及其选择,了解 几种常用的测试工具。 4.了解自动化测试的过程
[本章目标] 1.了解自动化测试应考虑的各种因素以及如何衡量 自动化测试成本。 2.掌握自动化测试和手工测试的优缺点,知道如何 正确选择两种软件测试策略。 3.了解测试工具的分类、使用目的及其选择,了解 几种常用的测试工具。 4.了解自动化测试的过程
7.1进行自动化测试的适当时机 并非一律用自动化测试就好,要考虑经济性、有 效性,适当的进行自动化测试。 7.1.1概述 当对产品的一些特征来设计一系列测试时,对 每一个测试都需要决定是否对其进行自动化测试 如何做出一个合理的决定,假设如下 1.拥有稳定的自动化测试技术支持。 2.两种极端的可能性:种就是无需人工千预的 完全自动化测试,另一种就是只运行一次就废弃 的人工测试。 3.自动化测试和手工测试都可行(但事实并非如 此)
7.1进行自动化测试的适当时机 并非一律用自动化测试就好,要考虑经济性、有 效性,适当的进行自动化测试。 7.1.1概述 当对产品的一些特征来设计一系列测试时,对 每一个测试都需要决定是否对其进行自动化测试。 如何做出一个合理的决定,假设如下: 1.拥有稳定的自动化测试技术支持。 2.两种极端的可能性:一种就是无需人工干预的 完全自动化测试,另一种就是只运行一次就废弃 的人工测试。 3.自动化测试和手工测试都可行(但事实并非如 此)
4.测试是通过外部接口来完成的(黑盒测试)。 5.不要求必须进行自动化测试。 6.测试已经设计好之后,再决定是否进行自动化 测试。 7.有一定的时间用于完成测试,并且在这段时间 里完全有可能把测试做好。 在决定是否要进行自动化测试之前,通常需要考 虑如下几个主要问题 1.同手工测试相比,只运行一次的自动化测试要 多付出多少代价? 2.自动化测试的生命周期是有限的。那么,这类 测试是否迟早要终止?什么事件将会导致测试中 止?
4.测试是通过外部接口来完成的(黑盒测试)。 5.不要求必须进行自动化测试。 6.测试已经设计好之后,再决定是否进行自动化 测试。 7.有一定的时间用于完成测试,并且在这段时间 里完全有可能把测试做好。 在决定是否要进行自动化测试之前,通常需要考 虑如下几个主要问题: 1.同手工测试相比,只运行一次的自动化测试要 多付出多少代价? 2.自动化测试的生命周期是有限的。那么,这类 测试是否迟早要终止?什么事件将会导致测试中 止?
3.在整个生命周期内,这次测试能捕获到新bug的 可能性会有多大?这些难以预计的收益能够使自 动化测试的成本得到补偿吗? 7.1.2自动化测试的成本 创建一次自动化的测试所花费的时间要比一次 手工测试所花费的时间多得多。测试成本因产品 的架构以及自动化测试的方式不同而异。介绍如 下几种(费用由高至低): 通过图形用户界面来测试产品; 2>使用GUI捕捉/回放工具来跟踪测试与产品之 间的交互,同时建立脚本; 测试的是一个编译器;
3.在整个生命周期内,这次测试能捕获到新bug的 可能性会有多大?这些难以预计的收益能够使自 动化测试的成本得到补偿吗? 7.1.2自动化测试的成本 创建一次自动化的测试所花费的时间要比一次 手工测试所花费的时间多得多。测试成本因产品 的架构以及自动化测试的方式不同而异。介绍如 下几种(费用由高至低): 通过图形用户界面来测试产品; 使用GUI捕捉/回放工具来跟踪测试与产品之 间的交互,同时建立脚本; 测试的是一个编译器;
测试成本还要考虑测试时间、Bug的多少等问题 7.1.3自动化测试的生命周期 测试的生命周期如下图7-1所示: 创建 测试 运行 测试 代码 改变 运行 测试 代码 改变 运行 测试 代码 改变 测试运 测试中止
测试成本还要考虑测试时间、Bug的多少等问题。 7.1.3自动化测试的生命周期 测试的生命周期如下图7-1所示: 创建 测试 测试运行 测试中止 运行 测试 代码 改变 运行 测试 代码 改变 运行 测试 代码 改变
在决定是否进行自动化测试之前,必须首先估 计一下,产品的代码变动在什么范围内,测试仍 存活。如果要求代码不能有太多变动,要做的 测试最好是非常善于捕获bug的测试;而且要求 估计生命周期。 介于需要被测试的代码和测试之间的代码称作 中介代码( intervening code)。 中介代码的变动对测试周期的影响 中介代码是使测试中止的一个主要原因。 例如,用户界面以前要求输入电话号码,现在变 为提供一个可视的电话键盘,使用鼠标点击数字 来模拟使用真实的电话。虽然通过两种界面向被 测试的代码传递的都是相同的数据,但是因为没 有了提供输入电话号码的地方,自动化测试可能 就会中止
在决定是否进行自动化测试之前,必须首先估 计一下,产品的代码变动在什么范围内,测试仍 能存活。如果要求代码不能有太多变动,要做的 测试最好是非常善于捕获bug的测试;而且要求 估计生命周期。 介于需要被测试的代码和测试之间的代码称作 中介代码(intervening code)。 一、中介代码的变动对测试周期的影响 中介代码是使测试中止的一个主要原因。 例如,用户界面以前要求输入电话号码,现在变 为提供一个可视的电话键盘,使用鼠标点击数字 来模拟使用真实的电话。虽然通过两种界面向被 测试的代码传递的都是相同的数据,但是因为没 有了提供输入电话号码的地方,自动化测试可能 就会中止
为了使测试免受中介代码变化的影响,应该从 以下几个方面考虑: 1、评估一下中介代码的改变会不会影响测试。如 果绝不会影响到测试,使用自动测试就能节省大 量的时间。 2、如果中介代码的变化会影响到测试,就必须考 虑一下使用测试库函数能够使测试不受影响的可 能性会有多大。 3、假如没有测试函数库—如果是在捕捉/回放 的模式下使用GUI测试自动化工具——不要指望 测试会不受影响。 二、被测试代码的改变对测试周期的影响
为了使测试免受中介代码变化的影响,应该从 以下几个方面考虑: 1、评估一下中介代码的改变会不会影响测试。如 果绝不会影响到测试,使用自动测试就能节省大 量的时间。 2、如果中介代码的变化会影响到测试,就必须考 虑一下使用测试库函数能够使测试不受影响的可 能性会有多大。 3、假如没有测试函数库——如果是在捕捉/回放 的模式下使用GUI测试自动化工具——不要指望 测试会不受影响。 二、被测试代码的改变对测试周期的影响
需要判断一下被测试的代码的稳定性。 首先,需要重点考虑代码的行为 其次,考虑功能的增加会不会影响测试 7.1.4自动化测试的价值 进行自动化测试要解决的问题就是:自动化测试 的价值必须要超过所有因此而放弃的手工测试的 价值。 考虑问题如下 1.测试代码的结构要清晰。 2.测试通常是用来测试功能代码。支撑代码对于测 试者来说通常是不可见的。 3但功能代码的改变通常会改变代码的行为。因此, 极有可能会使测试中止,而不是报告bug
需要判断一下被测试的代码的稳定性。 首先,需要重点考虑代码的行为。 其次,考虑功能的增加会不会影响测试。 7.1.4自动化测试的价值 进行自动化测试要解决的问题就是:自动化测试 的价值必须要超过所有因此而放弃的手工测试的 价值。 考虑问题如下: 1.测试代码的结构要清晰。 2.测试通常是用来测试功能代码。支撑代码对于测 试者来说通常是不可见的。 3.但功能代码的改变通常会改变代码的行为。因此, 极有可能会使测试中止,而不是报告bug