不会设计测试用例,头疼 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Orenoid
V2EX    程序员

不会设计测试用例,头疼

  •  
  •   Orenoid
    Orenoid 2020 年 10 月 10 日 3229 次点击
    这是一个创建于 1951 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在需要给项目里的一个功能写测试代码,这个功能会执行一个比较复杂的流程,输入一批数据后进行一个统计,最后算出几个数字,现在我需要校验这个统计逻辑是否正确。
    首先我在测试用例里会把这个流程也执行一遍,拿到它的计算结果(记为 A )。而我的疑问是,我要怎么去校验这个结果的正确性,我目前有两个思路:

    1. 因为测试用的数据源都是我写死的,我可以根据相应业务逻辑单独算一遍,算出正确结果(记为 B ),然后直接拿 A 、B 去比对,但是这样好像会导致测试用例的可读性和可维护性很差,因为结果 B 被我写死在测试用例里了。
    2. 或者在测试用例里,模拟这个业务流程重写一遍统计的逻辑,通过代码算出结果 C,然后再对比 A 、C,但这样大概率还是会按照原代码去实现,似乎又达不到测试的目的。

    请教下哪个比较合理,或者是否有更好的设计思路。

    7 条回复    2020-10-10 18:50:30 +08:00
    lewis89
        1
    lewis89  
       2020 年 10 月 10 日
    DIP
    renmu123
        2
    renmu123  
       2020 年 10 月 10 日 via Android   1
    我倾向于 2,可能你刚写完代码测试没什么问题,但是十个月后谁也不知道哪里会被改动,导致结果错误。可以每次测试的时候取一定数量的随机数计算对比 a 和 c,也可以将一些边界值以 1 的方法进行测试
    xuhai951753
        3
    xuhai951753  
       2020 年 10 月 10 日   1
    一般都是方案 1 吧。。多设置几组测试数据。然后提高测试行覆盖和分支覆盖就好了。
    可读性的话参考下 bdd 那种框架。
    zqz19941106
        4
    zqz19941106  
       2020 年 10 月 10 日   1
    都做 测试不怕多测
    chenluo0429
        5
    chenluo0429  
       2020 年 10 月 10 日   1
    在我看来测试用例主要还是检测在相关代码修改之后,功能是否还能满足原设计,确定算法写的没问题,最开始的测试用例都是直接相关的逻辑生成的。
    如果一定要验证新写的功能,那就只能额外去设计数据了。
    balabalaguguji
    &nbs;   6
    balabalaguguji  
       2020 年 10 月 10 日
    我最近才做了一个测试用例的视频教程: https://www.bilibili.com/video/BV1nh411974p?p=8
    如果你的是 http 接口的话,很适合,可以看下
    hardwork
        7
    hardwork  
       2020 年 10 月 10 日   1
    1 和 2 都行吧,看哪个成本小,正确率高。
    用 2 你要保证自己程序的正确性。。
    用例设计还是老理论,边界值,归类法这些。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3957 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:45 PVG 10:45 LAX 18:45 JFK 21:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86