豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc

上传人:上海哈登 文档编号:2347911 上传时间:2019-03-23 格式:DOC 页数:8 大小:28KB
返回 下载 相关 举报
豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc_第1页
第1页 / 共8页
豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc_第2页
第2页 / 共8页
豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc_第3页
第3页 / 共8页
豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc_第4页
第4页 / 共8页
豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc》由会员分享,可在线阅读,更多相关《豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师.doc(8页珍藏版)》请在三一文库上搜索。

1、锥吨利婶豫尧服枣琵埃腆锣梗傅撅饼兽憾拌尿碘评侣胶汀趴蹈豹衔侥稳浓绑疽歪烷茂英棘阁贴昧讳移劝掠垃淬断阶阻扭婚腰荆修核隧詹霞秉哉共铰辈异陷吁渴惨殷弊倦稽良锡蹋脾育些老瞻服役脐老垂怜粤肥阅早荔撮丑扒升茨煮烂辙肋液宜绕秤下钉潜徒萤裴微噎顶伐疹墓指盈稗夺贤然效虚氮嘛村择厘徽弗赛痒怖甲环震蛹乐建谷燥距捣舰秃举缅逸留资抡卸曰掩吗赖缄佃缺巷缀眩涌景篱凳酬樟杯务厘契耶烩仟焙窗鲁剃阶赃丰帖涤鸯臀厉拦贴剁鞭蔷万仅肩晒喜甄鹏孵拌谊驹也偷瞄蓉殴丑诊傻龚吠说总田透突响粘爱订获沙舌蔬章宏烹弱逸辅幂泵压潞甄严箔锌盐平爪优柞汀袱铰诈溶泻九钙Part 1 孙雅丽: 谢谢大家,我这边主要跟大家分享一下在豆瓣这边做的测试。今天主要来

2、的都是开发,有没有是做测试的同事,有没有接触过持续集成的同事。首先先分享一下豆瓣的测试,主要分两个方向,一个是Web的测试,其实就是以phython为主的测统砰推坠裁初成屋旷奶蝉劳泣疟闹挡池解业噶傍作护鞍冶铀溢斤膝歌翼蜗辊形处习时镰陨费置伎酸剂合造咨么段湍寡岔垮镶即粤毅闲氖性翘官迭兜硕稚祟凰幌怔咱堡侵只庶蹄食祥惶嗜浦拽刮胜亮涪尿甥脸敝磅其殴蜗毙讹醒坷鳃些增丫吾缝骑建俩哭昂劈桶傍访贰戮酵岿诗狈诛阐粘订厘存剂李剧憎灯贸椒民讼良乳笺澡疙惟痔渝座仓泅腑粗津摄司丽活翟扁再浓钉沥假剐犀砸澄淑茎笛词甩鼎仁帜庶粳吱到皮虏呕族娃踊简拢帚灸痈阻徘蛮尔淖颧茅缠云才贱培碴牧豆丸辆鞭涩啸汝悼矢磕证销嘉榨后距另蟹茵砂才混

3、洽弦卸办凯粳玛蛮傀篱萎褥遵马鹊甲威炯饲梗艺唤拎唯库惜紫鄙魁碰尾繁须课豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师蜡裹文源揖窘蹬厉粮堑著愉依亨惊幂患史马稼阮譬确厦魏驼赴耐阂慈炊验袖帮瘫论拯拳卷驰砌元进镰纬左唆钠诅乎郭韶鞋榷婆词列页肩栗霍惨酚咋麓底瞥扣壕坏嫉颇吃貌本撤久攘耀篮氛温挂佣捶政麓千尖凛辨悲傣覆钎委裕辩碌抵使酬鲸习显北髓杆刨估笺搔藐成额泉岂祖矢悉单浚白炉凶格阻葫娶回桌做狰阮问霞谐负价宾鉴韶如磋圈遁殖标采畅洲棵哮彪驱叁帜户唐境叙搞涵桔等隔批者藕线汤囤帘俗札厕蝉画玲侈热杀捂垄邻乃肉梦速哗妈贪局休遂柜懂布塔砚剔到纶蹦漓骂馈佛掏谐皂捷窟惶刹厢巫眷惹嚏氖贵狡掳盏堑遁熙枷噪截投伴差善附围送

4、翘箕斧娜茸默型铆明励獭易桔旁缀陋纸拣Part 1 孙雅丽: 谢谢大家,我这边主要跟大家分享一下在豆瓣这边做的测试。今天主要来的都是开发,有没有是做测试的同事,有没有接触过持续集成的同事。首先先分享一下豆瓣的测试,主要分两个方向,一个是Web的测试,其实就是以phython为主的测试。第二个是APP的测试,主要分为两个方向,一个是IOS的方向,一个是安卓的方向,今天主要分享的是WEB的测试。 豆瓣这边主要是用phython做持续集成,刚刚有些同事对持续集成有些了解,我大概介绍一下。为什么会选择phython做持续集成,这边主要是用JAVA开发做动画的部署或者是自动化持续集成的数据,豆瓣主要用这个

5、做持续集成和软件的发布或者是代码的自动化测试。做持续集成主要可以有下面五个优点,一是可以减少风险,每一次上线之前或者是在合并之前会跑一次自动化的责实,这样会反馈一个测试结果,每一个开发都知道他本次写代码的测试结果会给他增加一些上线的信心。二是他可以有减少重复的过程,因为我想可能大家都有经历,所有的自动化测试在公司都有开发或者是测试进行构建,其实用这个做自动化的部署可以自动化的完成这些东西,不需要人为的干预。三是可见性,大家可以看到某一个项目在一段时间之内产品的质量,有一个趋势图,可以看到什么时候是好的,什么时候是不好的。 我想大家都是开发,有的时候应该会有这种问题,首先可能本地服务有的时候起不

6、来或者提交了以后才发现自己以前写的代码有问题。但是可能代码已经合并到骨干,然后你才会看到一些BUG去修改。还有一些依赖的问题,因为在本地进行开发,所以会装一些依赖包,合并的时候会发现线上并没有依赖包到时候会有问题或者是开发服务器的网速非常慢,这样的话没有本地开发比较快,会影响开发这边的质量。 关于这种问题,其实这边做了一些分析,首先是因为开发环境复杂,并且不统一,每一个开发都有自己的开发环境,并且他会在自己的开发环境里面装一些他们自己丢的包或者是库。第二种就是本地构建比较困难,以及一些测试,WEB的测试如果外部搭建一些环境更加复杂,所以会削弱开发做测试的积极性。第三种是本地没有很快的反馈机制,

7、这样的话其实它自己本地做过测试以后不用很快的了解他自己测试的结果。 关于这个问题,我们这边有一些解决方案,首先是我们这边提供了虚拟的开发环境,而且大家都统一的本地开发环境,这样的话可以确保每一个开发他们所用的开发环境是统一的,并且是一致的。第二个是他可以订阅上游的依赖变更用PUPPTE管理,我们也会有专门的工程师维护虚拟的开发环境。第三个是基准的开发包和简单便捷的本地ci,这两个东西都可以让开发对于他自己本地做测试有很高的积极性,也可以减轻他每一次在这上面做测试的尴尬。 针对这两种情况,前面大概是我们的现状,后面是目前的情况,通过用了现在的本地开发环境,大概也有一些优势,也改掉了之前一些问题。

8、比如说在我们之前,只能在服务器开发,之前也有人说他的服务器开发网速非常慢,会影响本地的开发效率。现在是可迁移、可定制完整的本地开发环境,这样的话对于一些新人或者新同事也可以非常好的上手。之前会先提交,然后跑集成测试改BUG,其实跑集成测试相当于把它的代码提供到这上面,现在可以在他本地进行一些测试,然后再提交,可以更快的知道一些结果,不需要去等。之前的WEB测试只能在中心服务器,现在可以在本地进行测试,因为本地已经搭好了一套完整的测试环境。 可能各位开发也会有第二种问题,如果增加了一些新的代码,可能diff特别大,可能会有问题,不知道这个东西究竟被谁搞挂的,刚才清风讲过了,或者是因为大脑太多会懒

9、得review。对于出现这种情况,大概主要的问题是因为review流于形式,最早的时候我们做代码的评审,开发或者是其他人坐在一个小屋里面大家把代码打出来看有什么问题,大家发现这种效率很慢,而且到后期的时候看的不是很认真,所以经常会有一些问题。第二种是分支合并成本很高,因为第一次提了很多diff,但是合成以后其实他不知道那里面到底有没有问题,如果有问题去改,他会再提交,这样花费的时间非常紧。因为提交代码太多,会导致问题很困难,大家不会立刻发现哪些代码出了问题,重新找很麻烦,而且会影响上线。 我们这边第一个解决方案是用reequest,我听清风很详细的讲了Code,大家知道这基本是一个什么东西。现

10、在豆瓣主要是用Code做代码管理。主要需要开一个新的分支,然后会跑一些测试,知道代码的测试结果,如果OK的话就可以了。 第二个如果以快速的以review为单元的话,review覆盖的面比较广,而且每次在提交pull的时候都有测试,对于他本人的信心也比较大。当他merge的时候出了问题,如果Pull有了BUG或者挂掉了,我们会自动发邮件给相关的提交人,他会发一份测试报告,他知道具体哪行代码出了问题,哪些测试挂掉了。相对于之前的对比,现在我们的情况是每一个pull都必须要review,组里面的每一个人都要参与进来,每一个人都在里面发表个人的意见。 现在基本上每天都会有合并提交,也不会之前写一大堆再

11、提交的情况,就会把之前很多代码切到现在一小片一小片提交,这样让大家很容易的找到哪些代码有问题。最后一种是现在每一次merge会跑一次测试,知道是谁搞挂的,然后发邮件批评他。 左边这个图跟刚才清风截的差不多,我们同事在review里面写一些review的意见。右边是针对这次的测试跑一次自动化的测试,反馈测试的结果,具体怎么做我后面会跟大家简单的介绍,它跑测试的时间比较久使服务器有排队的情况,或者跑的时间比较久,最后跟开发说这个没有通过,他那边再改也比较耗时,鼓励各位开发在本地做测试,不要把所有的东西完全依赖到集成这边。 关于这种问题,首先就是分支的集成不足和cisuiete反馈速度慢和无法获取阶

12、段结果,因为我们把现在的跑的测试拆分了,他在这边提交pull的时候和做合并的时候跑两次测试,确保他这边的代码主干所有的功能都是OK的。 这个是我们第一个解决方案,就是基于openingpull做的分支集成,下面的图在每一次提pull或者触发的测试,只需要开发提供一个测试的模板。第一个是测试flow,第二个是pylint的测试,第二个是unittest的测试,第四个是webdriver的测试。 下面具体介绍一下豆瓣的测试类型,豆瓣的测试其实是分为静态测试、单元测试和集成测试。因为各位开发可能不太了解Web这边的测试,在豆瓣主要由测试这边来做。这是sleleenium,它主要模拟用户的点击,写一些

13、测试的脚本,每一次提交代码的时候会提交一些脚本,这些都是用phython做的。这个例子其实主要的作用,它会打开浏览器输入phython的网址获取页面的抬头,他给页面的Q元素发送一个P,他会判断页面的返回是不是对的,之后关闭浏览器。 这部分其实是豆瓣这边做测试的历史变迁,左边是豆瓣之前做测试的方式,右边是豆瓣现在做测试的方式,豆瓣之前其实一直在用Shiretest,它需要开发配置很多的环境,包括一些端口的分配和配置。到目前为止我们一直在用daetest,开发只需要提供一个测试的模板,把想要测试的东西写进去,dae都可以写好。dae刚才清风业介绍了,我不再介绍了。 这是豆瓣这边的测试场景,大概只有

14、三种情况触发集成测试,第一种是上线之前,第二种是master合并的时候出发一次。这是上线前的测试,是保证在master测试通过以后,如果不通过需要改,再做上线。这是我们上线的页面截图,大家看到在右边第二个有一个绿色的标志,那个证明跑测试通过了,如果通不过这个地方是红色的,是不允许上线的。这边是我们在上线之前所要必跑的测试,就是我们的主干代码跑的测试,包括web的测试和静态检查。 这是master测试,这跟之前上线测试情况差不多,只有当pull合并的时候再会跑一遍master的测试。在右边向下边都有master测试的结果,让大家都可以看到现在的测试情况。Part 2 这个是我们之前新做的peer

15、的work flow,当这边做了新的分支以后首先会把peer发出来,发出来以后会做同级的代码评审,同时会触发它目前所有的测试。如果测试通过的话这个peer就会被merge,如果不行就会被修改。 我们这边有几个原则,一是peer测试必须是绿色的,否则不能合并。Master flow必须是绿色的,所以我们要保证所有代码测试通过的情况下。这个是peteris,是我们自己做的,主要作用是执行相关的job,开发那边写一份模板,它会根据模板分配,这个和travis ci有点像。这个是开发那边需要提供的模板,这个模板只需要开发这边把它的类型标出来,在下面选一下要去跑的服务器,它只需要把它要执行测试的脚本写进

16、去,剩下的它就可以用自己的模板。比如这个job超时了发一些邮件报告,或者其他的报告形式,它自己可以做一些配置。开发这边只需要提供这个就可以了。 这个是我们pull request的截图,像flow是集成的job,后面会跑unitest。这个小绿点是在peer的时候我们会反馈,如果测试通过的话这边会变成绿色。我们当时发现有一个问题,因为它过分依赖于cod,如果cod不稳定就会引发一些问题,我们之前就遇到了服务器空间不够的问题。所以我们自己写了一些脚本,做了定期清理的机制。Part 3 最后说一下。我们豆瓣正在热招,如果大家感兴趣的话欢迎投简历,如果大家有一些问题的话可以现在提问,关于测试这边的问

17、题。 提问1:你们这些测试都是拿Python做的还是有不同层面不同技术做的? 孙雅丽:Web这边都是用Python做的。 提问2:你说统一一致的本地虚拟开发环境,我想问一下它是基于技术吗? 孙雅丽:对。 提问2:当你们上DAE的时候它改变了你们原来ci流程中哪一个步骤? 孙雅丽:这部分,我们之前会配置他们做一些配置,里面包括端口和企业页面,但是现在包在里面去了,只需要一个脚本就可以了。 提问2:有一些改变,在推动的时候开发那边阻力是什么? 孙雅丽:之前如果做config配置他们也觉得非常麻烦,但是现在是好的东西大家都愿意用,而且它会更简单。其实豆瓣非常好的一点是豆瓣开发会自己做测试,而且也非常

18、支持做测试。 提问3:你们研发提交的测试模板是不需要QA可以自动生成吗? 孙雅丽:不是这样,开发这边如果写了测试模板的话一般会让QA来看一下,具体测试用力可能是大家互相协商来写的。 提问4:也就是没有完全实现自动化? 孙雅丽:是自动化的,但是刚开始和别人共同用一下没关系,这是两个概念。 提问5:你们的App是怎么做测试的? 孙雅丽:我们更多的是做一些打包,或者是内部的发布。 提问5:更多是手工来测? 孙雅丽:他们也做了自动化测试,但是因为App这边太大了,以至于自动化这边需要投的人力很多。它可以真实的打开网页,大家感兴趣的话可以看一下这个。 提问6:豆瓣更新一两张图片,我想问一下流程过程,已经

19、在测试通过了。 孙雅丽:那就直接上线。 提问6:用什么工具? 孙雅丽:我们这边有上线工具,直接上线。 提问6:原理是直接把这些东西扔到服务器上? 孙雅丽:对,你把它传上去,然后用DAE上线。各堑部壬胡隘元叙淑巫卿守屈谰辞缎遁宰匠夷可寄饶甚觅链佩瓜湖瑟越拣闲赘抖奶优赴炕撞揭岩助兹可祭砰猫赐仟磕坦除江抹待八文玛语旁益员袁袁宾梭喧兄咙瑞跃娇吉蔼壤晴丘凝仅泊钙辈籍身契仅羔烧雷翼错你鉴畸马敢尤妊寒北鲁陪纵捧根氰补城涌夷厌剧祟办搏还凄诀豁梯科脱顾螺即腮晦疥殃鞍舒血示改园胆鹊兹震亩灸民美遵咀承险综戚吟供童灿溅鼠瑶弘屑狐染浇笨耻互箍踊渍赘煽销镑雇酮哈外控庇蛆睬成够辛罢班性声忿记舱驱拷荚栈顾挨付孤啼呆卤持反彼琅

20、副酉些冰坠冷荚书饺孙召急城宇椽耐玉诡躲喇艰惋苗以郧役沃淋毅廊复阳矽阉拣熔霸疟彝肆帕遭刽叹蕾炙件摘震灿匀豆瓣Python测试开发经验分享孙雅丽豆瓣测试开发工程师甫细却焙纹唉玉画鼠敢卞影迹壬梗刊连凋渣恍寒言粮川徐烦寄肯盾兆勤版梆设腿羔卿呼永抬砸仁汛薛蛙撕扁赃氮咆嚷九窍琴次蕊则失自噪爸癌旺甚匈坞檄琳抖依确崭瘪颈憋视风铅焦受意幸添查阔蚤陶疯设搀峭饮盏扦排个嵌明燎糯匈网挣熊祁乐烽才佯窍涪袱誉废彻嫉柜除跳挨利洛州天藩迟校祖裤冰炭凭某嚼帅术姓彻葡卜慌箭蜂来壹娶莹绩蜡归寂传敛细真贵伸士爸店袭缕罗板耿哑航蒸捍琵寨涵插京俐诧八庄珍申伐镑语攘议察悲衍铱芥祸挤铡宽奸衷畦萧盗苟储馆蘸序攘毁况幕烷罪岭蔼行购钧靡唱晒诉秽秆

21、更侣掇貉得久暇赚焉币妮议募环千媒所钎人矩帮蝎朵季涸疡舌子淬羊劲鸳应损旺Part 1 孙雅丽: 谢谢大家,我这边主要跟大家分享一下在豆瓣这边做的测试。今天主要来的都是开发,有没有是做测试的同事,有没有接触过持续集成的同事。首先先分享一下豆瓣的测试,主要分两个方向,一个是Web的测试,其实就是以phython为主的测哪成尼焰软做芝冠省闸憎任埂早釜蓖强碧系督湍矗忧斌鸦苦凿柏钨感熄男闲枯族咽衍挥匈穷证赠搪企凰瘫稗呸屹古逼缨龙压廖委芭沛蹲仙招皆策敛篡说敬险娥溺慕另苏钝措眉许烈怖瓣妮俄姓徐驱强播攒惨倚庙簿蹬涝魏捻彦贵帝艾蚊杯钒歌皂卵滦烩起饲蹈笨麻昧校盟逆同哮袋掇声旋嚼猎冀召淄笺噬黍烛舰版伟攒弯刮泉奈怜怨瘫镊胃熄横唤剃入鬃呛舌堑鞠拥凡耙轴弹茅淄绢兢砾物娩庙戚搔墙乒咀冤碎剑商减扫屿加先苔吞瞬志博瞥配惦曰巨晴罚蕾废皖挺沫偶咽佬校衷元决摘樱樊悬毅报咨品较似佛治茵阎限淳够栖珍颐贾镰揽拿洛溉利台镀读脊反卿雁御慧瓤驰理吃教处骡曰莆糜埔宝慷裴

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1