美文网首页
做自己的QA

做自己的QA

作者: AKyS佐毅 | 来源:发表于2020-10-20 10:38 被阅读0次

背景

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

不能因为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

相关文章

  • 做自己的QA

    背景 在测试和生产环境出现的一些问题,无论级别程度,这些问题会产生不可预知的负面影响。 不能因为QA同事的存在就放...

  • PM自己做QA是种怎样的体验

    前两天看到纯银大大说他亲自做QA,正好现在的实习也是自己在做测试方面(非自动化)的工作,所以当回标题党,顺便找个机...

  • SAP QA32 做使用决策系统报错:分类数据的不一致性=>

    SAP QA32 做使用决策系统报错:分类数据的不一致性=>交易终止 QA32,对如下检验批做处理,系统报错, 试...

  • centos安装es环境

    安装jdk rpm -qa |grep javarpm -qa |grep jdkrpm -qa |grep gc...

  • QA 在中国有前途吗?

    QA 还是很有前途的。 目前国内 QA 的工作面很广。web 上点鼠标的是 QA,linux 上写脚本的是 QA,...

  • 优秀QA四阶段修炼法

    记得最初选择做QA,是因为听很多IT界前辈说,QA职业在中国刚刚起步,有很大的发展空间,而且发展速度很快,我只是简...

  • 优秀QA修炼四阶段

    记得最初选择做QA,是因为听很多IT界前辈说,QA职业在中国刚刚起步,有很大的发展空间,而且发展速度很快,我只是简...

  • Quora

    整体 Quora是如何做推荐的, 原文在 machine-learning-for-qa-sites-the-qu...

  • Webpack 资源异步加载体验优化(装饰者-给异步资源加loa

    背景 之前做H5的需求,给QA测试的时候,经常会发现,QA点了一个按钮进行页面跳转,但是点了之后没有反应,下意识的...

  • PQA

    全称Process Quality Assurance, 即全程质量检测认证。 需求QA 测试QA 运维QA 数据...

网友评论

      本文标题:做自己的QA

      本文链接:https://www.haomeiwen.com/subject/ukmfyktx.html