在很多我之前写的文章中我提到过适合的测试数据的重要性。测试人员应该在执行任何测试用例前检查和更新测试数据。在这篇文章里,我将要提出一些关于怎样准备测试环境的建议,这样任何重要的测试用例将不会因为不重要的测试数据和搭建不完整的测试环境而错过。
  我说的测试数据是什么?
  如果你正在写测试用例,那么你需要将数据放到任何类型的测试上。测试人员或许要在执行测试用例或启动应用时提供这些测试数据,或许会从预定义数据的位置获取需要输入的数据。好的数据是任何类型的输入到应用的数据,各种被应用加载的文件或者从数据库表里读出的各种实体。这些测试数据可能是不同的格式,比如xml测试数据、系统测试数据、SQL测试数据,或者压力测试数据。
  准备合适的测试数据是建立起测试的一部分。大体上测试人员称之为测试床准备。在测试床上所有软件和硬件的环境都通过预定义数据值来设置。
  在编写和执行测试用例时如果你没有系统性的创建测试数据的方法,你很有可能漏掉了一些重要的测试用例。测试人员不能因为测试数据不可用或者不完整判断程序有缺陷。根据测试需求去做属于他的/她的测试数据是每个测试人员的责任。不要只依赖于其他测试人员创建的测试数据,或者是可能已经多个月没有更新的标准的生产测试数据!要总是根据你的测试需求创建你自己的崭新的测试数据集。
  有时不可能为所有的测试创建完整的新测试数据集。这样的情况下你可以用标准的生产数据。但是要记得增加/插入你自己的数据集到这个可访问的数据库。一个设计测试数据好的方法是用现成的测试数据样本或者测试床,以及在你每次给相同的模块做测试时添加你的新测试用例数据。这样你可以建立有保证的数据集。
  怎么让你的数据在任何测试环境保持完整?
  经常会有超过一个测试人员对若干测试任务负责任。这种情况下超过一个测试人员将会接触到普通的测试数据,每个测试人员将会根据他的/她的需要去尝试操作那些常用的数据。好的方法去保持你的有价值的输入数据集完整是对那些一样的数据保存个人的备份。测试数据可能是任何一种格式,例如为程序提供的输入,输入好像word文件、Excel文件或者其他照片文件。
  检查你的数据是否没有被破坏:
  提交一个bug没有适当排除故障是糟糕的做法。在用现有的数据执行任何测试用例之前保证数据没有被破坏以及程序可以读取那些数据源。
  考虑到执行测试用例要怎样准备数据?
  进行测试要用到很大的数据集。特别是如果应用从数据库表格获取或更新数据,那么很大的数据量在测试这样的应用时会扮演重要角色。有时手工创建数据会检测不到一些明显的缺陷,这些缺陷可能只会被测试的应用程序下创建的数据捕捉到。如果你想要不可能手工创建的实时数据,那么叫你的经理从真实环境获得这些数据。
  ------------
  我通常都会请求我的经理如果他可以从真实环境获得数据用于测试。这些数据对于保证应用程序的所有有效输入的正常运作将会很有帮助。
  拿我的搜索引擎项目“statistics testing”作为例子。去检查用户在广告活动的搜索和点击历史,大量的数据已经积累了好多年,几乎不可能对跨越多年的多个日期周期的数据手工操作完成。因此除了用备份起来的实时服务器数据来测试没有其他选择。(但是前提是确定你的客户允许你用这些数据)
  什么是理想的测试数据?
  如果用小的数据集可以将应用程序所有的错误都确定下来,这样的测试数据可以说是理想的。尝试准备可以将应用程序所有功能都归纳起来的测试数据,但是准备测试数据和跑测试用例不要超出成本和时间限制。
  怎么准备测试数据才能保证完整的测试覆盖范围?
  根据以下分类来设计你的测试数据:
  测试数据集例子:
  1) 没有数据:用空白的和默认的数据来执行你的测试用例,看看是否有适当的报错信息产生。
  2) 有效的数据集:创建这些数据检查应用程序是否按照所有要求正常运行,有效输入的数据是否已经被正确保存到数据库或文件。
  3) 无效的数据集:准备无效的数据集来检查应用程序的负值、字母数字字符串输入。
  4) 不合法的数据格式:创建一个不合法数据格式的数据集。系统应该不接受无效的或不合法的数据。也要检查是否有恰当的报错信息产生。
  5) 边界条件数据集:包含超出数值范围的数据集。确定应用程序的边界值情况,准备可以覆盖小于和大于边界条件的数据集。
  6) 性能、负载和压力测试的数据集:这样的数据集应该要很大的数据量。
  这样为每个测试情景创造独立的数据集将可以保证完整的测试覆盖范围。
  总结:
  准备适合的测试数据是“建立项目测试环境”一个核心部分。测试人员不能声称没有完整的数据用来测试逃避缺陷的责任。除了现有的标准的生产数据以外测试人员还应该创建他的/她的自己的测试数据。你的测试数据集应该在成本和时间方面都是理想的。用本文里提到的建议去分类测试数据,保证完全的测试用例覆盖率。
  要表现得有创意,在测试时要用你自己的技巧和判断力去创建不同的数据集而不是依赖于标准的生产数据。
  你的经验是什么?
  你曾经面对过不完整的测试数据的问题吗?那么你是怎么去创建你自己的数据呢?来分享你创建和使用测试数据的简单建议和技巧。