腾讯视频系统测试工程师面试
20190612初面 - 电话面试
一、面试问题
- 看你简历里面有说到用Ui自动化,以及监控,详细介绍以下?(回答的不好,以下是后面整理的答案,但是大致就是围绕这个说的只不过当时太紧张说的太乱)
基于python + appium + unittest框架,脚本用git管理,分两个分支,master分支为全量测试用例,用于每次回归测试的手动构建,dev分支主要为核心业务的,可以定时自动构建,有报错会通过爬虫技术爬取HTML报告的fail字段是否为0,为0说明有报错,然后发带测试报告的报警邮件 - 你们目前的ui自动化具体是如何实现?存在哪些问题?如何分成分层?(回答的不好,以下是后面整理的答案,但是大致就是围绕这个说的只不过当时太紧张说的太乱)
答曰:我们现在ui自动化分为1.0版本和2.0版本,1.0版本分层不是很清晰
问曰:说说哪些不清晰?
答曰:1.0虽然也封装了基础的控件操作,但是在pageobject里面即写了页面逻辑还写了元素的定位,导致页面变动之后就会维护成本巨大
问曰:那你说说2.0版本是,你是怎么设计的?
答曰:在工具类里面再封装常用的adb命令和获取package命令,在执行前封装元素控件选择的方法,即用2个像素宽度的红线把要定位的元素框起来,这样如果又失败,截图也就能看到那块的问题,再上一层就是pageobject,pageobject只封装操作和校验逻辑,所有的定位都放到excel或者yaml文件,再往上就是testsuite,每一个测试用例调用pageobject操作和校验即可,最后就是main程序
因为我现在2.0也只是做到把工具类写好了,接下来是选择如何存储数据,还需要进一步斟酌 - 你们现在ui自动化覆盖范围大概有多少?未覆盖到的为什么呢?
60%左右,未覆盖到的主要是:活动-变更较为频繁,较为复杂的业务场景,ui自动化没办法实现的功能-涉及到验证码的功能 - import 和 from ... import ...的应用场景?
一般需要导入模块下的具体类或者类下的具体方法,需要用到from xx import xx,如果不太明确代码里面如何会调用哪些那几个类或者哪些方法,一般都直接import xx,或用from xx import * - 元组和列表的区别?
列表和元组的最大区别就是一个是可变的一个是不可变,即动态和静态
列表的存储略大于元组
列表的性能略逊与元组 - 字符串反转?
s = 'abc123'
# method 1 是当时回答的答案
rs = s[: : -1]
# method 2,先转为列表,再reverse,再用join合并
rs1 = reversed(s)
rs2 = ''.join(res1)
# method 3,先转为列表,然后反向遍历并拼接
rs3 = ''
for i in reversed(list(s)):
rs3 += i
- 接口自动化测试的力度(测到什么程度)?
目前我们主要是针对返回值比如error_code,或者特征字段,比如login的username,getclass的具体班级校验,(对于敏感的数据,如积分等与金钱挂钩的,应该要在校验一下收据库,这点当时没想到) - 逻辑思维题:nxn的正方形里面可以画多少个正方形?(答错了,当时说n^2 + n -2)
边长为1的一共有nxn个;边长为2的,在一条边上一共有n-1个,所以有(n-1)x(n-1),依次类推,最后是边长为n的一共有1个,就是最大的这个正方形,所以一共有的正方形:12+22+--------n^2《来自百度》
- 除过appium,你还了解其他的ui自动化测试工具么,为什么选择appium?
没用过,感觉appium资料丰富,同组也有其他人在用,所以就用了这个 - 'asdf123'[2:3:10],这个10代表什么意思?
代表步长,step
,当时我猜出来是步长了,但是那会一直印象中只有range(1, 10, 2)中的2才是步长,字符串切片好像没有步长这一说,所以就没有肯定
>> s = '1234567'
>> s[1: : 2]
# 输出1~最后一个字符,每隔一个字符取一个
'246'
- 性能测试你有了解多少?
性能这这块了解不多,掌握基本的性能基础,本人专长于基于python的相关自动化实现 - 你最擅长的是那一块?
python自动化和服务器相关 - 为什么你对Linux比较熟悉,是日常工作中使用到么?
是的,测试环境部署(这点当时没有说)、跑定时任务的脚本的crontab等都用到了 - 为什么你们公司用一台mac作为ui自动化的测试平台
在本机上跑脚本肯定是不现实的,所以我们这边专门用了一台mac机作为测试平台,后期也准备实现iOS的ui自动化 - 临上线前项目突然增加新需求,你作为一个TL如何处理?
答曰:充分评估风险,和对应的负责人阐明加入后的风险,如果一定要加,那就把握重点测试项
追问:除过这两点还有其他的么?
答曰:尽量协调更多人力来测试
追问:有什么技术手段实现么?
答曰:如果是接口的是不是可以考虑复用现有的接口脚本,或现成的自动化来加速测试(感觉回答的还是不到位)
20190613二面 - 电话面试
一、面试问题
- 为什么选择appium,框架选型的原因?
appium目前资料最多,我们组也有人也用这个
当然市面上也有其他类型的ui自动化框架,比如uiautomator和网易的airtest,但是举一个不恰当的例子,就比如考驾照有C1,C2但是大家考的最多的还是C1 - fiddler你通常使用的那些功能?
打断点,请求之前bpu,请求之后bpafter
模拟弱网
拷贝接口session并用作和开发交流或者提bug附件
过滤不必要的接口
发简单的接口请求 - 作为TL,多人协作你一般是如何展开的?没get到他的点,后来才知道其实他想听到我如何和别人合作
- H5一般都是如何开展测试?
需求分析
用例编写
接口,用postman,因为我们这边一般只有活动是H5,周期就1~2天,所以没有时间写脚本
功能测试
上线和线上验证
二面,这会能记起的也就这么多,有趣的是在两个人聊天中她说她有从昨天的面试官那边了解我的情况,然后我就连忙解释到,昨天确实太紧张了,很多东西都没表达,专门请了一下午假在家等着,本来以为过不了的,结果最后居然过了,真心的感谢那个小姐姐,但是今天就很放松,个人觉得发挥的还不错
后来她又让我问她问题,我其中问的一个问题是:您对我今天的印象如何?
答曰:感觉你表达和思路挺清晰的,但是对有些问题真的不太深入,比如我问题拿到H5测试的题,你回答的就很简单...
我说:其实很多时候像我们这种小作坊是和你们这种大厂没办法比的,你们有高度封装的工具、平台,而我们目前还很原始,但是这并不阻碍我的个人视线,我有比较扎实的Python、服务器和测试相关的基础,还有比较强的学习能力,所以我觉得我能胜任!
二、一点感想
面腾讯之前有专门做过相关的功课,有一篇现在印象较深的一点是说腾讯的技术面试很重视基础和解题思路,现在回想确实如此,虽没有问及复杂的算法实现或是比较抽象的装饰器亦或是迭代器生成器之类的问题(也许他们就想招一个会写脚本的),但诸如
list
和tuple
的差别、import
和from...import ...
应用之处以及字符串处理等诸多Python最基础却使用最频繁的点都有问到了。另外,说到解题思路这块,说实在的其实一面当天并不是很理想,但现在想想能过,可能的原因除过有比较扎实的Python基础外,还有就是对日常的点滴积累的表达,其实那几天面试的好多题都在我的印象笔记中记录过,比如字符串反转,是在廖雪峰Python中看到的,当时就觉得特别优雅,于是就记录了下来,再比如list
和tuple
的差别,景宵pyhton专栏第七节讲的就是这个,再比如找出列表中两数之和等于目标值的那两个数的下标
,刷LeetCode第一个题是就遇到它,还有自动化的分层设计理念,则是看了无数遍Github上的一个开源框架python-appium和茹炳晟老师的测试专栏,才沉淀下来的结果...
so,机会是留给有准备的人的,没错~
OK,腾讯篇完
~
~
~
不积跬步,无以至千里
网友评论