目录
前言
1、自我介绍☆☆☆☆☆
2、项目介绍☆☆☆☆☆
3、面试问题
3.1、功能测试
3.1.1、介绍一下你们的功能测试流程(工作流程)☆☆☆☆☆
3.1.2、介绍一下你们常用的测试用例设计方法☆☆☆☆☆
3.1.3、你在测试过程中遇到过的问题☆☆☆
3.2、兼容性测试
3.2.1、介绍一下你们怎么做兼容性测试的。☆☆☆☆☆
3.3、接口测试
3.3.1、介绍一下你们是如何做接口测试的。☆☆☆☆☆
3.4、接口自动化测试
3.4.1、说说你们怎么做接口自动化测试的☆☆☆☆☆
3.4.2、用工具做接口测试了,为什么还要使用代码来编写接口自动化脚本☆☆☆☆☆
3.5、UI自动化测试
3.5.1、说说你们是怎么做自动化测试的☆☆☆☆☆
3.6移动端app测试
3.6.1、手机app测试和web测试有什么区别么☆☆☆☆☆
3.6.2、App的专项测试做过么,简单说说☆☆☆☆☆
3.7、性能测试
3.7.1、 说一下你们是如何做压力测试的☆☆☆☆☆
3.8、其他
3.8.1、面试官问,你还有什么问题要问的么?*****
4、总结
面试就是一个销售自己的过程,要想销售成功,第一要取得客户的信任(赢得面试官对你的好感),第二要满足客户需求(要符合或部分符合对方的岗位需求)。
☆术业有专攻,不要追求面试过程中回答对所有问题,只要将我们自己所掌握的展现出来,不管面试官的问题如何,我们尽量想办法引导到我们熟悉的内容。
☆基础扎实(功能测试,项目,测试点),突出亮点(接口测试,自动化测试,性能测试及工具使用)。
(下面标注为五颗星*****的理解甚至背下来,必须熟练的脱口而出)
以XXX简历来举例(参照下面的案例,编写你的自我介绍,框架就是:我是谁,我做过什么,我能做什么,我来的目的是什么):
面试官您好,我叫XXX,来自河北XX, 18年大学毕业之后进入河北东软软件有限公司从事软件测试方面的工作,一开始从底层做起,在工作中逐渐接触和学习了软件测试相关的知识,慢慢的积累经验,也学到了很多的东西,工作了一年之后,为了得到更多的锻炼并且获得更好的发展机会,我就来到了北京,在北京望时高科科技有限公司做软件测试工程师的工作。
在工作期间我一共参与测试了多个项目,有电商类型,也有OA类型,有web端的项目,也有手机APP端的,主要是以功能测试为主,依据软件需求来编写用例,执行测试用例并提交缺陷,协助开发人员定位缺陷,开发人员修改缺陷后进行验证并做回归测试,测试完成后参与测试报告的编写。
在最近的一两个项目中,除了做功能测试,也参与做了一些接口测试,性能测试和自动化测试方面的工作。使用自动化测试工具帮助项目组将冒烟测试用例和主要功能的回归测试用例转化为脚本,节省了重复性的劳动,提高了工作效率。
通过这几年的工作我自身各方面能力有了很大的提升,工作认真细致,团队协作能力比较强,能够很快的适应新的工作岗位和工作内容。
这就是我的基本情况介绍。谢谢!(记住,要有结束语,不能等着面试官问你结束了么?)
以XXX最近一个项目举例(其他除了项目功能介绍以外,皆可以套用,包括数据):
结合项目进行介绍,参照2、项目介绍。
需求分析---测试点分析(xmind)-----编写测试计划及评审----编写测试用例及评审---执行测试用例(开发提交测试)-----发现缺陷通过禅道提交-----回归测试及bug验证(开发提测新的版本)-----测试报告编写及评审
参考:
我们常用的测试用例设计方法是等价类、边界值,场景法和错误推断等。最常用的还是等价类划分和边界值法,等价类的划分可以让我们更全面的覆盖功能需求,避免遗漏,也能让我们用尽量少的测试用例来达到最好的测试效果,一般会划分有效等价类和无效等价类,然后在每个等价类中分别提取部分取值去设计测试用例。
边界值的使用主要是因为在等价类的边界部分最容易出现问题,所以要在等价类的基础上重点使用边界值法来设计测试用例。
1. 提测质量差
问题描述:提测版本差,有些均未通过冒烟测试
如何解决:
通常需要测试的负责人去和项目经理或研发负责人沟通,要求开发人员在提交测试版本之前要进行必要的自测,提高冒烟测试通过率。
提高冒烟测试的效率,可以采用自动化测试的方法,快速验证提测版本,遇到不合格的及时打回重新提测。
Web:Web系统(B/S)主要关注软件系统在不同的浏览器下的运行状况,通常会考虑主流的浏览器如火狐,谷歌,IE,360,QQ,搜狗等浏览器,也可以同时考虑主流浏览器的不同版本,通常会依据项目客户提出的要求或者根据软件产品的用户所使用的浏览器调查数据来决定测试哪些浏览器的兼容性。我们还会考虑不同操作系统下的系统运行,比如win10,win7,mac,Linux等
APP:手机APP端的兼容性首先要分iOS端和Android端。
苹果手机主要考虑系统的版本iOS13,12,11,10等等,还要考虑手机的分辨率
安卓系统主要考虑手机的主流品牌,比如华为,小米,魅族,三星,oppo,vivo等(因为他们都对安卓的原生系统进行了定制),还会考虑手机的分辨率,720p,1080p,2k,4k等,还要考虑安卓系统的版本
要记住苹果操作系统的软件和安卓系统的软件是两个不同的软件,考虑兼容性的时候不要说要测试苹果手机和安卓手机,这两个软件需要分别去考虑。
1、我们项目的接口测试是在UI界面出来之前,开发人员编写完接口并发布之后进行的测试,主要验证接口功能的正确性和容错性(容错,对错误的访问和输入的处理),开发人员提供给我们接口的文档,我们会依据接口文档来提取测试点,一般会从功能,业务逻辑,异常和安全方面去考虑,,功能的主要是验证接口功能的正确性,业务逻辑主要是看接口之间的业务依赖关系,异常主要是从请求参数异常以及参数值的异常来考虑,必填参数不传,参数值为空,超过规定长度,不符合类型规范等,安全方面主要从对接口加密参数的解析方面考虑,编写接口测试用例。
2、接口测试我们使用的是开源工具jmeter,依照接口测试用例转化为jmeter的脚本,在jmeter的测试计划中添加线程组,线程组下添加http请求,填入我们的接口url地址,选择get或者post方法,传参数来执行接口测试,我们通过添加响应断言来判断请求返回的响应码或返回数据是否是我们预期的结果,通过断言结果来判断测试用例是否通过,再使用查看结果树或聚合报告等来查看测试用例的执行结果。
3、有的接口之间会有关联性,比如登录接口和业务接口,这种情况我们就会在登录接口执行之后,使用正则表达式提取器来获取业务接口所需要的动态参数值(一般是sessionID或者token)存到变量当中,业务接口在执行的时候可以将这个变量作为参数传入。
执行接口测试后,如果发现问题,会及时提交给开发人员进行修改,修改后再进行回归测试。
我们是使用python+reques+unittest来搭建我们的做接口自动化测试框架,使用python语言来调用第三方的类库requests来根据我们接口方法get或者post来发送接口请求,接收响应回来的数据进行适当的格式转换,再通过unittest框架提供的断言来判断响应结果是否符合我们预期,通过HTMLTextRunner的类库来输入html格式的测试报告。
用工具测试接口主要是为了测试接口的正确性和容错性,是为了发现接口中的bug,而用代码编写脚本来进行接口自动化测试主要是为了可以批量执行测试用例,可以多次重复执行,可以帮帮我们监控测试环境和线上环境的接口是否正常工作,还可以输出标准的测试报告,还可以和持续集成工具Jenkins结合,对编译后的代码进行自动化接口测试。
我们的自动化测试主要是web UI的自动化测试,主要用于冒烟测试和主要功能的回归测试或者主流浏览器的兼容性测试,作为手工测试的一种补充,提高测试效率,减少一些重复性的测试工作。
1、自动化测试通常是在UI页面完成和稳定之后开始进行的,依据功能测试用例编写自动化测试用例,主要是加入一些元素的定位说明和验证功能是否完成的操作,然后依据自动化测试用例,使用python语言转化为自动化测试脚本,驱动火狐或者谷歌等浏览器,用Selenium提供的API进行页面元素的定位,并对元素进行操作,比如点击,输入内容,下拉框选择等来模拟手工的操作。
2、我们主要使用python+Selenium+unittest来搭建我们自动化测试框架, 主要使用python调用Selenium提供API编写脚本来驱动浏览器执行指定的操作,unittest主要是方便管理并执行多个测试用例,获取最终的测试结果报告。
3、脚本编写调试完成之后,我们在每次开发提交测试版本后用它来进行冒烟测试,也会用它来做主要功能的回归测试。
4、当时的项目自动化测试还处于起步阶段,后续为了更方便的维护会对自动化的脚本进行重构和封装,会采用PO(PageObject)设计模式,对脚本进行分层,也会与持续集成工具Jenkins相结合来自动执行脚本,并生成报告,将测试结果通过邮件的方式发送给相关的人员。
从软件的功能上来说,web端和手机端没什么太大的区别,可能就是操作方式上不太一样,但手机因为功能比较多,所以会有很多的专项测试,比如弱网测试,冲突测试,安装卸载测试,推送测试,更新测试等,再有就
是手机端的兼容性因为手机的品牌,系统和分辨率更多,所以也要比web端更复杂一些,我觉得大概区别的就是这些。
做过,我们一般在完成功能测试的时候会进行专项测试,比如网络切换测试,冲突测试,安正卸载测试,推送测试,更新测试等等。
比如说网络切换测试,我们通常会在 断网-2G-3G-4G-WIFI之间进行切换,来检查我们的app程序在不同的网络环境下的表现。
1、还是以最近做过的一个项目为例吧,初种有机生活馆是一个跨境电商的平台,我们在系统测试之后准备进行性能测试,主要是做压力测试,硬件环境我们用的是阿里云的服务,CPU,内存和网络等可以满足初期的需求。
2、进行压力测试首先我们就要做需求分析,由于客户并没有给我们明确的性能指标,我们只能自己来进行分析和评估,我们做的是一个跨境电商的平台,主要销售德国进口的有机食品饮料等,面向国内特定的用户群,初期我们预估每日的访问量大概几千到一万人次,预估在线人数在2000(日活用户x20%),由此估算出并发用户数大概在500左右(2000*25%)而电商平台的主要业务集中在首页的访问,查询功能,登录并加入购物车,结算支付等功能,因此我们选取这几个重点功能进行用例的设计,依照100,200,300,400,500递增用户的方式来进行压力测试,在测试过程中监控硬件系统的资源情况(CPU,内存,磁盘,网络)。
3、目前主流进行压力测试的工具主要包括开源的Jmeter和商业软件Loadrunner,我们进行了充分的对比,最终选择jmeter进行我们的性能测试,因为它是开源的,也同样支持多用户的并发和多台机器分布式的测试。。
4、我们依据编制好的测试用例使用bodbody工具(之所以用badboy,是因为jmeter自己的录制功能不太好用)来进行脚本的录制,录制完成后对脚本进行适当修改,然后就导出为jmeter可用的脚本,然后把这个脚本导入到jmeter中,通过设置线程组的线程数来模拟多用户的操作,我们从100用户逐渐做到500用户,采用并发的形式进行压力测试,并且监控资源。我们大概做到300用户并发的时候就发生了脚本运行错误,后来经过查看结果分析,发现是数据库连接池的最大连接数设置过低,当时大概设置为100左右,发现这个问题后开发人员进行数据库的配置修改,然后重新进行了压力测试,并发用户数提高到了500左右,系统资源也基本符合预期要求。
5、测试完成后,我们会获取测试过程中的响应时间数据和一些监控的图表来进行分析,并编写测试报告。
6、这就是我们最近一个项目压力测试的情况。
通常我们要问一些和公司业务、团队或者将来自己的岗位的情况,不要和技术面试官谈论薪资信息。(不要问可能会使面试官不好回答或者难堪的问题,比如不要问技术面试官有关福利待遇等问题,不要问HR有关深入一些的技术问题,或者感觉对方没有再做某一方面的测试,比如自动化测试,还要问对方在用什么工具来做自动化测试等)
话术:
1.我来公司之前也在网上了解咱们公司的业务情况,但网上的信息毕竟有限,您能不能帮我再简单介绍一下公司做的主要项目,谢谢!
2.我想了解一下咱们公司测试团队的情况,有多少人,主要都做哪方面的测试?
3.我想了解一下,如果我能加入咱们公司,会主要做哪些方面的工作,您是我的主管领导么?
4. 如果你们在面试过程中已经谈了很长时间,面试官也对公司的业务和团队作了介绍,可以不必再提问,可以说,您介绍的已经很详细了,还是希望能有机会加入咱们公司,谢谢!
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战宝典,这个宝典也是我历经千辛万苦好不容易总结而成,希望能帮助到你!需要的可以点击下方名片免费领取。在这里祝大家都能找到心仪的工作。谢谢大家。