数据测试:要求和级别



我叫Alexey Chumagin,我是Provectus的一名测试人员。 在本文中,我将告诉您如何形成数据质量要求以及可以进行什么级别的数据测试。


更新:
本文基于分析和聚合处理大型(或非如此)数据,这些数据用于构建不同的流程,并推导了模式以用于进一步分析或决策。 可以从头开始为特定项目收集数据,也可以使用较早为其他项目或商业目的收集的数据库。 这些数据的来源是多种多样的,不仅包括操作员的输入,还包括系统地或不系统地存储在数据库中的自动和/或自动测量(在堆中,“然后我们将弄清楚该怎么做”)。

更新结束。


为什么数据测试很重要


数据在日常生活和商业中的决策中起着越来越重要的作用。 现代技术和算法使您能够处理和存储大量数据,并将其转换为有用的信息。

这是什么样的数据? 例如,浏览器的历史记录,地图上的交易,设备的移动点。 它们是非个人的,但此数据仍属于特定设备。 如果收集并处理它们,则可以获得有关此设备所有者的非常有趣的信息。 例如,他喜欢去哪里,性别和年龄是多少。 因此,我们逐渐将设备“人性化”并赋予其某些特性。

然后,该信息可用于定向广告。 如果您是女性,则很有可能会说您对为男性剃须刀做广告不感兴趣。 您需要展示与您的兴趣相关的广告。 由于广告定向的质量是已知的,因此可以提高广告定向的质量。 系统会向您显示您要查看的广告。 因此,您将单击它。 向您展示此广告的人将为此获得收益,而广告客户将从您对该产品的了解中获利。

所有这些都是基于不同公司和人员拥有的数据。 有效使用此数据需要可靠,而且我们知道该交易属于该帐户。

由于存在大量数据,因此存储它们需要大量资源。 数据清理是一项需要解决的单独任务。 我们只想存储我们真正需要的数据。 而且我们不希望将不符合我们标准的重复项或记录存储在我们的数据库中。 例如对于带有空字段的记录。 因此,对数据质量有要求,并且对它们的测试提出了问题。

什么是质量?


我喜欢这个定义:产品质量是衡量用户满意度的标准。 显然,这完全取决于产品的使用环境。 如果您使用任何知名产品,例如Facebook或Skype,则您具有相同的质量要求。 您将忍受一些错误,但仍会继续使用此产品。 并且,如果您是某个程序的客户并为此付费,则质量要求将会更高。 您会发现错误,注意一些小事情。 不同的人对质量有不同的想法,不同的程序也有他们自己的质量要求。

因此,在开发和测试之前,人们通常会确定他们将认为优质产品的东西。 所有这些都可以正式描述。 例如,如果产品质量不包含严重错误,我们将考虑其质量。 或者,如果他工作了两个星期而没有发生故障。

定义这些要求并非易事。 通常,业务需求形成软件需求,如果我们问业务数据应该是什么,我们可以得到答案,数据应该是干净的。 测试人员的任务是找出或弄清它是什么类型的数据,并根据什么标准确定它们的质量和纯度。 这些标准需要形式化和固定化,并且可以测量。

数据质量要求是如何形成的?


测试人员开始发现对他来说难以理解的东西,以及他想知道的关于测试对象的东西。 测试人员会整理问题列表,并开始接受客户的“采访”。 从理论上讲,他应该知道数据应该是什么。 例如,我问:是否允许使用空单元格或重复行。

要求的一个示例是,如果我们有一个人员列表,则可以重复名字,姓氏和中间名。 但是整个行集不能重复。 可以在一个单元格上允许重复,但不允许在整行或几个单元格的集合中重复。 不应完全匹配。

接下来,我们开始询问特定单元格中的数据格式。 例如,电话号码应为12位数字,银行卡号应为16位。我们可能有一个标准,即并非这些字符的每个序列都是银行卡号。 或者我们知道,姓氏中只能包含字母。 我们可能对数据格式有很多疑问。 因此,我们找到了我们需要了解的有关测试主题的所有信息。

什么是质量数据?


定性数据应具有几个特征。

  • 完整性-记录中没有空白,必须填写所有单元格。 数据应携带尽可能多的信息。
  • 唯一性-数据之间不应有相同的记录。
  • 可靠性-为此,一切都被构思了。 没有人愿意使用无法信任的数据。 具有高质量数据的表的单元格包含它们应包含的内容:IP地址,电话号码等。
  • 准确性。 如果我们谈论数字数据,那么必须有准确的字符数。 例如,小数点后12位。 数据应接近某个平均值。
  • 一致性-数据必须保留值,无论如何测量。
  • 及时性-数据应该是相关的,特别是如果它定期更新。 例如,每个月的数据量应该增加。 数据不应过时。 如果我们在谈论银行交易,那么例如在过去六个月中,我们有兴趣进行交易。

数据测试水平


我们可以按所谓的层对数据进行分组-与这里的测试金字塔非常相似。 这是应用程序不同级别的测试数量的分布。

  • 单元层是测试一个程序模块时,最常见的是一种功能或方法。 这样的测试应该是最多的。 数据的单元测试是我们定义每个单元的要求时。 如果在单元级别有错误,则进一步测试是没有意义的。 例如,如果姓氏包含数字,那么进一步检查内容有什么意义? 也许应该有类似于这些数字的字母。 然后,我们需要更正所有内容并检查下一个级别,以使我们将所有内容都保留为单数形式,并且在要求中没有重复的内容。
  • 集成层是将几个程序一起测试的时候。 数据API层是我们讨论整个表的时候。 假设我们可以有重复项,但不超过一百个。 如果我们有一个超过一百万的城市,那么一百万人将无法生活在一条街道上。 因此,如果我们沿着街道进行选择,则地址数应为一万或一千-必须确定。 如果我们有一百万,那么数据就出问题了。
  • 系统层是整个程序经过全面测试的时间。 对于数据,该层意味着整个系统都在测试中。 这包括统计数据。 例如,我们说在1985年以后出生的男性人数不能超过30%。 或者我们说80%的数据必须是同一类型。

最后,我将说数据测试是一个为创造力和发展提供许多机会的领域。 这里没有灵丹妙药:可以使用不同的方法来测试数据。 一如既往,真相介于两者之间。

Source: https://habr.com/ru/post/zh-CN416183/


All Articles