为什么要自动化测试

STST


如果软件只考虑第一次交付的话,不考虑后面的变更维护,自动化什么的确实没用,但是这种理想情况存在的概率有多大?

H

自动化是为了发现问题?

BS

我觉得有这个目标

STST

自动化本质上就是用来让将人的精力从重复性的工作中解放出来

STST 

"自动化是为了发现问题?"这个是不可能的,发现问题的是人

HL
我觉得。。。@英界尔 说的是具体问题 而@Black Swan 和我刚才指的是可能存在的问题,毕竟 具体问题的话还是要人来发现
BS

也没办法人工智能啊

STST

自动化用来固定一组不变式,而这一组不变式是需要人脑去发掘的

我们所说的问题,说白了就是指这一组"不变式"

BS

测试里面的bug的本质不是和需求,设计不一致的地方吗,我们人不也是这样找bug的吗

HX

自动化能发现的问题有限啊

STST

发现问题的是人,而不是自动化

XM

为什么指着自动化去发现问题

STST

人发现了问题,用自动化来测试验证

HX

所以不能完全依赖自动化

BS

嗯,好多东西人如果没见过是很难相信的

WL

人判断什么可能会出问题,通过自动化来验证

WJ

根源在于层次不同,底层靠自动化也许能发现多点:其它时候自动化只能照着写好的定义跑,无法处理变化的场景

STST

自动化的用途就是起一个固定问题边界的作用,在以后的任何改动,只要破坏了这组边界,很快就能通过自动化测试感知到

WL

反正没达到对一个全新的无人接触过的需求,自动地进行测试的地步

H

感觉说得不错

STST

这样就很快告诉了开发人员,你刚才的修改"有问题",而不是,两个月以后的一次部署中,才发现改动有问题

H

理解的多深才能表达这么通俗,学习

STST

到那时候回头修改这个改动,成本极大,问题发现的越早,解决的成本越低

DH

那这个问题的范围怎么定义
如果开发修改了这个方法 发现了使用这个点的功能出了问题 那人需要去确认下哪里有问题
但如果测试对象就是这个方法 能不能就说是自动化发现了这个问题的所在呢

DH

这跟什么时候发现问题没有关系 我想说的是在某一层级 自动化测试是能准确发现问题的 除非你们觉得单元测试不是自动化测试的一环

H

自动化只能发现,与预期不符。问题都是人发现

STST 

是的,预期是"不变的",变化的是实现的过程,自动化用来约束"实现的过程",以在整个软件的生命周期里无论怎么改变,都必符合预期,用数学里的说法,就是"满足不变式"

BS

手工不也是对比预期吗

H

自动化不就是自动化手工吗

STST

手工的重复性极大,自动化就是用来替代重复性劳动的

WJ

自动化定义很广

WL

这个是有争议的,测试在很多公司地位低下,就是因为这个预期到底是不是确定的

BS 

自动化不完全是代替手工,他有他很多手工无法做的
WL

如果需求分析、设计过程已明确了这个预期,测试人员所做的只是手工去验证一下开发的实现那测试地位低也是正常的
H

测试工具为无法手工设计的,自动化是为重复手工设计的。手机打字辛苦

WL

特别是,这个手工的过程如果是只要会使用软件的人就可以来做,那就更是如此了

STST


是的,确实存在这种情况,但是很多都是因为过程有问题

如果开发写了一大堆,抛出来给你做测试,肯定很难
H

讨论问题就不要大神,高手了把
WL

楼上的英界尔兄不就是高手嘛,抽象思辨很强啊

STST

可测试性,是软件的一个非常重要的特点

H

他是,等讨论完了说

HX

手工和自动化的优劣已经有定论了,感觉没有争论的必要了

STST

无法自动化测试,意味着系统各个单元的耦合性很高,你很难模拟一个完整的测试环境而已

浮沙之上勿筑高台
原文地址:https://www.cnblogs.com/stst/p/4905908.html