绝大多数的应用都跟数据紧密相关,比如weixin,QQ,都需要存放大量的数据信息:联系人信息、发送的信息、朋友圈信息等等。这些信息绝大多数是存放在关系型数据库中。
因此,软件测试工程师对数据库的了解,是基本的要求。具体说来,测试工程师应该具备哪些知识呢?我们从测试的各个环节来讲吧。
首先,你需要了解软件的需求。软件的需求,涉及到数据的部分,比如字段的定义,类型,长度,特别是一致性(比如,一个用户名,在输入的时候用到,在打印输出的地方也会用到,在其他联系人的联系信息中也会用到)。因此,在了解软件需求的时候,我们需要一个“数据字典”,作为今后测试的基础。
开始设计测试用例了,我们需要知道,如何获得基础的测试环境的预埋数据。比如,你想要测试存款功能,那么怎么获得一个账号呢?——从数据库中查找。你需要了解:1)如何访问数据库,数据库的配置信息;2)数据库访问的客户端;3)sql语句;4)数据库定义(就是你从那张表中查找数据);5)如何把查询出来的数据“取”到本地。对照数据字典,和需求,你还需要知道这些字段有那些限制,比如数据库的限制是否和需求一致;也可以查看是否软件的界面等符合数据字典的要求(一致性)。
此外,在设计检查点的时候——特别是数据库检查点,必须要了解你的检查点数据如何从数据库中查找出来?有时候不是一个table能够包含的,就需要多个表、甚至过滤、处理数据来比对。
然后,测试用例经过了评审,需要执行了。你需要知道如何准备测试环境,最重要的部分是准备测试的基准数据环境。可能用户会给你一个现有的数据库,那么需要你做数据清洗(可能),以保证客户信息不被泄露;现有的数据,可能存在的问题是很多边界条件没有数据,因此还需要“造”很多数据,这就需要你熟练使用create语句来创建数据,包括使用ER图工具来查看数据库结构。创建基础的数据环境完成之后,我们就需要备份这个数据库(打他base),你需要熟悉数据库的备份命令——备份是为了恢复,因为我们往往不会只测试一个轮次,起码需要回归。因此,还需要恢复数据库的命令语句。
假设你要做自动化测试,那你要做的是把手工测试中的准备数据、数据库检查点,编写成sql的语句,俗称embed,潜入到脚本语言中。
从以上来看,我们需要熟练的掌握数据库的知识,包括:数据字典、ER图,查询语句,创建数据的语句,以及如何在脚本中使用这些语句来访问数据库。