设为首页 收藏本站
查看: 883|回复: 0

[经验分享] Python测试开发分享感悟

[复制链接]

尚未签到

发表于 2015-4-21 12:08:48 | 显示全部楼层 |阅读模式
今天Zoom.Quiet在公司内部分享了对Python测试开发的一些感悟,TDD以及一些开源的Python测试的库。由于一直在测试一线奋战,我被做为特邀嘉宾来到现场。由于时间关系,最后我的分享没有进行。我在这里说说对Zoom.Quiet演讲内容的一些感想吧。
  
  下面的链接是Zoom.Quiet的幻灯片:
http://py.kingsoft.net/s5/100826-PyTDD/
我打算分享的关于Python GUI测试的幻灯片:
http://py.kingsoft.net/s5/100826-PyTDD/py-gui-automation/
1. 重点强调了TDD测试先行的做法,以及新需求到来时进行迭代的测试驱动开发过程
感想:“测试先行”的确是TDD的核心,同时,TDD还有其他一些理念,其实也很值得分享,比如:

  • 编写完测试案例后,用最小化或最精简的代码,让测试案例刚刚好通过( just enough)。然后再继续补充测试案例,测试案例可能失败,继而再修改代码,让新的测试案例刚刚好通过。之后一直重复这个过程,直到你再也写不出一个测试案例,需要修改你的代码。“just enough code”,我对于这点感触比较深。一方面因为,我们几乎没有可能一次性写出完全正确让所有测试案例都通过的代码,所以必定存在这个迭代的过程。另一方面,能很好的遵循YAGNI(You Are'nt Gonna Need It),避免了过度的设计。
  • 测试案例是最好的注释,同时也是最好的文档。
  
  2. 分享了大量Python的开源测试工具或库
感想:知道了很多自己不知道的东西,很有意义。
3. “没有测试案例的持续集成不是持续集成”
感想:说的太好了。同时也要自我反省一下,一直想将测试案例加入持续构建,一直都没有去做~
4. “测试的本质是什么?”
感想:记得一本测试的书讲过,测试的本质,就是“想尽一切办法寻找软件的缺陷!”。我觉得也是有道理的,所谓的“保证软件的质量”,并不准确,至少,我可以举一个反例,进行高效的代码审查以及招聘最优秀的程序员,同样也能保证软件的质量,是不是软件测试呢?有人说自动化测试不能发现新的缺陷,只能保证已发现的BUG不再重现。其实,只是我们理解的是保证BUG不重现,归根结底,自动化测试案例一直重复的执行,还是为了找到软件的缺陷,并且,是存在发现新缺陷的可能的。所以,别想了,软件测试就是找BUG,直到你再也找不出来为止。(你找不出来并不意味着没有)。
5. “当你的代码需要使用过多的Mock对象进行测试时,意味着你的代码依赖过多,重构它吧”
    “不可测的代码,是需要使用大量的Mock对象的代码”
    “减少依赖,减少Mock对象的使用”
感想:对于这两个观点,我有一些不同意见。首先,除非你开发的是类似计算素数或是其他单一性很强的代码,你不可能不依赖到文件系统,数据库,以及网络。而一旦你的测试案例依赖于这三样东西,你的测试案例就不再属于单元测试,而是集成测试。除非你只把这部分代码交给集成测试,不然你必然需要使用Mock对象。
        当然,这里所说的Mock对象也是广义的概念。严格来说,存在诸如:Spy,Fake,Stub,Mock等具有不同意义的东西。虽然只是概念上的理解,在实际测试过程中对测试案例的理解,还是很有意义的。
        所以,我觉得,最不可测试的代码,因为是连Mock的机会都不给的代码。这样的代码我遇到过很多,特别是C++的代码,我见过的C++程序员,对依赖注入都没什么概念。依赖注入,是为了减少对具体对象的依赖,同时,也提供了更好的可测性。允许使用Mock对象进行模拟。
       关于Mock的争论其实有很多,我也只是表达一点自己的看法。我也没有那么绝对,过度使用Mock,我也是不推荐的。
6. 有人提问:“TDD对可测性的帮助有多大?”
我的回答:很大,非常大。当你写过别人代码的测试案例的时候你就会知道,假如一个家伙从来不写测试案例,他的代码测试起来会非常痛苦。假如另一个家伙自己就会写一些测试案例测试自己的代码,在写测试代码的过程中,其实就已经是在不断的重构,使得代码更具可测性的过程。所以,这样的代码的可测性会强很多。
7. 关于我自个开发的KWinAuto自动化GUI测试框架
说明:其实这个是我们内部使用的一个GUI测试框架。为了让名字更好听,我临时修改了名字,因为灵感和一些东西来自开源的PyWinAuto,所以,我索性取了个名,叫KWinAuto。这个框架主要是非常简单的处理了常见的Windows控件的操作,并且是为我们自己实际测试量身打造的这么一个库。离最终开源出来让大家分享还是有一些距离,所以,就先不放出来了,大家就从我的幻灯片里先了解一下吧。
  除了Zoom.Quiet极力推荐的《Test-driven development》外,我也推荐一本书:《xUnit Test Patterns》
  
  对于我的观点,欢迎大家拍砖~~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59224-1-1.html 上篇帖子: python读取xml文件 下篇帖子: 用Python,将 Excel 数据导出到 xml
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表