我们写测试用例的目的是为了能够整理思路,把要测试的地方列出来,做为知识的积淀,用例可以交给其他测试人员执行,或者是跟需求提出者进行讨论,对用例进行补充和修改。

理论上用例写的越多,越容易发现bug。但是,本文我们将讨论如何写出发现不了bug的测试用例。

不看需求

要想写出测不出bug的用例,最关键的一点就是不看需求或者随便看看需求。

需求文档是个磨人的小妖精,要么是写的看不懂,要么写的太简单。这玩意很多时候我们是看不懂的,看不懂的话,嗯,那么就脑补咯,用例写的又快又好,执行的时候肯定发现不了bug。

只看需求

我们的测试用例只涵盖需求中描述的部分,其他需求里面没有提到的部分坚决不写。测不出问题不是用例的错,都是需求的锅。

只写正常的逻辑

永远只关注业务的正常流程和逻辑,把测试用例写成用户说明书,这样看起来内容会很多很详尽,但是根据这个用例,不管你怎么测你都测不出来问题,厉害吧。

拷贝粘贴

一般大家都用excel写用例,这时候相似的用例是可以使用拷贝粘贴的方式去搞的,改几个字就是个新用例了,很聪明不是?这样的用例交到执行人员手里,因为长得差不多,执行的时候很容易被忽视造成场景漏侧,遗漏了就自然发现不到bug了,不是么?

只可意会

把每一条用例都写得只可意会不可言传。这样的用例自己写过3天之后都会忘了写得时候到底是怎么想的,通过这种用例去找bug,只能靠运气。

没有断言

只描述方法和步骤,不写断言,或者把断言写的很暧昧,有一种朦胧美,让人觉得看起来很有道理,但是执行的时候一脸懵逼,比如

  • 应该登录成功

  • 应该保存成功

  • 应该跳转到正确的页面

  • 应该有错误提示

只要掌握了上面的方法,勤加练习,相信大家很快就能练成撰写测不出bug测试用例的绝技。目前江湖上此等绝技风行一时,人人争相敬仰之。

最后以上我说的都是反话

如何写出测不出bug的测试用例的更多相关文章

  1. 为什么你写的用例测不出Bug来?

    我们写测试用例的目的是为了能够整理思路,把要测试的地方列出来,做为知识的积淀,用例可以交给其他测试人员执行,或者是跟需求提出者进行讨论,对用例进行补充和修改.那么为啥你写的用例测不出Bug来呢,真的是 ...

  2. “出错了”和报告Bug的艺术

    "出错了." 没有那句话能像"出错了"一样让程序员/开发者如此沮丧,心里翻江倒海,怒火一点即燃,还要死掉一大片脑细胞. 这句生硬的开场白通常标志着让开发者恐惧的 ...

  3. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  4. 出错的方法有可能是JDK,也可能是程序员写的程序,无论谁写的,抛出一定用throw

    应对未检查异常就是养成良好的检查习惯. 已检查异常是不可避免的,对于已检查异常必须实现定义好应对的方法. 已检查异常肯定跨越出了虚拟机的范围.(比如“未找到文件”) 如何处理已检查异常(对于所有的已检 ...

  5. 写了个全局变量的bug,被同事们打脸!!!

    话说栈长前阵子写了一个功能,测试 0 bug 就上线了,上线后也运行好好的,好多天都没有人反馈bug,超爽.. 不出问题还好,出问题就是大问题.. 最近有个客户反馈某些数据混乱问题,看代码死活看不出什 ...

  6. javascript的alert()的消息框不弹出或者弹出信息有误

    有时不知道什么,有时javascript的alert()的消息框不弹出或者弹出信息有误,代码是这么写的: //提示信息 public static void alert(TemplateControl ...

  7. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选

    原生Js封装的弹出框-弹出窗口-页面居中-多状态可选   实现了一下功能: 1.title可自定义 可拖拽 2.width height可以自定义 3.背景遮罩和透明度可以自定义 4.可以自己编辑弹出 ...

  8. 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数

    问题描述: 数组a[n]中存放1-n中的n-1个数,给出算法找出重复的那一个数. 算法一: 对数组a[n]进行冒泡排序,如果冒泡所得的最值和前一个最值相等,则该最值为重复的数. 分析: 该算法时间复杂 ...

  9. ISO C++标准委员会不是一个一般意义上权力机构,基本上愿意交会费,愿意自己出时间,出酒店机票,出提案,就可以申请加入。

    ISO C++标准委员会不是一个一般意义上权力机构,基本上愿意交会费,愿意自己出时间,出酒店机票,出提案,每年全世界参加会议被专家巨细靡遗地评头论足,就可以申请加入. 所以参加标准委员会背景各异,有人 ...

随机推荐

  1. CCF系列之最优灌溉(201412-4)

    试题编号:201412-4试题名称:最优灌溉时间限制: 1.0s内存限制: 256.0MB 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来 ...

  2. 数据结构 链式哈希表(Hash Table)的接口定义与实现分析(完整代码)

    链式哈希表的接口定义 关于哈希表与链式哈希表的描述可以参阅:http://www.cnblogs.com/idreamo/p/7990860.html 链式哈希表的操作与属性有:初始化.销毁.插入元素 ...

  3. 2017-07-01(ifconfig ifdown ifup netstat )

    ifconfig 可以查看IP地址与子网掩码 ifdown(禁用网卡) ifdown  网络设备名 ifdown eth0 ifup (启动网卡) ifup  网络设备名 ifup  eth0 net ...

  4. C#动态设置匿名类型对象的属性

    用C#写WPF程序, 实现功能的过程中碰到一个需求: 动态设置对象的属性,属性名称是未知的,在运行时才能确定. 本来这种需求可以用 Dictionary<string, object> 实 ...

  5. linkin大话设计模式--常用模式总结

    linkin大话设计模式--常用模式总结 一,常用设计模式定义 Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. Adapter( ...

  6. Go语言学习索引

    <Go并发编程实战>示例项目 项目地址: https://github.com/hyper-carrot/goc2p 项目安装: 用git clone获取项目,并将其根目录作为一个工作区. ...

  7. docker命令行学习

    docker命令行学习 docker run docker run --help:老实说这条最管用了 docker run -it:交互模式,允许控制台输出 docker run -d:detach, ...

  8. Java源码分析系列之HttpServletRequest源码分析

    从源码当中 我们可以 得知,HttpServletRequest其实 实际上 并 不是一个类,它只是一个标准,一个 接口而已,它的 父类是ServletRequest. 认证方式 public int ...

  9. GO开发[六]:golang反射(reflect)

    反射 反射:可以在运行时动态获取变量的相关信息 ​ Import ("reflect") reflect.TypeOf,获取变量的类型,返回reflect.Type类型 refle ...

  10. python小白之路

    阅读目录: 第一章:计算机基础 计算机硬件.操作系统.网络协议 第二章:python基础 初识python.常量变量.输入输出运算符.条件与循环语句.数字与字符串.列表与字典.元组与集合.阶段小测.字 ...