【转虫师】接口测试需要验证数据库么?

问题:

有的接口会返回很多数据,有的接口可能就返回一个状态码及success之类的消息,这些需要验证数据库么?现在在写一个测试框架,配置接口参数和预期返回值,生成xml文件管理用例,用一个比较方法对预期和返回作比较,不需要根据每个接口写脚本,现在的疑惑只之比较返回值,并不清楚接口是否真的成功了,比如删除之类的接口,返回说成功了,但数据是否真的删除了?如果要验证数据库,感觉得为每个用例写脚本去验证了,这就和初衷不符(只写个比较函数,比较返回的所有值,不需要为每个接口单独验证)

回答:

不少同学在做自动化是都会问要不要验证数据库?我的答案是不要!

根据分层自动化测试的概念。

UI层自动化模拟的是用户操作,假设我是一个普通的用户,在你家的系统上购买了一件商品,我怎么知道有没有购买成功?难道要去查你家系统的“已购买表”?没权限,就算有权限我也不会!那我怎么验证?很简单啊!系统不是有“已购买” 商品列表嘛!点开“已购买”菜单看就可以了!(如果没有这功能,那说明你的系统设计有问题。用户体验不好,差评!!)

接口自动化模拟的是开发的代码操作,A开发写的接口给B开发去调用,A系统的接口给B系统去调用,假设我是一个开发,我调用了微信的接口去做获取用户头像,有个用户获取不到,来!微信团队,你让我查查你们的数据库呗!微信肯定不答应。(数据库不是你想查,想查就给你查!)

那接口返回了“success”,但没有把数据添加/删除成功怎么办?从我两年接口自动化的经验来说,这中情况基本非常少见,因为开发在写代码的时候,返回“success”的前提条件肯定是基于操作成功的。(开发写代码的时候肯定会自已运行一下啊!怎么会运行都不运行,哪儿来的自信!)

你们的开发就是粗心怎么办?我是这么做的,开发提交了新的接口,我会边读接口代码边设计接口用例(如果接口逻辑看不懂接口数据可能就构造不出来,接口用例自然也不会写。),代码有问题就直接告诉开发改了,在这个过程中,我是会查数据库的。一旦接口用例写好之后,后面再回归去跑的时候就不管了,当然,每条接口用例里面肯定不会加查询数据库的动作。

在特殊情况下,我调用了一个删除数据的接口,有没有真的删除一条数据,我可以调用查询数据的接口啊!查不出来刚才删除的数据,不就证明刚才的删除接口操作是ok的了。

大多数测试问这个问题就是把自己当测试了,在做手工测试的时候就是这么查数据库的呀!典型的站在测试的思维上想问题。我做UI自动化的时候,我就是普通的用户;我做接口测试的时候我就是开发。只不过,我会比普通用户和开发更细致更全面的“使用”系统所提供的功能而已。但“使用姿势”和他们是一样的!

—、— 希望能帮到你!

时间: 2024-07-29 23:08:21

【转虫师】接口测试需要验证数据库么?的相关文章

(四)SSO之CAS框架单点登录,修改验证数据库的方式

应需求的变化,在登录cas的时候,默认根据用户名和密码进行验证,如果加上用户名,密码和一个系统标识进行验证呢?该如何做呢? 我们知道cas默认的登录界面中,输入的用户名和密码,再配置一下deployerConfigContext.xml 这个文件中的bean  org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler 的这个标签,写上对应的sql,以及在<bean id="dataSource" class=&q

s验证数据库中字段值是否重复

daoImpl: public String isVipCode(String vipcode) { String sql = "from FfzjUserEntity where vip_code='"+vipcode+"' "; Query queryObject = getSession().createQuery(sql.toString()); List<FfzjUserEntity> list = queryObject.list(); if

Django之form组件提交数据如何验证数据库中是否存在

方式一,直接判断 方式二,从源码入手 如果要验证username是否在数据库中存在,先查看源码,由于数据验证是从  obj.is_valid()方法开始验证,所以进入这个方法 依次查看 回到form类 必须要抛出ValidationError异常,导入这个异常 原文地址:https://www.cnblogs.com/zq8421/p/10439267.html

AJAX验证数据库内容并显示在页面

功能实现: 在jsp页面中填写文本框内容,光标离开文本框,在本页面的相应地方获取数据库中改值所对应的其他数据. servlet: 1 request.setCharacterEncoding("utf-8"); 2 PrintWriter out = response.getWriter(); 3 // 调用servlet层去数据库查找是否有相同用户名 并返回到页面中的其他记录 4 String client_id = request.getParameter("client

JMeter接口测试-Jmeter向数据库批量插入数据(随机变量的使用)

前言 除了编写Python脚本批量向数据库插入数据以外,今天我们来学习一下如何利用JMeter向mysql数据库批量插入数据吧! 一:添加线程组,添加并配置JDBC Connection Configuration 二:导入mysql驱动包,下载好mysql的驱动包(mysql-connector-java-5.1.22-bin.jar),放到jmeter的lib目录下,选中测试计划,添加mysql驱动包 三:我们需要插入的数据量可以在线程组的线程数.循环次数进行配置,如下,这里只插入10条数据

接口测试初探(流程,文档,工具,技术)

什么是接口测试 接口测试是目前测试的主流手段之一,采用接口测试有很多优点: 提高测试效率:可通过自动化手段实现重复验证,也可以在依赖服务没有开发完成时优先测试部分服务 方便定位Bug:通过接口的抓包和分析,可以清楚的知道问题是来源于前端还是后台服务 提高服务端健壮性:通过接口测试可以测出来开发是否在后端做了校验,帮助提高服务的健壮性 对很多新手来说接口测试很高大上,但实际上接口测试很简单,掌握关键技术以后就可以把接口测试应用到日常工作中.开始讲解接口测试之前,先看看当你在浏览器中输入地址,并看到

备份和恢复数据库

查看实例编号,名称和日志模式:SYS AS [email protected]>select dbid,name,log_mode from v$database; DBID NAME      LOG_MODE---------- --------- ------------1391294860 ORCL      ARCHIVELOG 1 row selected. RMAN:    登录:    [[email protected] ~]$ rman    RMAN> CONNECT T

CentOS下MYSQL数据库的安装

关于在Centos系统下安装MYSQL数据库,网络上资料有很多,在此主要感谢该文章的博主:http://www.cnblogs.com/zhoulf/archive/2013/01/25/zhoulf.html,因为相对来说,该篇文章具有很强的操作性.此文将在汇集众多资料的基础上,记录本人安装MYSQL的全过程. 一.配置环境与软件版本: 1.Centos版本:6.3版32位系统: 2.CMake版本:cmake-2.8.4.tar.gz: 3.Mysql版本:mysql-5.5.11.tar.

数据库复习5——安全性

数据库复习 CH7 安全性 7.1 数据库安全性介绍 如果说完整性是针对授权用户的数据库保护措施,那么安全性就是针对非授权用户的数据库保护措施 安全性问题涉及的层面很多,非法用户可以从以下各层面对数据库的窃取或篡改: 层面 窃取或篡改行为 应对措施 数据库系统 获取高级用户数据库权限 身份验证,权限和可获取数据对等 操作系统 获取操作系统root权限想干啥就能干啥,不仅仅限于对数据库的操作了 提升操作系统安全级别 网络 通过网络窃听和身份伪装也能窃取线上机密数据 身份验证和加密传输 物理 物理上