V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tetsuchou
V2EX  ›  程序员

如果测试脚本需要被测试的话,那么用来测试测试脚本的脚本需不需要被测试?

  •  
  •   Tetsuchou · 2018-06-07 09:41:57 +08:00 · 3760 次点击
    这是一个创建于 2365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    (我不是在黑 Golang 或者 TDD 或者任何自动化测试相关的东西)

    31 条回复    2018-06-08 14:52:10 +08:00
    PythonAnswer
        1
    PythonAnswer  
       2018-06-07 09:47:55 +08:00 via iPhone
    需要
    KeepPro
        2
    KeepPro  
       2018-06-07 10:16:36 +08:00 via Android
    和递归的思想有点像
    lihongjie0209
        3
    lihongjie0209  
       2018-06-07 10:30:32 +08:00
    所以,正确的做法是少写代码
    GeruzoniAnsasu
        4
    GeruzoniAnsasu  
       2018-06-07 13:32:19 +08:00
    当然需要
    所以测试框架本身是可测试的
    写的测试也是一步步迭代出来的,确保每一个版本的测试都是正确的
    写测试写出 bug 但被测试代码没 bug 这种事又不是没遇到过
    liuxey
        5
    liuxey  
       2018-06-07 13:38:01 +08:00
    "测试的时候没发现这个问题",这个是常见现象,不管是人工还是自动化。
    yuriko
        6
    yuriko  
       2018-06-07 14:10:20 +08:00
    测试是为了发现问题,而不是发现所有问题

    所以这个问题其实是看需要程度
    chaleaochexist
        7
    chaleaochexist  
       2018-06-07 14:13:12 +08:00
    所以自动化测试测出问题 都需要手动重现.

    在报 bug 的时候都需要详细的手动重现步骤.
    yuriko
        8
    yuriko  
       2018-06-07 14:38:08 +08:00
    @chaleaochexist 有些随机脚本跑出来的问题还真复现不了……
    swordne
        9
    swordne  
       2018-06-07 14:43:03 +08:00
    那么,测试测试脚本的脚本是不是也需要被测试?
    完了完了...
    sutra
        10
    sutra  
       2018-06-07 14:53:36 +08:00
    我用代码 1 测试代码 2,并用代码 2 测试代码 1,是不是就跳出了递归?
    billwsy
        11
    billwsy  
       2018-06-07 15:03:25 +08:00
    100%的稳定性是不可能的,不必要的,甚至是有害的。
    czzhengkw
        12
    czzhengkw  
       2018-06-07 15:07:03 +08:00
    em...

    当你真正去写的时候,你就知道,这种问题无需考虑……

    测试代码一般就是平铺直述的测试,没有那些流程语句,这么简单的东西你测它干嘛……
    moln
        13
    moln  
       2018-06-07 15:08:24 +08:00   ❤️ 1
    @sutra 代码 1 测试代码 2 时,选择性忽略了代码 2 测试代码 1 运行过程中的 bug,请问该 bug 属于代码 1 还是代码 2 ?
    ichou
        14
    ichou  
       2018-06-07 15:24:56 +08:00
    测试框架需要被测试
    测试脚本测试有什么意义? 测试出问题的时候难道一定是程序的问题么,很多时候也有测试写错了的情况吧
    所以说起来 测试脚本 和 被测应用 应该是互相测试的关系
    codermagefox
        15
    codermagefox  
       2018-06-07 15:42:56 +08:00
    如果权力需要被监督,那么用来监督权力的权利需不需要监督?
    Foolt
        16
    Foolt  
       2018-06-07 15:45:16 +08:00
    教育者必须先受教育。
    chaleaochexist
        17
    chaleaochexist  
       2018-06-07 15:56:25 +08:00
    @yuriko 一般开发都不认自动化测试跑出来的东西.
    当然你说的随机数据例外.
    yuriko
        18
    yuriko  
       2018-06-07 16:10:22 +08:00
    @chaleaochexist 我们以前都是脚本自动生成工单,不认你也得写清楚原因
    chaleaochexist
        19
    chaleaochexist  
       2018-06-07 17:22:03 +08:00
    @yuriko 这要是在我之前那家单位,因为测试脚本产生的 bug -- 也就是 close reason 是 Not a Bug.会很不好.
    jennifertxwoodma
        20
    jennifertxwoodma  
       2018-06-07 18:04:02 +08:00
    一般来说都是到测试测试脚本这一步就 end of story 了
    QK8wAUi0yXBY1pT7
        21
    QK8wAUi0yXBY1pT7  
       2018-06-07 18:22:47 +08:00
    @codermagefox 三权 /多权分立,互相监督
    luoway
        22
    luoway  
       2018-06-07 18:25:38 +08:00
    给测试脚本写测试本就过分了,测试脚本不会影响业务代码,没必要写测试。
    如果是为了让测试代码也趋近测试正确,那么就会陷入这种循环。
    而且这种循环是没有终点的,是人就会犯错,给测试脚本写测试并不能避免犯错。
    carlclone
        23
    carlclone  
       2018-06-07 19:15:39 +08:00
    细分到一个合适的点就够了
    scnace
        24
    scnace  
       2018-06-07 19:20:35 +08:00 via Android
    哦 知道你不是在黑 Go 了
    warcraft1236
        25
    warcraft1236  
       2018-06-07 19:28:05 +08:00
    所以很简单,测试脚本的逻辑足够简单,这样就基本上可以保证测试脚本出 bug 的概率很小很小。这个时候就可以认为测试脚本没有 bug
    night98
        26
    night98  
       2018-06-07 22:13:07 +08:00
    测试脚本只测试,不会再写脚本去测,哈哈。
    msg7086
        27
    msg7086  
       2018-06-08 00:16:10 +08:00
    自动化测试主要有两个作用。
    1. 找出开发过程中新代码引入的问题。
    2. 找出升级和重构过程中引入的问题。
    软件测试也没有银弹。自动化测试只是用很小的代价带来很大的收益的手段。
    达到百分之百正确的代码……连行星探测器固件都不见得能自称百分之百正确的。
    likuku
        28
    likuku  
       2018-06-08 00:32:19 +08:00
    所以才有多备份冗余和相互表决仲裁机制...参考:

    F-16 战隼战斗机 - 电传操纵 维基百科,自由的百科全书 : https://zh.wikipedia.org/wiki/F-16%E6%88%B0%E9%9A%BC%E6%88%B0%E9%AC%A5%E6%A9%9F#%E7%B7%9A%E5%82%B3%E9%A3%9B%E6%8E%A7

    "因此尽管 F-16 是负稳定,但仍使 F-16 可以飞行。而为减少因电脑故障所产生的错误,F-16 在一般时间仅启动 3 部电脑进行飞控计算作业,第四部为备份电脑,并在飞控程式中建立一套表决系统,当某一部电脑所计算的结果与另两部电脑不同时,表决系统就立即启动,跳过并关闭计算结果不同的电脑,同时命令第四部备用电脑启动,以确保操控安全性。"
    asj
        29
    asj  
       2018-06-08 13:48:50 +08:00
    TDD 流程里写了测试还没实现的时候,非要 2b 兮兮的先运行一遍测试失败,再开始实现。就是为了简单的测试测试用例本身。
    写了一段代码后原来失败的测试通过了。说明这个测试自己是和这段代码行为有关系的。
    当然未必严谨,但是基本够用了。
    yuriko
        30
    yuriko  
       2018-06-08 14:17:31 +08:00
    @chaleaochexist not a bug 不是开发说了算的,要产品签字同意
    chaleaochexist
        31
    chaleaochexist  
       2018-06-08 14:52:10 +08:00
    @yuriko 因为测试脚本产生的 bug 需要产品签字同意.

    行吧,每家公司可能规定不一样.

    不再继续讨论此话题.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5520 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:50 · PVG 16:50 · LAX 00:50 · JFK 03:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.