MySQL自动测试框架介绍

本文介绍了MySQL自动测试框架的用途和工作原理,通过创建和执行测试案例展示其操作流程。测试框架通过对比case的输出结果与标准结果进行验证,确保MySQL服务的正确性。当测试结果与预期不符时,提供了冲突处理和批量执行命令。
摘要由CSDN通过智能技术生成

摘要: 1、概述 在我们給MySQL打了patch后,不仅需要测试新增的功能,同时更重要的问题是,需要对原有的功能作回归――若新增的patch导致原有其他功能产生bug,就得不偿失。 MySQL自动测试框架是一个以MySQL框架和内部引擎为测试对象的工具。主要执行脚本在发布路径的mysql-test目录下...

1、概述

在我们給MySQL打了patch后,不仅需要测试新增的功能,同时更重要的问题是,需要对原有的功能作回归――若新增的patch导致原有其他功能产生bug,就得不偿失。

MySQL自动测试框架是一个以MySQL框架和内部引擎为测试对象的工具。主要执行脚本在发布路径的mysql-test目录下。自动测试框架的主要测试步骤,是通过执行一个case,将该case的输出结果,与标准的输出结果作diff。这里的“标准输出结果”指代在可信任的MySQL版本上的执行结果。

如果某个case的执行结果与标准输出结果不同,则说明正在执行的这个MySQL服务有问题,或许是框架,或许是引擎。 当然若干case执行正确并不能确保被测试的框架和引擎是没有问题的,除非能够证明执行的case已经覆盖了所有的分支(这太难了)。

这里说到的case,是指一系列的语句,包括SQL语句和一些必要的shell语句。在mysql-test/t/目录下,可以找到很多这样的case,他们的文件名以.test为后缀。接下来我们用一个简单的例子来说明用法。

 

2、初体验

       再简单的例子也不如自己写的简单。因此我们通过自己作一个case,来体验一下这个框架的便捷。

a)          在mysql-test/t/目录下创建文件 mytest.test, 内容为

  1 — source include/have_innodb.inc

 

  2 use test;

  3 create table t(c int) engine=InnoDB ;

  4 insert into t values(1);

  5 select c from t;

  6 drop table t;

       从第二行开始是我们熟悉的SQL语句,创建一个InnoDB表,插入一行,执行一个查询,删除这个表。输出也是显而易见的。

b)      在mysql-test/r/目录下创建文件 mytest.result, 内容为

  1 use test;

 

  2 create table t(c int) engine=InnoDB ;

  3 insert into t values(1);

  4 select c from t;

  5 c

  6 1

  7 drop table t;

 

c)      在mysql-test/ 目录下执行 ./mtr mytest

 

 

===================================================================

TEST                                      RESULT   TIME (ms)

————————————————————

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值