做自己的QA

背景

在测试和生产环境出现的一些问题,无论级别程度,这些问题会产生不可预知的负面影响。

不能因为QA同事的存在就放松研发自己的警惕,或者说,降低自己的标准。

测试作为发生线上问题一道重要防线,不可使其孤军奋战。QA 并不能生产质量,开发才是质量的生产者。

目的

提升研发交付质量 。以降低提测bug为己任,消灭线上问题为目标。

应对措施

  • 1、关注参数的校验,包括长度、字符集(数字?字母?大小写?)、NULL、非空、类型(整数、小数点几位?)、必填等
  • 2、关注边界值的验证,包括最小值、最大值、临界值、数组长度等
  • 3、关注异常(Exception)的处理及NULL的判断,保证程序的健壮性
  • 4、常用的方法一定要抽取出来,做成通用的逻辑(比如精度的处理、小数点位的处理、response的发送等)
  • 5、代码合并提交之前,必须做二次确认,确保合并正确
  • 6、文案、报错信息、时间格式、数据精度等必须跟需求一致,或者跟产品、测试讨论清楚
  • 7、确认各套环境的变量、SQL语句是否正确、设置到位
  • 8、数据库里的各个字段是否被正常的更新
  • 9、编码过程中彻底了解每个类 / 方法的使用场景及其使用方法
  • 10、定期(每个迭代周期 / 项目完结后)分析个人 / 本组的bug情况,针对常见bug进行宣贯并更新代码 review的checklist
  • 11、需要特别关注异常场景,比如MQ的顺序、锁的使用及其释放、队列的长度、线程安全等
  • 12、回归过程中 / GR上发现的bug,讨论清楚后再动手修改,避免修改造成其他bug,修改范围要可控
  • 13、重要迭代 / 项目,研发必须跑通冒烟用例,如果有时间,可以找测试要全量的测试用例
  • 14、在技术需求、系统需求的jira单子里,写清楚本次需求开发中需要注意的地方,开发完成后再对照- - 15、产品需求,确认无遗漏
  • 16、前端界面的测试,可以使用交叉测试
  • 17、避免根据字符串匹配做相关逻辑操作,使用key关键字做匹配,避免他人修改字符串值引起bug。

所有的逻辑分支都要覆盖
所有的逻辑组合都要覆盖
正常系、异常系都要覆盖
各种错误码的场景都要覆盖
入参边界值都要覆盖

举例:以下的函数,根据用户输入的年龄,判断是否可以进行工作,同时也会检验用户实际的年龄跟输入的年龄是否符合

int checkAge(int age,long userId){

    if (WORD_AGE_MIN > age || WORK_AGE_MAX < age)  {        /* 代码段A*/

         log.error("illegal age range,age={}, id={}", age, userId);

         return ERROR_AGE_RANGE;

    }

    userDto user = getUserInfoById(userId);      /* 代码段B*/

    if (NULL == user) {

        log.error("call getUserInfoById error, id={}", userId);

        return ERROR_GET_USER_INFO;

    } else {

         /* 从身份证信息推断用户的age是否OK */

       int actualAge = user.getAgeByIdCard();

       if (actualAge != age)  {

            log.error("age error. age={}, actualAge={}, id={}", age, actualAge, userId);

            return ERROR_AGE_NOT_EQUAL;

       }

       return OK;

  } 

为了进行全面的自测,我们需要进行以下的测试:

代码段A:
为了进行代码段A的测试,需要将age所有的取值,包括边界值,都考虑到,需要构造以下的场景:

1 小于WORD_AGE_MIN 测试if (WORD_AGE_MIN > age || WORK_AGE_MAX < age),并且条件符合 ERROR_AGE_RANGE;
2 等于WORD_AGE_MIN 测试if (WORD_AGE_MIN > age || WORK_AGE_MAX < age),条件不符合 继续往下跑,跑代码段B
3 介于WORD_AGE_MIN与WORD_AGE_MAX 测试if (WORD_AGE_MIN > age || WORK_AGE_MAX < age),条件不符合 继续往下跑,跑代码段B
4 等于WORD_AGE_MAX 测试if (WORD_AGE_MIN > age || WORK_AGE_MAX < age),条件不符合 继续往下跑,跑代码段B
5 大于WORD_AGE_MAX 测试if (WORD_AGE_MIN > age || WORK_AGE_MAX < age),并且条件符合 ERROR_AGE_RANGE;

代码段B:
为了进行代码段B的测试,需要构造以下的场景

6 不存在的userId或者调用出错的 if (NULL == user) ,条件成立 ERROR_GET_USER_INFO
7 能够获取到用户实际年龄,并且是虚假年龄 if (actualAge != age) ,条件成立 ERROR_AGE_NOT_EQUAL
8 能够获取到用户实际年龄,并且是真实年龄 if (actualAge != age) ,条件不成立 OK

综合来看,场景3,4,5能往下跑,而为了测试代码段B,需要场景6,7,8,所以从整个逻辑来看,我们需要构造5个case,能够跑遍所有的逻辑,

同时返回所有的错误码,这5个是必测的,如果你有更多的测试时间,当然也可以构造更多的case进行自测

1 age 小于WORD_AGE_MIN,userId实际存在 ERROR_AGE_RANGE
2 age 等于WORD_AGE_MIN,userId不存在 ERROR_GET_USER_INFO
3 age 介于WORD_AGE_MIN与WORD_AGE_MAX,userId对应的用户信息年龄等于age OK
4 age 等于WORD_AGE_MAX,userId对应的用户信息年龄不等于age ERROR_AGE_NOT_EQUAL
5 age 大于WORD_AGE_MAX,userId实际存在 ERROR_AGE_RANGE

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270