热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

从功能测试角度谈大数据测试

大数据,已经成为了一个时代的代名词,当今的互联网属于大数据时代,大数据时代的到来,颠覆了以往对数据的惯性思考方式,要保证数据执行,软件质量,测试质量,数据使用场景等,都需要重新变换



大数据,已经成为了一个时代的代名词,当今的互联网属于大数据时代,大数据时代的到来,颠覆了以往对数据的惯性思考方式,要保证数据执行,软件质量,测试质量,数据使用场景等,都需要重新变换一个新的角度,对软件进行更全方面的思考。

之前大数据很少有测试,开发会觉得:测试环境又没有那么多数据,你怎么测?抛开大数据的数据量大的特点,究其根本,他也是为业务服务的,有一句话我非常赞同: 一切技术都是为业务服务,脱离业务的技术一文不值,这句话在大数据时代的今天,依然适用,并且会一直适用下去。测试的工作就是要保证数据的正确性,业务逻辑正确。大数据脚本也有输入、输出,这有点类似与功能测试中的后台逻辑测试,没有界面,一切都是后台服务器处理的,测试人员必须要清楚整个处理流程,每个数据的流转,每个步骤的输入和输出,才能判断最后的输出结果是否正确,对于大数据测试也是一样,我们要清楚每个脚本的功能,每个脚本的输入和输出,整体数据流转过程,来判断大数据实现的功能是否正确。

一个数据脚本或者一段数据计算逻辑,在大数据下运行正确的前提,必须是其功能是正确的,这也是我们测试人员首先要保证的,今天我想从功能测试的角度,讨论大数据的功能测试要怎么做,用例怎么设计,才能覆盖面更广,更好的保证其正确性。

1、编写测试用例

功能测试编写测试用例的常用方法:等价类、边界值(这两个方法估计做测试的都知道),同样适用于大数据测试编写用例,与通常意义上的功能测试不同的是,他的输入不再是一个输入框,而是一个数据库字段或者一个有特殊意义的数据集(包含多个数据)。

我们先回顾一下等价类和边界值两种常用的功能测试设计用例的方法。首先划分等价类:是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.边界值是对等价类的补充,其测试用例来自于每个等价类用例的边界。

那么这两种方法如何用在大数据测试用例的编写上呢?

拿我们之前测试的一个大数据脚本举例,脚本的主要功能是统计某家店铺某一天的订单量,根据设置的每个商品不同的返利规则,计算店铺每天的利润。

首先输入分析条件:

1、指定店铺

2、指定某一天

3、不同时间,不同的商品,不同的返点

商品1:2016.12.6 13:00:00------2016.12.6 15:00:00 返利为5%

商品2:2016.12.7 00:00:00------2016.12.7 23:59:59 返利为15%

所有商品,除指定时间外, 返利均为1%

他的等价类不再是一个输入,而是一个条件,满足这个条件的我们划到有效等价类上,不满足这个条件的,我们划分到无效等价类上,而在条件边界上的数据则是我们的边界值。

用例划分结果:

QQ截图20171213120901.png

其他编写功能测试用例的方法,如场景分析法、分支覆盖法,也同样可以用在编写大数据测试用例中,任何测试都不能脱离实际业务,单纯的测试数据,或者单纯的测试输入,没什么意义,我们必须结合不同的场景,设计更全面、更有效率的测试用例。

2、准备测试数据

根据编写的测试用例,准备不同类型的测试数据,这个也与功能测试一样,测试数据不在数量的多少,而在于覆盖的全面性,如果你准备了几千条数据,但是数据类型都一样,覆盖的代码分支也都是一条,那这些数据只有一条能称之为有效测试数据,其他的全部是无效测试数据。

其中准备测试数据,可以有几种方法:

1)自己写sql单条插入

2)使用存储过程

3)从线上导导出数据,直接导入到测试环境。

同时要注意,准备测试数据时,尽量和实际数据保持一致,如时间的值,精确到时分秒还是只到年月日,还有金额保留几位小数等。

3、执行测试脚本,检查测试结果

准备好测试数据后,就可以执行测试脚本,脚本可能是在hadoop平台上,也可能是在其他平台上,但这些都只是一个操作,类似我们学习一个工具怎么使用,知道怎么运行脚本后,接下来的工作就又回归到测试上来,这时候测试人员要做的事情就是利用准备好的数据,执行脚本,检查预期结果和实际结果是否一致,判断脚本逻辑是否正确,这完全是我们功能测试的工作一模一样。

所以,不管什么类型的测试,其测试过程都是通用的,测试方法都是可借鉴的,我们储备了足够多的测试基础和测试方法,就可以轻松应对各种不同的测试。



推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • MongoDB集群配置:副本集与分片详解
    本文详细介绍了如何在MongoDB中配置副本集(Replica Sets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 如何在PostgreSQL中查看数据表
    本文将指导您使用pgAdmin工具连接到PostgreSQL数据库,并展示如何浏览和查找其中的数据表。通过简单的步骤,您可以轻松访问所需的表结构和数据。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
李金铃519
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有