精华内容
下载资源
问答
  • 异常测试是有别于功能测试和性能测试的又一种测试类型,通过异常测试,可以发现由于系统异常、依赖服务异常、应用本身异常等原因引起的系统问题,可以帮助我们改善以后的设计方案,提高系统的稳定性。为什么要做异常...

    作者|洪渺

    什么是异常测试?

    异常测试是有别于功能测试和性能测试的又一种测试类型,通过异常测试,可以发现由于系统异常、依赖服务异常、应用本身异常等原因引起的系统问题,可以帮助我们改善以后的设计方案,提高系统的稳定性。

    为什么要做异常测试?

    常规的功能测试过程中,主要关注的是业务的正常逻辑是否能够走通,以及在正常逻辑多并发运行过程中是否有潜在的性能问题,往往忽视了各种异常情况对服务造成的影响。随着产品规模的扩大以及业务的不断迭代,我们无法预料每个应用可能出现的异常情况。所以在测试过程中不但要关注正向测试也需要关注异常场景测试。

    如何展开异常测试?

    从异常测试的定义来看,想要开展异常测试,首先需要知道怎么去设计异常用例,应该使用哪些测试方法来模拟异常场景?接下来我将以保卖业务为例从接口异常和业务操作异常两个维度进行具体的介绍。

    一、接口异常测试

    接口异常测试可能会与业务操作异常有部分重叠,但个人觉得接口异常测试放在接口测试阶段比较合适,并且接口异常测试可以为后续业务操作异常测试做铺垫。

    • 整体流程:了解产品需求,分析需求特点-》了解接口实现逻辑-》设计接口用例-》确定测试方法

    • 关注重点:依赖服务调用异常和输入异常时,业务代码能否容错及容错逻辑是否合理。

    • 测试内容:主要包括输入异常、操作异常、服务异常等。

    • 接口类型:http接口、scf接口

    1、http接口测试

    保卖回收估价平台为后台系统,存在很多新增、删除、修改模板等操作,业务逻辑会要求在新增修改等操作时不允许为空或重复等校验,一般像这类操作前端和后端都会做校验,单纯从页面只能测试前端校验逻辑是否正确,无法测试后端校验是否正确,通过http接口测试就可以覆盖到后端的校验逻辑。所以基于业务逻辑在进行接口测试时会重点关注以下异常情况,其中主要包括:

    • 重复和非空校验:名称重复、必填项字段为空等

    • 异常参数:参数不完整、参数重复等

    • 异常查询:缺少分页信息、缺少品类id\型号id等

    • 数值校验:设置参数为非数值类型、包含特殊字符等

    测试工具主要使用Yapi平台:在设计接口case时通过异常参数的传参,可以清楚的验证异常场景下接口的返回值。

    eef47a0e929a64a0489e00e83fe2de91.png

    2、scf接口测试

    在测试保卖订单流程时,会重点关注订单状态的流转。以参拍接口为例,为避免出现超卖,会针对接口进行并发测试,来校验后端在参拍时是否对回收单状态进行了校验。

    测试方式:使用注解的方式对TestNg线程池和执行次数进行配置

    invocationCount:表示执行的次数

    threadPoolSize:表示线程池内线程的个数

    0a6b812287bd9ee5c86f569fa9714b18.png

    二、业务操作异常测试

    业务操作异常测试一般是放在功能测试的后期,因为业务异常用例的设计需要对项目有一定的理解,是业务强相关的。整体流程主要分为以下四步:

    结合业务需求,确定业务重点-》了解开发实现逻辑-》设计异常场景用例-》确定测试方法

    1、基于业务的异常场景测试

    以保卖估价器业务为例,估计器系统为后台操作系统,每个模块都存在新增、编辑、删除等功能,映射逻辑的上传都是通过导入excel的方式。所以在测试期间会重点关注页面异常操作和excel上传异常。

    (1)页面异常操作

    • 思路:由于在接口测试阶段已经将对应模块的接口异常case覆盖到,所以在功能测试阶段只需要重点关注页面层面的异常操作。

    • 异常测试点:提交时快速多次点击、频繁添加/删除

    • 测试方法:主要通过页面频繁操作对系统并发情况进行验证

    (2)excel上传

    • 思路:了解对应上传功能校验逻辑,针对校验逻辑设计异常case

    • 异常测试点:上传内容包含特殊字符、文件格式不正确、非空校验、最大条数限制、表头顺序是否一致、业务内部逻辑

    • 测试方法:主要通过修改上传的excel文件中的内容,来模拟异常数据的上传

    2、通用性异常场景测试

    (1)幂等校验

    • 消息重发:目前很多提交都是异步提交,如短信发送,一般点击发送就会提示发送成功。但实际是否发送成功,后续会有系列处理机制,根据消息的一些本身机制,后续处理过程中会进行重发机制。

      测试方法:可在终端最后一步,或中间环节人为触发多次发送。如:在消息队列中重发,多次补收同一内容的报文等。

    • 业务间的重试:有些业务特意设置在连接超时或者失败时需重试,这时候就需要验证幂等性处理。

       测试方法:可以通过模拟网络连接超时或服务超时等触发重发机制。

    (2)缓存测试

    为提升效率,很多系统应用了缓存机制,那么对于缓存测试以下三点在测试过程中需重点关注。

    • DB同步性: 如对商品重要属性进行了新增、编辑(价格、库存等重要信息)、删除时,如果应用了缓存机制,那测试过程中就需要关注DB的修改是否同步到缓存中、数据库的字段进行更新缓存中的存储结构是否进行更新等。

      测试方法:

      了解缓存内容,对数据进行操作,操作后缓存相应展示页面查看

      ②如数据库结构发生变化,需测试缓存中数据的存储

    • 缓存失效性:有些关键数据放缓存中是有失效性的,需根据具体业务去了解相关失效性,还是永远存储。

      测试方法:根据业务关键性数据的缓存设置时间来测试业务的失效性。

    • 缓存异常时系统处理:缓存溢出或丢失时,系统的业务是否能正常处理。一般的处理逻辑:重试机制、数据获取切换到DB。总之,不能因缓存异常,影响业务。

      测试方法:模拟缓存溢出

    3、与第三方交互

    与第三方的交互一般都是mq交互或服务调用,所以在测试过程中会重点关注幂等校验以及服务调用超时的情况。

    测试方法:

    • 重复发送mq

    • 使用Yapi平台对接口进行mock 、修改服务超时响应时间、模拟第三方服务返回异常

    总结与展望

    整体来说前期的接口测试,测试过程中的功能测试,测试后期的异常测试基本可以组成一个完整的测试方案,覆盖整个测试周期。

    未来我们还会继续探索新的测试方法,持续完善测试方案,做好质量把控的最后一道关。

    a461a9b5437db13ce149c6d473c480f3.png

    ee9d3d137c15e209b15a8cb2fadac97f.png

    展开全文
  • 本文主要向大家介绍了MySQL数据库之php链接mysql代码测试 ,通过具体内容向大家展现,希望大家学习MySQL数据库有所帮助。PHP连接MYSQL是进行数据库操作第一步,在PHP中,可以使用内置PHP函数mysql_connect()...

    本文主要向大家介绍了MySQL数据库之php链接mysql代码测试 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

    PHP连接MYSQL是进行数据库操作的第一步,在PHP中,可以使用内置的PHP函数mysql_connect()来实现,函数格式为mysql_connect("mysql主机名","mysql用户名","mysql密码"),下面的测试代码可测试是否成功连接到MYSQL:

    $conn = mysql_connect("localhost","root","pass") or die("connect err: ".mysql_error());

    echo "MySQL数据库成功!";

    ?>

    在上面的测试代码中:假设MYSQL主机名为本机localhost",用户名和密码都是root,请以你实际的主机名和用户名密码为准,die函数用意是当MYSQL连接失败时终止程序并输出错误原因。

    本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

    展开全文
  • VB编写MSSQL数据库连接测试工具.rar -------------------------- 在学习vb过程中收集一些资料,希望大家有帮助 很多源码或资料,并没有亲自测试,希望朋友们,下载,自行测试, 虽然会有很多代码存在问题,但是至少...
  • 引言 作为一名DBA,时常需要...所谓基准测试,就是通过对数据库的性能指标进行定量、可重复和可对比的测试。基准线测试可以理解为一种针对系统压力测试。但该测试并不关心业务逻辑,因此测试相对简单和直接...

    引言

    作为一名DBA,时常需要对某些数据库进行一些基准测试,进而掌握数据库的性能情况。本文就针对sysbench展开介绍,帮助大家了解sysbench的一般使用方法。

    sysbench简介

     

    • 什么是基准线测试

    所谓基准测试,就是通过对数据库的性能指标进行定量的、可重复的和可对比的测试。基准线测试可以理解为一种针对系统的压力测试。但该测试并不关心业务逻辑,因此测试相对简单和直接。通过测试可分析在当前配置下(包括硬件配置,OS,及数据库参数设置等)应用的性能表现,实现不同应用之间的比较。

    具体而言,可以使用如下指标来进行比对:

    • TPS/QPS:衡量数据库的吞吐量;

    • 响应时间:包括平均响应时间,最小响应时间以及不同百分位数的响应时间(如p90,p95);

    • 并发量: 同时处理请求的数量。

     

    • sysbench介绍

    sysbench是开源的,基于LuaJIT框架,可自定义脚本的多线程基准线测试工具。

    sysbench下载链接:https://github.com/akopytov/sysbench

    该工具可进行如下方面的测试:

    • 数据库性能测试(OLTP基准线测试)

    • CPU运算性能测试

    • 磁盘IO性能测试

    • 内存分配及传输速度测试

    • POSIX线程性能测试

     

    • sysbench 安装

    1.  操作系统系统安装依赖包

    yum -y install make automake libtool pkgconfig libaio-devel

    Note:

    如需测试数据库性能,还需要另外安装数据库相关软件,本文以mysql为例

    2. 从 https://github.com/akopytov/sysbench/archive/master.zip

    上下载sysbench安装包

    3.  解压zip包

    zip master.zip

    4. 进入被解压的文件夹,执行如下命令:

    ./autogen.sh./configure --prefix=/usr/local/sysbench --with-mysql-libs=/usr/local/mysql/lib/  --with-mysql-includes=/usr/local/mysql/include/

    Note:

    • --prefix 参数定义 sysbench编译后安装的路径

    • --with-mysql-libs和--with-mysql-includes 定义的是mysql相关文件的路径

    编译并安装sysbench:

     

    make && make install

     

    • sysbench命令介绍

    sysbench的命令格式如下:

    sysbench [options]... [testname] [command]
    • testname: 可以指定一个lua的脚本进行测试,或是指定关键字(fileio, cpu,memory)来使用sysbench内置的方法测试相关项目

    • command: 定义了测试需要执行的行为。下表描述了command包含的一般命令:

    命令样例:

    ./sysbench  --mysql-host=127.0.0.1 --mysql-db=sbtest --table-size=500000 --mysql-user=root --mysql-password=root/data/sysbench1.1/share/sysbench/oltp_read_only.lua  prepare

    其中:

    options: --mysql-host , --mysql-db, --table-size, --mysql-user, --mysql-password

    testname:/data/sysbench1.1/share/sysbench/oltp_read_only.lua 脚本

    command: prepare

     

     

    sysbench 测试

     

    如上所述,sysbench能针对数据库,cpu,磁盘I/O, 内存性能等方面进行基准测试。现就这几方面分别讲解。

     

    • 数据库性能测试

    当sysbench用于测试数据库性能时,可以通过使用sysbench内置相关lua脚本来快速测试数据库(另外由于sysbench支持自定义脚本,也可以自定义数据库测试脚本,自定义功能本文中不作展开)。

     

     这些内置脚本存放在 $SYSBENCH_HOME/share/sysbench目录下,该目录下包含如下文件:

    通过如下命令查看这些脚本的输入参数说明:

    •  
    ./sysbench  $SYSBENCH_HOME/share/sysbench /share/sysbench /oltp_xxxx.lua  help 

    Note:

    • $SYSBENCH_HOME为sysbench的安装目录.    

    • oltp_xxx.lua 为lua相关脚本

    数据库测试主要分为三步:

    Step1:连接Mysql数据库,创建相关用户并赋予相应权限

    mysql> create  database sbtest;Query OK, 1 row affected (0.00 sec)mysql> grant all privileges on sbtest.* to 'sdbadmin'@'%' identified by 'xxxxxx';Query OK, 0 rows affected, 1 warning (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)

    Step2: 使用lua脚本,初始化数据库(prepare)

    ​​​​​​​

    ./sysbench --mysql-host=127.0.0.1  --mysql-port=3306 --mysql-db=sbtest --mysql-user=sdbadmin --mysql-password=xxxxxx --tables=10 --table_size=800000 --threads=10 --mysql_storage_engine=sequoiadb  --create_table_options="comment=\"sequoiadb:{table_options:{ShardingType:'hash',ShardingKey:{id:1},Compressed:false,EnsureShardingIndex:false}}\"" /data/sysbench1.1/share/sysbench/oltp_read_write.lua  prepare

    上述命令中--mysql_storage_engine和--create_table_options 指定了建表时使用巨杉数据库引擎创建了hash分区表。如果只是想创建普通表,去除这两个选项即可。

     

    在此阶段sysbench按照指令创建了10张表(--tables参数指定创建表的个数),这些表均有相同的表结构,其结构如下:​​​​​​​

    ​​​​​​​

    | Field | Type      | Null | Key | Default | Extra          |+-------+-----------+------+-----+---------+----------------+| id     | int(11)    | NO   | PRI | NULL    | auto_increment || k      | int(11)    | NO   | MUL | 0       |                || c      | char(120) | NO    |     |         |                || pad    | char(60)  | NO    |     |         |                |+-------+-----------+------+-----+---------+----------------+

    同时每张表插入了80万条数据(--table_size参数指定了每张表的数据量)。

    ​​​​​​​

    mysql> select count(1) from sbtest1;+----------+| count(1) |+----------+|   800000 |+----------+

    并在每张表的id列创建主键索引。k列创建b-tree索引:

    ​​​​​​​

    +---------+------------+----------+--------------+-------------+| Table   | Non_unique | Key_name | Seq_in_index | Column_name |+---------+------------+----------+--------------+-------------+| sbtest1 |          0   | PRIMARY   |            1   | id          || sbtest1 |          1   | k_1        |            1   | k           |+---------+------------+----------+--------------+-------------+

    Step3: 使用lua脚本执行测试(run)

    ​​​​​​​

    ./sysbench --mysql-host=192.168.56.101,192.168.56.102  --time=600 --report-interval=5 --mysql-port=3306 --mysql-db=sbtest --mysql-user=sdbadmin --mysql-password=xxxxxx --tables=10 --table_size=80000 --threads=10  /data/sysbench1.1/share/sysbench/oltp_read_write.lua  run > ./run.log

    本次测试,连接了两个mysql数据库实例(--mysql-host参数指定了两个地址),开启了10个线程(--threads参数指定),并运行300秒(--time参数指定),每5秒打印一次报告(--report-interval)。

    在真实测试环境中建议测试时间不要小于30分钟。数据表建议不低于10个,单表数据量不低于500万行,如果配备了SSD设备的话,则建议单表数据量不低于1亿行。

     

    结果解析:

    ​​​​​​​

    SQL statistics:    queries performed:        read:                            646870    --读总数        write:                           184819    --写总数        other:                           1        total:                           831690    transactions:                        46205  (153.99 per sec.)  --总事务数(每秒事务数tps)    queries:                             831690 (2771.84 per sec.) –查询总数(每秒查询数qps)    ignored errors:                      0      (0.00 per sec.)    reconnects:                          0      (0.00 per sec.)
    Throughput:    events/s (eps):                      153.9911    time elapsed:                        300.0497s    total number of events:              46205
    Latency (ms):         min:                            17.24   --最小耗时(毫秒)         avg:                            64.93   --平均耗时(毫秒)         max:                            652.50   --最大耗时(毫秒)         95th percentile:                125.52  -- 95%的操作响应耗时(毫秒)         sum:                            3000048.67
    Threads fairness:    events (avg/stddev):           4620.5000/20.08    execution time (avg/stddev):   300.0049/0.01

    这些测试报告中,需要特别注意几项:

    • transactions中的TPS,本报告中TPS为153.99

    • queries中的QPS,本报告中的QPS为2771.84

    • 95th percentile,本报告中为125.52

    如还需测试别的场景,只需修改testname和options相关参数即可。

    Note: 

    • QPS: (Queries-per-second)每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准 

    • TPS: (Transaction-Per-Second) 每秒事务处理量,是一个表达系统处理能力的性能指标,每秒处理的消息数

     

    • CPU测试

    sysbench的CPU测试,主要是通过生成特定数量的质数所需要的时间来判断CPU的性能。

    这里可以通过两步来完成CPU的测试。

    Step1:确认CPU的线程数

    •  
    cat /proc/cpuinfo|grep processor|wc -l

    Step2: 执行CPU的测试命令

    •  
    ./sysbench cpu --cpu-max-prime=20000 --threads=2

    --cpu-max-prime :指定质数的个数,默认为10000

    --threads:指定开启的线程数,这和第一步的cpu查询获得的cpu线程数保持一致

     

    结果解析:

    ​​​​​​​

    CPU speed:    events per second:   425.11
    Throughput:    events/s (eps):                      425.1147    time elapsed:                        10.0020s    total number of events:              4252
    Latency (ms):         min:                                    2.24         avg:                                    2.35         max:                                   17.93         95th percentile:                        2.52         sum:                                 9994.74
    Threads fairness:    events (avg/stddev):           4252.0000/0.00    execution time (avg/stddev):   9.9947/0.00    --完成计算所需要的时间(秒)

    结果中的execution time为所需要关注的数据,本例中结果为 9.9947。

     

    • 磁盘I/O测试

    如下命令可以查看I/O测试选项:

     

    /sysbench fileion help

    展开全文
  • 第一次写博客,望各位大神多多包涵,用简洁语言概括一下这块如何配置,主要针对初学测试,希望该文章你有帮助! 1、首先添加测试计划,把数据库驱动加载进去 2、设置好基本设置,线程组  3、...

                                          主要针对mysql数据库这块的测试

    第一次写博客,望各位大神多多包涵,用简洁的语言概括一下这块如何配置,主要针对初学测试,希望该文章对你有帮助!

    1、首先添加测试计划,把数据库驱动加载进去



    2、设置好基本的设置,线程组 



    3、添加jdbcconnection Configurarion


    4、添加 jdbc Requset



    5、jdbcconnection Configurarion配置如下


    6、jdbc Requset配置如下


    7、查看结果树



    看完这篇的同学,是否觉得用jmeter测试数据库不难呢?简洁的几个步骤把jmeter数据库测试给实现了,望各位喜欢!

    展开全文
  • 本文将带你了解软件测试技术之面试必问25道数据库测试题,希望大家学测试技术有所帮助面试必问25道数据库测试题1)什么是数据库测试数据库测试也称为后端测试数据库测试分为四个不同类别。数据完整性测试...
  • 我们从五个方面入手,帮助您系统了解数据库服务器服务器硬件有哪些要求。选择数据库服务器五个原则:1)高性能原则保证所选购服务器,不仅能够满足运营系统运行和业务处理需要,而且能够满足一定时期业务...
  • 在本文上半部分 ,我开始讨论一些我发现特别有帮助的常规最佳实践。 同样,它都不是特定于任何供应商产品,因此,无论使用哪种数据库实现,所有内容都应适用。 在这篇结论性文章中,我将尝试对数据库规范化...
  • 通过允许工程师使用真正PostgreSQL测试数据库编写快速执行,并行和确定性集成测试工程师有所帮助。 尽可能接近测试生活环境。 背景 我们走了很长一段路才能认识到,我们PostgreSQL集成测试策略...
  • 文中将两者进行了对比,帮助测试人员作出更好决策。 数据迁移是指从现有数据库迁移至一个新数据库的过程。在现实工作中我们也会经常接触到,当公司决定升级或更改数据库时,那么这就需要将现有数据传输至新...
  • 因为数据库不是完全可模拟,所以单元测试不会您有所帮助。如果做一个update,delete或者insert,您可以在查询之后运行select查询来检查查询结果,但是这样您就不会检查不需要副作用。可能受影响表比需要...
  • 想要帮助想要学习PHP人,共同成长、进步,希望能够大家有所帮助 也希望大家能够关注一下我,帮我文章点赞,评论指正错误。
  • test是测试。 shardingcore项目结构。 其中MultipleDataSource是为了实现切换数据库连接,这块代码是参考网上数据库读写分离。 ShardingDBAspect是分库核心代码。 使用shardingcore 我们假设要user...
  • 本文主要向大家介绍了MySQL数据库之mysql中迅速插入百万条测试数据方法 ,通过具体内容向大家展现,希望大家学习MySQL数据库有所帮助。对比一下,首先是用mysql存储过程弄:复制代码代码如下:mysql>...
  • Oracle透明网关访问MySQL数据库针对oracle数据库不同实例之间数据访问,我们可以直接...好久没做透明网关配置了,最近有业务需求,这里将部署过程做个记录,希望有需要朋友有所帮助。======================...
  • 本文主要向大家介绍了MySQL数据库之php链接mysql代码测试 ,通过具体内容向大家展现,希望大家学习MySQL数据库有所帮助。PHP连接MYSQL是进行数据库操作第一步,在PHP中,可以使用内置PHP函数mysql_connect()...
  • 本文主要向大家介绍了MySQL数据库之MySQL-tpch 测试工具简要手册 ,通过具体内容向大家展现,希望大家学习MySQL数据库有所帮助。tpch是TPC(Transaction Processing Performance Council)组织提供工具包。用于...
  • 无忧考网为大家收集整理了《2014计算机二级考试mysql数据库测试题》供大家参考,希望大家有所帮助!!!一,填空题(每空4分,共40分)1.如果一个MySQL版本号没有后缀,表示该版本已经在很多地方运行一段时间...
  • 性能测试工具操作数据库连载九,本节在前面八节基础上,讲述了如何通过Loadrunner工具连接操作MongoDB数据库,具体包括数据库连接、查询、插入、更新、删除操作,涉及到操作过程和注意事项新人绝对有帮助。...
  • 我就从我工作经验方面给你总结一下,谈一下我软件测试行业理解,希望你能有所帮助,毕竟人生第一份工作还是最重要。 在我工作这几年,通过不断时间,我软件测试行业理解不断加深。从现在大...
  • 本文主要向大家介绍了MySQL数据库之Delphi连接MySql(待测试验证) ,通过具体内容向大家展现,希望大家学习MySQL数据库有所帮助。首先在窗体上拖拽sqlconnection和sqlquery两个控件然后在测试连接中,写入以下...
  • 本文主要向大家介绍了MySQL数据库之Delphi连接MySql(待测试验证) ,通过具体内容向大家展现,希望大家学习MySQL数据库有所帮助。首先在窗体上拖拽sqlconnection和sqlquery两个控件然后在测试连接中,写入以下...
  • 因为一去二三里博客里面早已经讲解得非常详细了,但是我在学习过程中(可能是因为自己愚笨)还是遇到了一些问题,故而和大家分享我遇到问题,希望这后来人有帮助(我QT版本是5.5 mingw492_32)
  • 这些建议可以帮助用户OceanBase做一些调优,再结合测试程序快速找到适合业务最佳性能。由于OceanBase自身参数很多、部署形态也比较灵活,这里并没有给出具体步骤。 数据库读写特点 压测本质就是一个会话...
  • 连接INFORMIX比较少,我来上传一个我自己,当时用informix版本是好像是7.2 希望你有点帮助
  • 性能测试工具操作数据库连载十,本节在前面九节基础上,讲述了如何通过Loadrunner工具连接操作Redis数据库,具体包括存储普通字符串、存储Map数据、操作List、操作Set等,涉及到Redis操作过程和应用技巧新人...
  • 做软件测试数据库查询必须都是要用到,查询数据是否正常,所有查询语句我们必须要会,希望大家有所帮助1.创建student和score表CREATE TABLE student (id INT(10) NOT NULL UNIQUE PRIMARY KEY ,name VARCHAR...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,916
精华内容 766
关键字:

数据库对测试的帮助