质量控制

大多数测试人员认为测试工作是发现bug,虽然这是测试的主要任务,但其实测试最重要的任务是质量控制,而发现bug和验证bug只是质量控制的一个重要环节而已。

我想很多测试人员都经历过这样的场景,就是测试环境全部都能测试通过,但正式上线之后就会有各种各样的bug,到底是哪里出了问题呢?

在测试工作中,常见的问题原因分为以下几类:

  • 不同版本的数据兼容

这是最常见的问题,一般新版本的迭代不仅仅是代码层面的,还有数据库的改动,而对于线上原有的数据来说改动了数据库有可能会受到影响。

举个例子:

如果数据库增加了一个字段,那么新数据肯定会通过新的程序给这个字段赋值,而原有的数据这个字段往往是空的,这时读取该数据就会发生问题。

当然这只是一个最简单的情况,这种情况在测试环境可以用历史数据进行测试从而发现该问题。但往往还有更多复杂的情况,有时候是需要手动造数据库的数据来模拟数据兼容的问题。这个就是测试比较容易忽视,也最容易发生问题的一个点。

  • 测试环境和正式环境的不同

测试环境和正式环境的不同也是一种经常发生的事情,

不同分2种情况:

  1. 硬件方面的,一般正式环境的服务器都比测试环境来的好,所以硬件上不太可能一致,虽然这个差异影响比较小,但也不排除会影响程序的运行。

  2. 软件方面的,包括程序语言的版本,服务器系统的版本,甚至服务器的权限控制都会影响到程序的运行。

如果说不同版本的数据兼容问题可以在测试环境预判并测试,那这种情况可能只能做到提醒开发和运维人员了,硬件方面没办法,软件方面尽量做到一致,以减少测试环境和正式环境的差异,让正式环境上的程序跑的更加稳定。

  • 服务器的配置

这个不同于上面说的程序语言版本,而是在代码层面的配置:

  • 配置文件,包括代码的相对路径,某个功能的开关,又或者是服务器ip的配置等等。而这些都是相对于测试环境配置的,如果发布的时候将配置文件覆盖也会导致正式环境出问题。

  • 服务器上配置的crontab脚本,很多程序是需要通过crontab脚本定时执行,而crontab又是需要在服务器上配置的,自动配置不方便控制及维护。所以大多数还是需要人为去配置的,这个配置如果漏了或者配置错也会导致出问题。

以上3点只是常见的,事实上可能会遇到更奇葩和不可思议的问题,

例如

  • 正式环境多台服务器有一台服务器代码未更新,导致问题时隐时现。

  • 数据库的主备数据不一致,当切换主备数据库后会出问题。

所以好的测试不能只把目光放在代码层面的测试,而是要从更高的视角去看整个项目在上线发布的时候存在的各种风险。有些可以通过测试而发现出来,而更多的还是要提醒开发和运维人员去规避这些上线的风险,我想这才是好的测试人员应该做到的事情。

测试通过!为何线上还有很多BUG?的更多相关文章

  1. Redis 集群缓存测试要点--关于 线上 token 失效 BUG 的总结

    在测试账户系统过程中遇到了线上大面积用户登录态失效的严重问题,事后对于其原因及测试盲点做了一些总结记录以便以后查阅,总结分为以下7点,其中原理性的解释有些摘自网络. 1.账户系统token失效问题复盘 ...

  2. 测试通过!为何线上还有很多BUG?实践中的质量控制

    质量控制 大多数测试人员认为测试工作是发现bug,虽然这是测试的主要任务,但其实测试最重要的任务是质量控制,而发现bug和验证bug只是质量控制的一个重要环节而已. 我想很多测试人员都经历过这样的场景 ...

  3. 测试右移:线上质量监控 ELK 实战

    目录 [测试右移]介绍 ELK Stack 介绍 ELK 监控体系搭建 ES & Kibana 搭建 Nginx 日志自动采集 Nginx Agent 安装 Nginx 服务器 数据分析 Lo ...

  4. 互联网IT当线上出现 bug 时,是怎么处理的?

    线上BUG说处理方法:1.关于线上BUG问题,目前公司有一整套线上故障流程规范,包括故障定义.定级.处理流程.故障处理超时升级机制.故障处理小组.故障处罚(与故障存在时长有关)等:2.最主要的是,线上 ...

  5. 使用tcpcopy复制线上流量进行测试

    使用tcpcopy复制线上流量进行测试 online server 线上服务所在机器 10.136.11.4 部署tcpcopy sudo /usr/local/tcpcopy/sbin/tcpcop ...

  6. 无需编译app切换线上、测试环境

    在咱们测试过程中,经常需要切换测试环境和线上环境.大致有如下几个方案. 一.服务器地址编译到app中 此种方式需要在代码里保存两套配置,一套指向线上,一套指向测试.通过编译参数分别生成测试包.线上包. ...

  7. HBase工程师线上工作经验总结----HBase常见问题及分析

    阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...

  8. (转)HBase工程师线上工作经验总结----HBase常见问题及分析

    阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...

  9. 轻松排查线上Node内存泄漏问题

    I. 三种比较典型的内存泄漏 一. 闭包引用导致的泄漏 这段代码已经在很多讲解内存泄漏的地方引用了,非常经典,所以拿出来作为第一个例子,以下是泄漏代码: 'use strict'; const exp ...

随机推荐

  1. ehcache缓存框架简介(一)

    EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 我们使用EhCache缓存框架主要是为了判断重复Url,每次爬取一个网 ...

  2. js验证表单大全3

    2 >表单提交验证类  2.1 表单项不能为空 <scriptlanguage="javascript"> <!-- function CheckForm( ...

  3. SpringBoot处理url中的参数的注解

    1.介绍几种如何处理url中的参数的注解 @PathVaribale  获取url中的数据 @RequestParam  获取请求参数的值 @GetMapping  组合注解,是 @RequestMa ...

  4. 使用JDT转java代码为AST

    maven依赖 <dependency> <groupId>org.eclipse.jdt</groupId> <artifactId>org.ecli ...

  5. 安装nginx包

    1.二进制安装源码包,直接输入yum stall nginx -y就可以 2,后面会涉及路径,所以先查下nginx的路径rpm -ql nginx 3,进入bin目录进行设置 4, 5,查看系统自带的 ...

  6. LeetCode:二进制求和【67】

    LeetCode:二进制求和[67] 题目描述 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11" ...

  7. python之路 正则表达式,模块导入的方法,hashlib加密

    一.正则表达式re python中re模块提供了正则表达式相关操作 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的 ...

  8. Django 之基础续

    1.路由系统之动态路由 前言:还记得之前的分页效果,这个如何实现呢?答案就是动态路由. url(r'^detail/(\d+)/$', views.detail), url(r'^detail2/(\ ...

  9. bfc (收集的)

    一些基本概念 viewport: 展现网页的媒体,比如窗口或者某个区域,它的大小是有限制的,为了不被平台术语所束缚,我们给他起名viewport,中文意思就是视口. canvas: 而我们在渲染网页的 ...

  10. 【LeetCode】【定制版排序】Sort Colors

    之前转载过一篇STL的sort方法底层详解的博客:https://www.cnblogs.com/ygh1229/articles/9806398.html 但是我们在开发中会根据自己特定的应用,有新 ...