测试工程师复习二(2023、07、22)

1、自我介绍
答:面试官您好,我叫杨傲,今年28岁,来自江苏宿迁,18年在南京本科毕业。迄今为止我从事软件测试工作已经5年了。在这5年了,我历经了不少的项目,积攒了丰富的理论知识和从业经验,
可以独自面对大型复杂的需求的转测,期间也有带领过团队的经历。我在公司主要的工作范围是功能测试、接口测试和自动化测试,性能和安全偶尔会涉及到。市场上主流的测试工具我也
都会使用,我个人的性格是十分外向开朗的,以前也是负责对外业务联调的接口人。

2、项目流程
答:因为所在公司使用的软件生命周期模型不同,项目流程也有细微的区别,但总体来说都是大同小异的。
第一步:产品从用户那获取需求后,会拉上SE、开发、测试,有时候也会拉上运维和UI,进行prd文档的宣讲,也就是需求评审;
第二步:开发开始开发设计工作,完成后,拉上对应的人进行设计评审;
第三步:测试进行测试用例的编写工作,编写完成后同样拉人进行用例评审,评审完成回家将评审结果以邮件的方式发送给相关人员。
第四步:开发进行提测,测试首先在测试环境上进行冒烟测试。冒烟测试不通过则提测打回,通过则正式进行开始测试工作,测试完成
        后同样需将测试结果以邮件的方式发送给相关人员
第五步:进行上线工作的准备,需要在预生产环境上进行验证完毕。

3、介绍下项目
答:以前公司做的项目叫PPS广告业务平台,也叫付费展示服务,它是一个基于B/S架构,能够为用户提供程序化广告管理和交易的一个平台
以我们在地铁上看到的中国移动的橱窗广告为例,它是由三部分组成:放置广告橱窗的地铁站(运营管理平台)、提供广告橱窗的媒体公司(供给方平台),
还有提供广告的中国移动公司(需求方平台)。同样的,我们的PPS广告业务平台也是由ops运营管理平台、ssp媒体供给方平台、dsp需求方平台、dmp数据管理
平台,adx广告交易平台这几个部分组成的
下面介绍下广告主注册登录及创建广告的主流程:
第一步:登录首页注册,此时从usermgtportal模块调转到UP界面,此时user表已经记录广告主信息
第二步:返回到usermgtportal模块进行实名认证,认证信息填写完发送给thirdparty。
第三步:ops运营管理平台进行审核,审核通过后,会发送DMQ消息给thirdparty服务,thirdparty服务消耗dmq消息调用cust接口
第四步:刷新页面,进行dspportal节目也就是广告主界面,下面就可以进行创建广告了。
第五步:创建广告必须先创建计划,然后再创建任务,创建任务需要选择版位,填写出价方式及投放时间,我们也可以给广告加上定向信息,比如投放到哪些地区,
投放的目标人群等。任务创建完以后,再上传创意即可
第六步:我们创建广告的步骤都是在dspportal模块建立的,广告创建完成后,我们可以利用postman模拟广告请求,请求广告在ADX引擎上进行,最后查看广告消耗及
话单计费我们可以在billing服务上查看

4、接口自动化和UI自动化
答:首先一般公司都有固定的框架了,在pycahrm里新建有一个项目,里面存放六个包:api、config、report、run、testcase、utils
config:用来存放接口的入参信息,如url、data、headers
api:用来组件接口,发送接口请求。在这个包里需要导入request模块,需要创建一个全局的seesion对象,用来保持会话的状态和管理上下文.把各个不同的接口请求方式编写出来,然后再
从config包里获取不同接口的请求参数,最后全部封装在一个类里
report包:用来存放测试用例生成的报告
run:加载和运行所有的测试用例,在这个包里可以定义生成的报告的路径和文件名称,,同时也可以封装发送邮件的工具库函数
testcase:用来存放所有的接口测试用例,在这个包里首先要导入unittest模块和api包里的那个类,再定义一个类,用来继承unittest模块里的testcase。此模块需要在类开始时吗,
创建一个类对象,也就是api那个类的对象,从而使得所有的测试用例从头到尾用的都是同一个对象。通过这个对象就可以调用api那个类中所有的方法。最后
添加断言来判断接口的返回值是否正确
utils:工具包,用来封装发送邮件和创建报告

UI自动化做的前提条件是:
需求比较稳定,需求不会频繁变更;需求的持续周期比较长;UI控件和页面元素不会轻易改变。
但是现在大多数项目都是为了迎合市场,都是采用快速迭代的方法,页面重构的情况也时有发生。
所以做UI自动化情况一般比较少。
一般来说做UI自动化可以从用rf框架加载第三方库或者python+selenium的方式
UI自动化:在pycahrm里新建有一个项目,里面存放六个包:config、data、public、run、testcase
config:放置配置文件,config.py文件用来存放项目的绝对路径,同时也就可以存放测试用例和测试报告的路径
data:用来存放项目的入参信息,如url、账号密码等。后面需要封装一个读取ini文件的工具来读取。如果要增加数据的稳定性,也可以用excel表格的形式来存储。
public:听名字就知道它是一个公告包,里面有两个包,一个是封装页面公告函数和方法的pages包,一个是封装读取data包里面ini文件的工具包utils
pages:封装页面公共函数和方法的包,首先要创建一个基类basepage,这个基类需要有两个方法。一个设置drive驱动,通过set sdrive来传入一个drive对象从而来设置一个drive对象,把drive
对象这个类变成basepage这个类的属性。再通过get drive来获取这个drive对象本身。所以说只要继承了basepage这个基类,就可以调用这个类中的一切类方法。然后定位页面元素我们可以用
find_element这个方法来进行封装,这样就可以使得传入的参数是一个元组。这里其实用到了java中的page object这个模式,也就是所谓的po设计模式,使得页面的每一个控件都变成对象的属性
run:加载和运行所有的测试用例,并且生成和发送报告
testcase:存放所有的测试用例
report:存放报告


5、http和https的区别?
答:a.连接方式不同,端口号不同,http是80.https是443
    b.http是超文本传输协议,是明文传输;而https是具有安全性的ssl加密传输协议
    c.http是免费的,而https需要到ca申请证书,需要一定的费用
    
6、get和post的区别?
答:a.get是查询、post是提交
    b.get的请求参数放在url后面,如果参数中有账号密码可能有安全性风险。而post请求参数放在body体内的
    c.get请求速度比post请求速度快
    d.get的请求参数放在url后面,长度有限制的。
    
7.cookie和session的区别?
答:a.cookie是缓存,session是会话
    b.cookie保存在浏览器,一般只能保持20个左右;session保存在服务器上,保持个数无限,但是占据一定的服务器资源
    c.cookie容易被篡改,安全性较低。session不容易被篡改
    
8.元组和字典的区别?
答:a.都是序列类型的容器,都可以存放任意的数据类型。并且都支持切片、迭代等操作
    b.元组是不可变的,列表是可变的。因此使用python代码时,元组的安全性比列表要高

9、python2和python3的区别?
答:输入:python2:raw_input,python3:input
    打印:python2:print字符串,python3:print()函数
    除法不同
    编码格式:python2:ASCll编码,中文字符时顶端要#coding=utf-8
    整数形式:python2区分整型和长整型,python3不区分
    python2有经典类和新式类,python3都是新式类,都是默认继承object

10、jmeter如何参数化:
答:添加用户自定义参数或者添加CSV DATA CONFIG

11、jmeter如何保持会话?
答:添加cookie管理器,或者接口返回有token值的话可以在登录接口后面添加一个正则提取器。然后把登录接口返回的token值作为下一个接口的入参

12、测试计划
答:简介(目的、背景、范围)、测试准入和准出、人力资源和环境配置、测试任务与进度、风险管理、待交付的文档

13、测试总结
答:用例执行数(总共多少、通过多少)、bug的提交数(一二三四级bug各有多少个)、需求开发及测试人员、风险、交付的文档、是否可以上线的结论

14、selenium的工作原理
答:运行用python写好的脚本,向web-service发送http请求。webservice收到请求后,生成对应的js脚本。js脚本驱动浏览器做出各种相应的操作,并将结果以
http响应的方式返回给webservice,webservice再将结果返回给客户端

15、最让人难忘的bug
答:由于缓存中key值设置的不合理导致的bug
之前有一个查询部门每个月成本的接口,入参的话要传入token及部门id进行查询。
在这个接口添加缓存,并且设置部门id为缓存的key值。理论上不同的用户查询相同部门id的数据时,应该返回相同的数据,
但实际上,上级领导和部门员工查询这个接口,看到的数据是不一样的。上级领导看到的是整个部门的数据,而员工看到的只是普通员工的数据。
所以这里设计到用户权限的问题,所以说设置key值的时候,应该把useid也考虑进去。
因此在测试这个接口缓存的问题中:
作为测试要考虑接口是否有缓存,缓存失效/刷新的时间是多久,另外压测时候需要关闭缓存的开关。

16、离职原因    
答:a.公司组织架构调整,新的岗位与我的个人发展不太匹配;
    b.公司的晋升途径和薪资结构比较固定,我感觉我个人已经有了扎实的基础,所以想有更好的发展。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值