速来!内部资料分享,软件测试面试一指禅,建议收藏

254 篇文章 8 订阅
190 篇文章 3 订阅

大家好,我是小dao,今天整理了软件测试面试题,包括软件测试理论、APP测试、Linux、Mysql数据库、WEB+网络、接口测试、性能测试、自动化测试、团队管理、随机应变能力等题。希望能对你有帮助!

这里赠送一套软件测试相关资源:

软件测试相关工具
软件测试练习集
深入自动化测试
Python学习手册
Python编码规范
大厂面试题和简历模板
关注我公众号:【软件测试小dao】即可免费领取!
交流群:644956177

测试面试一指禅-V2.0

整理汇总软件测试常见问题,一共十大点,共79道常见面试题,本文有点长,建议收藏阅读!

一、软件测试理论

1、软件项目的研发流程是怎样的?

流程图如下:
在这里插入图片描述
2、软件的生命周期

需求->设计->编码->测试->维护->升级->废弃

3、您之前所在的项目组采用怎样的开发模式

我们公司的开发模式属于V模型进行开发,但是会融入更多的迭代元素,开发模式比较强调阶段性的工作成果,例如在进行开发设计之前必须通过需求评审或者需求澄清。 敏捷开发模式,则抛弃了繁琐的工作流程和文档,倡导个人发挥的价值,更加强调在一 种动态变化环境下进行开发,简单说就是迭代快,版本更新快,小步快跑的方式,有时候 一天多个版本,我做过的项目曾经连续三个月一天一个版本。

4、你所在项目的组织架构是怎样的?
在这里插入图片描述
5、主流的项目管理工具有哪些?

一般公司会使用第三方公司开发的系统,比如:禅道、Jira、QC、Mantis、Bugzilla、 Bugfree 规模大的公司可能会自己开发系统,比如:华为。

6、基线版本与定制版本的关系?

软件公司开发软件,一般存在以下几种常见:

1)开发一个版本服务所有客户,比如微信、支付宝等;这种就是纯做产品的公司, 产品的需求规划主要来自于公司项目组的规划;

2)纯做定制项目,完全根据客户的需求来做项目,客户要什么就做什么;这种的 缺点在于定制的项目越多,开发、维护成本就越高;

3)先做一个基线版本,再在基线的基础上去按照不同客户的需求做适当定制,尽可能地复用基线的代码,基线越强定制就越少; 基线:在一些大型公司里,会先开发一个产品的基线版本,基线版本中具有大部分客户 的大部分需求; 定制版本:针对不同客户的需求差异,在基线版本上定制,用最小的定制工作量来满足 客户的需求;在一个基线版本上会同时存在多个定制项目;

7、你们公司的测试流程是怎么样的?

我们公司在启动一个新项目后会成立相应的项目组,包括项目经理、产品经理、开发和测试工程师等角色,产品经理负责给各角色讲解需求,一般会给一个需要文档。作为测试,我 们要分析、理解需求,根据项目需求来写测试计划,用思维导图工具提取测试点和编写 测试用例。当开发把版本开发完成后,会转给我们测试,我们会先搭建测试环境,然后 执行测试,对发现的问题分析、提单,最后编写测试报告。 详细的流程图如下:
在这里插入图片描述
8、一名测试人员所具备的素质?其中有哪些是您认为最重要的

我觉得作为测试人员,承担的是找出软件存在的问题,确保软件产品在发布之前达到一 定的质量目标的职责,因此,他首先必须有很强的责任感,对软件质量负责,对客户的质量期望负责。有强烈责任感的测试人员,才不会出现大面积的漏测,才可能坚持重复 地进行回归测试,持续全面地进行测试。 其他的素质也很重要,例如较强的沟通能力,刨根问底,不轻易放弃的精神等。

9、你觉得你做测试,有什么优势?(你不是本专业的,你觉得你做测试有什么优势?或者是问你怎么缩小跟其他人的差距?)

可以围绕测试工程师所需的素质来展开回答。

10、软件测试的目的是什么?

软件测试的目的是发现软件存在的缺陷,为人们建立起对软件的信心。软件能否发布测试的充分性和发现bug数量都是重要的参考数据。在项目组里测试人员提供的权限 相关信息,让开发人员能及时更重,从而提高产品质量,也为项目经理判断软件质量标 准提供参考信息,知道软件的当前质量状态是否满足发布的要求。一句话:发现软件的Bug,评估软件的质量,确保软件满足公司对质量的要求。

11、什么是黑盒测试?

把软件看成一个黑盒子,不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明。

12、什么是白盒测试与黑盒测试?你的过往经历中的测试是哪一 种?

白盒测试:白盒测试是代码级别的测试,主要测试代码的逻辑、代码之间的调用等等,测试依据是详细设计(类图、状态图、流程图等等)。

黑盒测试:黑盒测试是系统级别的测试,它不关注代码的具体实现,关注的是系统的功能实现是否满足需求,测试依据:《XX系统需求规格说明书》、《UI设计图》、《接口文档》 对比:白盒测试不能发现功能方面的问题,黑盒测试不能发现代码层面的问题,所以两种方法是互补的,不能相互取代。

13、测试启动和结束的标准

测试启动的条件:版本基本稳定,测试用例、测试代码准备完成,测试环境搭建完毕,预测试通过。

测试结束的条件:所有测试用例全部执行,版本稳定,缺陷遗留率达到预定质量目标。

14、测试用例的设计一般采用哪些方法?或者换一个提问方式,黑盒测试技术设计测试方法有哪些?

参考答案:一般常用的测试用例设计方法有等价类,边界值分析方法,因果图法,场景法,错误推测法。

15、测试用例包含几部分

测试用例版本号、功能模块名称、用例ID、用例重要级别(高,中,低)、用例预置条件、操作步骤、预期结果、测试用例执行结果、测试用例执行日期

16、测试用例的优先级

参考答案:每个公司定义的标准不一样,我们公司一般分为高、中、低。 一般情况下,可参考需求的优先级来确定,高优先级的需求对应的用例应该是高优先级的。

17、你写用例的时候,怎么确保用例的覆盖度?

1)首先要分析清楚需求去提取测试点,针对需求中描述不清楚的情况,需要找相关的人员确定清楚;

2)在设计用例的时候,根据等价类、边界值、错误推测、场景分析等方法编写用例;

3)编写好的用例在小组内评审,让小组成员充分提问,最终的用例是经过大家评审后的结果;

4)测试经验;

18、测试用例执行结果

参考答案:每个公司用的缺陷管理工具不尽相同,一般测试用例执行结果有:通过Passed、失败Failed、阻塞Blocked

19、你在执行的过程中有没有遇到过发现用例有缺失或者遗漏的情况?这种情况你们怎么处理?

有遇到过,这种情况一般我会先补充用例测试,保证测试的充分性;同时我会记录问题反馈给写用例的同事,希望后续减少类似的失误。

20、Bug的描述包含哪几部分?

参考答案:

Bug所属产品、所属功能模块、影响的版本号、级别 (提示,一般,严重,致命)、类型 (代码错误,设计优化,设计缺陷,性能问题,测试脚本)、标题、重现步骤、预期结果、实际结果、附件(后台日志 debug.log 或者截图)

21、Bug的等级是怎么定义的?

参考答案:

每个公司定义的bug级别标准都不一样,我们公司把bug分为:提示,一般,严重,致命四类。

提示:比如用户使用上比较繁琐、不够优化等;

一般:比如提示消息不够准确、清晰;

严重:比如主要功能无法正常使用,比如说一个电商平台支付流程有问题;

致命:比如程序无法启动、无法登陆等。

22、Bug的生命周期是什么?

新建(测试)—>指派(测试指派给开发)—>解决(开发)—>验证(测试)—>激活(没解决就激活)/关闭(已解决就关闭)

23、你怎么判断一个问题是属于前端还是后端的?或者是属于app的?

1)可以通过fiddler/F12抓包分析前后端的交互,如果前端请求参数不对则是前端的问题,如果前端请求参数正确但后端响应不对则是后端的问题;

2)也可以通过看日志,根据日志中的提示信息来判断是前端还是后端的日志;

3)根据经验判断,常见的问题类型如下:

前端问题:界面显示、字体、对齐、展示消息等;

后端问题:数据问题、业务逻辑问题等。

24、你提的问题开发不认为是问题,你会怎么处理?

首先我会根据需求文档来跟开发沟通,说明我认为是问题的理由,如果开发还是不认可,那我会找产品经理去确认这是否属于Bug。

25、如果版本中做了超出客户需求的功能,你认为是bug吗?

严格意义上算是bug,比如一个产品卖给几个客户的场景,可能A客户的需求对B客户就是不需要的,这种情况我们可以考虑在页面上屏蔽掉多余的功能

26、你们在测试中发现的所有问题都需要解决吗?

不是,比如:有的问题出现的概率很低、它的影响有限同时解决难度较大,这种问题可以考虑遗留;或者是那种只出现了1次,但后面无法复现的问题;在软件版本发布的时候,会考虑把版本的遗留问题放在版本的发布文档(release notes)中。

27、你在xx项目中,有没有印象深刻的bug?是怎么解决的?

类似问题提前准备好,想一个有一定技术含量,不容易发现的bug来讲。

28、如果版本明天就要上线,你今天晚上测试发现一个严重的Bug, 你会怎么处理?

首先我会向我的领导汇报这个问题,从技术角度分析问题的影响程度,由领导决策怎么处理;如果需要加班处理,那会加班解决问题,最终保障顺利的上线。

29、一个产品在发布前经过了充分的测试,但上线后还是发现有问题,你觉得出现这种情况的可能原因是什么,你作为测试人员要怎么避免类似情况?

可能原因是生产环境与测试环境在数据、终端类型、操作系统、网络环境等等各个方面 存在一些差异,导致在测试环境上发现不了的问题在生产环境上暴露出来了; 规避的方案就是在测试中,要尽可能地考虑到生产环境上存在的各种场景,让测试环境 尽可能地模拟生产环境,这样测试的结论才会更加准确。

30、web和app的兼容性怎么测试?(有的时候会问,我有一个app要做兼容性,你出一个兼容性测试方案?)

web 系统主要考虑对不同浏览器和操作系统的兼容性,app 主要考虑对不同操作系统以及不同设备(不同的设备的屏幕尺寸、屏幕类型、分辨率等都可能对app的ui展示产生影响);

web 系统要兼容不同的浏览器,主要要考虑不同内核的浏览器的兼容性:

1)Webkit 内核的浏览器:谷歌、QQ 浏览器、360极速浏览器

2)Gecko内核的浏览器:火狐

3)Trident 内核的浏览器:IE

如果需求文档中明确了要兼容哪些版本的浏览器,就按照需求文档对应的来测试;如果需求文档中没有明确要兼容哪些浏览器,可以借助网络统计数据来看当前客户主要使用的版本是哪几个,如果网上找不到相关的统计,那可以测试最近的3个版本;

app 要兼容不同的操作系统、设备类型等,怎么考虑?可以借助第三方的统计数据来确定测试范围,比如如下统计反映绝大部分iPhone的用户都在使用iOS12和iOS13版本系统,那这两个版本应该是我们测试的重点;iOS系统的兼容性相对简单,Android 系统因为厂家定制太多,碎片化严重,所以兼容性测试的 工作量很大;可以每个厂家选择几款销量高的设备来做测试。在这里插入图片描述
测试设备的来源:公司采购、员工自己的手机、租设备;也可以考虑购买第三方的兼容性测试服务(WeTest等)

31、报表测试怎么测?

参考答案:

报表测试需要在理解业务的基础上进行,例如需要知道报表的命名,专业术语是否贴合 用户的语言,是否能被用户理解,报表中展示的数据是否是用户最关心的数据,报表展示的方式是否符合用户的习惯等; 报表测试还需要注意一些细节问题的处理,例如,数据的四舍五入,单位转换,日期格式等。报表测试也可能需要进行性能测试,要着重检查报表在大数据量的时候显示速度, 展示方式是否存在问题。

报表统计的原理就是从数据库的各个表中去抽取数据,处理后展示在页面上,所以在测 试中,需要去操作其它模块/部件/系统来生成测试数据,再在报表上查看数据是否准确。 报表中的数据问题,很多时候是各个角色的人对字段的理解不一致。

32、如何制定测试计划?

参考答案:

软件测试计划是对测试过程的一个整体上的设计;通过手机项目和产品的信息,对测试范围,测试风险进行分析,对测试用例,工作量,资源和时间等进行估算,对测试采用测试策略,方法,环境,资源,进度等做出合理的安排。每个公司用的测试计划的模板,测试计划的要点一般包括:

确定测试范围、制定测试策略、测试资源安排、 进度安排、风险及策略

33、测试策略(测试方案)包含哪些?

参考答案:

测试策略也叫作测试方案,简单点说就是描述目前在进行哪一阶段的测试(单元测试、集成测试、系统测试)以及每个阶段内在进行的测试种类(功能测试,安全测试,兼容 测试,回归测试)。

测试策略的制定主要包含三部分:

  1. 确定测试范围

  2. 测试过程中要使用的测试技术和测试工具;

  3. 确定测试完成的标准,比如,测试用例全部执行,没有M级别以上的问题单等。

34、系统测试的测试策略有哪些?系统测试范围?

参考答案:

16 种测试策略:功能测试、性能测试、压力测试、容量测试、安全性测试、GUI测试、可用性测试、安装测试、配置测试、异常测试、备份测试、健壮性测试、文档测试、在线帮助测试、网络测试,稳定性测试在:正常情况下测试;非正常情况下测试;边界测试;非法,极端测试

35、软件测试的类型有哪些?

功能测试、界面测试、安全测试、本地化/国际化测试、数据库测试、可靠性测试、集成测试、兼容性测试、自动化测试、性能测试、回归测试

36、测试策略/方案与测试计划区别?

参考答案:

测试计划是管理层面的,从组织管理的角度规划测试活动,而测试方案是技术层面的,从技术的角度规划测试活动。

总而言之,测试方案需要在测试计划的指导下进行,测试计划提出“做什么”,而测试方案明确“怎么做”

37、测试报告包括哪些?

每个公司使用的测试报告模板不同,缺陷测试报告要点一般包括

  1. 项目概述

背景介绍,测试目的,测试范围项目经理,需求,开发,测试等相关负责人名字

  1. 数据统计

人力投入:需求分析,设计测试用例,执行测试需要多少人天;

用例覆盖统计:用例总数,通过用例数,未通过用例数,未测试用例数,通过率;

问题单从不同维度统计:按照bug严重级别统计,按bug类型分类统计,按bug状态分类统计等等

  1. 测试风险,规避措施,以及优先级

测试用例覆盖不全

测试人力不足导致测试进度滞后

测试人员经验不足导致测试结果分析不全面

4)对被测试版本的一个评估给予测试结论:通过/不通过

5)最后,还可以附上当前版本问题单列表链接,方便查看

38、测试过程中需要对两个文件进行比较,您会怎么进行测试?

参考答案:

在测试过程中,经常需要对测试结果或者某些文件进行对比,以便检查文件之间的差异,从而判断测试是否通过。这时,可以利用Beyond Compare比较工具来帮助测试人员准确快速地完成这样的测试任务。利用beyond compare比较工具,比人工查找和比较要快很多,而且准确得多,因此能大大降低测试人员的工作量以及测试时间,从而提高测试工作效率。

39、软件验收测试包括哪些?

参考答案:

正式验收测试、非正式验收测试(α测试和β测试)

二、App测试

1、b/s与c/s系统的有哪些区别?

1)b/s是基于浏览器/服务器的架构,c/s 是基于客户端/服务器的架构;

2)b/s 的核心业务逻辑都是在服务器端完成的,c/s业务逻辑可以部分放在客户端完成,可以更好地利用本地的资源;

3)c/s用户体验相对更好,但后期维护成本会更高,b/s升级维护只需要升级服务器端即可,c/s升级一般要同时升级服务器端和app客户端;

2、web测试和app测试有哪些相同点与不同点?

相同点:就功能测试而言,web测试和app测试是没有区别的,测试的依据都是需求规格说明书/SRS/FRS,测试方法都是一样的。

不同点:

1)兼容性测试不同,web 系统的兼容性测试要测对不同浏览器以及操作系统的兼容,app 的兼容性要测试对不同操作系统、设备类型等的兼容;

2)app测试有一些针对app运行特点的专项测试,比如:安装、卸载、升级测试(使用豌豆荚、爱思助手等工具);弱网测试(QNET、360 WiFi、Fiddler);耗电量(GT、Perfdog);交互测试。

配置 fiddler 模拟弱网的方法:

(1)在fiddler的Rules->Customize Rules下设置如下参数为true表示限速

(2)设置发送和接收的延迟时间,通过调整延迟时间来模拟网速,单位是ms

(3)勾选Performance->Simulate Modem Speeds选项,表示启用限速;

(4)把手机和安装 Fiddler的电脑连接在同一个wi-fi,设置手机的代理,把fiddler的ip和端口作为手机的代码ip和端口。

3、iOS app与Android app的区别?

1)开发语言:iOS app用object-c或者swift开发,对应的是iOS开发工程师;android app用java开发,对应的是Android开发工程师;

2)上架的市场:iOS app是统一上架到苹果的AppStore,苹果设备只要没有越狱,只能从AppStore上下载app安装;Android app是上架到各个手机厂家的应用市场上,比如谷歌的Google Play,华为的App Galary等等; 测试iOS app的安装方法:一般会把测试手机的UDID获取到,写入到app中再打包,这时得到的app就可以在测试设备上安装;通过助手工具安装。

3)在做兼容性测试时,Android app会更复杂;

  1. iOS是一个相对封闭的操作系统,是苹果基于unix内核深度定制的一个移动设备操作系统;Android是一个开放的操作系统,谷歌会定期发布基线版本,各个手机厂家会 在基线版本的基础上再进行本地化定制,结果就导致Android系统出现很多分支(碎片化),导致Android App对不同分支版本的适配难度会更大;

  2. AppStore对应用的审核会更严格,所以iOS APP会相对更安全;

  3. Android App的包后缀是.apk,iOS App的包后缀是.ipa。

4、常用的Android adb命令

adb devices:查看与电脑连接的 Android 设备,状态有三种:device 表示连接正常, offline 表示离线,unauthorized 表示未授权

adb shell:切换到具体的设备,切换进去后可以输 linux 的常用命令,如果有多个设 备,可以用参数-s 来指定切换到哪一个设备

abd install xx.apk:安装 apk 到连接的设备

adb uninstall 包名:卸载指定的

apk adb shell pm list package:查询所有的apk的包名

adb shell dumpsys activity | find “mFocusedActivity”:查看当前打开的app的包名,先在手机上打开app,再执行这个adb命令,返回的信息就是当前打开的app的信息

adb push本地文件路径 目的文件路径:把本地pc上的文件上传到Android设备上

adb pull 远端文件路径 本地文件路径:把Android设备上的文件取到本地pc上

adb logcat:把缓存的日志打到屏幕上,也可以用>重定向到文件

adb shell monkey

举例:

adb shell monkey -p com.xy.android.junit -s 500 --ignore-crashes – ignore-timeouts --monitor-native-crashes -v -v 10000 >E:\monkey_log\java_monkey_log.txt

三、Linux

1、你们的测试环境是怎么搭建的?

我们公司的软件是用Java开发的,每次转测时开发会提供安装包,我搭建测试环境主要有以下几步:

  1. 安装CentOS 操作系统;

  2. 安装JDK、MySQ 数据库、Tomcat服务器、Nginx等基础软件;

  3. 部署应用到Tomcat服务器,配置应用连接数据库的用户名、密码等;

  4. 导入数据库和表,主要是系统的初始数据;

  5. 配置负载均衡Nginx、keepalived等;

  6. 完成环境的搭建,开始测试。

2、Linux常用命令参考,详情参考“软件测试之Linux经典面试题”

四、MySQL数据库

1、Mysql相关命令

1)进入mysql:mysql -uroot -p

2)查看当前所有数据库:mysql> show databases;

3)切换到具体的某一个数据库:mysql>use ze ntao;

4)查看某数据库 具体有哪些表:mysql> show tables;

5)查看具体某一张表具体信息:mysql> select * from zt_user;

6)启动/关闭mysql:service mysqld start/stop

2、 MySQL下的增,删,改,查(面试问到Oracle的增删改查时候答案是一样的)

1)增加

第一种用法:insert into 表名(列) values(对应的列值) ;

例子:insert into test(id,name,age) values(1,‘zhangsan’,20);

第二种用法:insert into 表名 values(所有列值) ;

例子:insert into test values(1,‘zhangsan’,20);

2)删除

delete

第一种用法:delete from 表名 where 条件 -->删除满足条件的记录

例子:delete from test where id = 1;

第二种用法:delete from 表名 ; -->删除所有记录

commit; -->提交数据

rollback; -->回滚数据

truncate

truncate table 表名

删除表中的某个字段

alter table 表名 drop 字段

drop

drop table 表名

3)修改

第一种用法: update 表 set 列=新的值 [where 条件] —> 更新满足条件的记录

例子:update test set name=‘zhangsan2’ where name=‘zhangsan’

第二种用法: update 表 set 列=新的值 —> 更新所有的数据

例子:update test set age =20;

4)查询

基本查询

select 列 from 表名

select * from 表名 —> 所有列

复杂查询

select * from 表名 where 筛选条件 group by 字段 having 字句 orderby 字段

group by 字段 —> 按照指定的字段进行分组

having 字句 —> 对分组后的结果进行筛选输出

order by 查询结果需要排序

多表的联结查询

内联结、自联结、外联结

3、delete/truncate/drop区别以及优缺点

delete:delete方式可以恢复删除的数据,但是提交了,就没办法了。delete删除的时候,会记录日志,删除会很慢很慢。

truncate:删除所有数据,不会影响表结构,不会记录日志,数据不能恢复,删除很快。

drop:删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复,删除很快。

4、查询结果去重

select distinct 列 from 表名

五、WEB+网络

1、http代码表,常考题目:

404 找不到资源

500 服务器内部错误,无法完成请求

501 服务器不支持请求的功能,无法完成请求

502 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求

301 永久移动。请求的资源已被永久地移动到新 URI,返回信息会包括新的 URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI。

200 成功。

2、TCP/IP四层网络模型

链路层、网络层、传输层、应用层。

3、TCP/UDP区别?

TCP:可靠传输协议,需要三次握手连接,有确认重传机制,特点是可靠、准确、有拥塞控制,缺点就是比较慢,传输量比较小,适用于升级、下载;一句话:TCP 是可靠的传输。

UDP:不可靠传输协议,面向非连接的协议,优点是传输量大、速度快,缺点是已丢失、没有拥塞控制,适用于直播、视频等。一句话:UDP是不可靠的传输。

4、html css js 运行的先后顺序是什么?

界面加载的时候先加载html再加载css最后加载 js

5、session和cookie的区别是什么?

1)session存放在服务器端用来校验客户端的身份

2)cookie存放在客户端,每次从客户端往服务器发请求时,将cookie带到服务器端,用来校验客户端的身份

六、接口测试

1、怎么用JMeter测试接口?

如果使用JMeter进行接口测试:

  1. 测试前了解需求,根据接口规格说明书梳理业务;

  2. 接下来设计用例,分析接口的入参和出参,分清楚有哪些有效输入和无效输入,设计用例,(原则:用最少的用例覆盖所有有效输入,针对每一个无效的输入设计一个测试用例,如果有错误码没有覆盖到,还要对每个未覆盖的错误码分别设计一个 用例);

  3. 准备测试数据,比如:测试所需的账号、密码、key等信息;

  4. 打开JMeter,创建一个线程组,根据接口类型,填写好对应的接口地址和请求方式等;

  5. 参数化配置,添加配置元件CSV Data Set Config,定义变量,并准备CSV格式的数据,变量的引用用${变量名}的格式;

  6. 添加断言来判断测试结果的正确性,用得最多的是响应断言;

  7. 添加监听器,比如查看结果树,对测试结果进行监听;

  8. 运行测试用例;

  9. 查看监听器结果,来判断用例的执行是成功还是失败,针对失败的用例,分析其失败原因;

  10. 针对测试中发现的问题,给开发提单,直到问题最终解决。

  11. 最后输出测试报告。

2、怎么用Postman测试接口?

如果使用 Postman 测试接口:

其中 1,2,3 点相同,工具使用方面则比JMeter更简单,工具的主要的步骤是添加对应的请求、填写主机URL及入参、添加测试套、运行测试套、分析结果出报告。

3、在JMeter上如何把上一个请求的结果作为下一个请求的参数?

使用正则表达式提取器提取上一个请求的响应中的信息,保存一个引用名称比如abc,在下一个请求的参数中,用${abc}的格式来引用提取的结果。

常用的正则表达式格式:(.+?),其中.表示匹配任意字符串,+表示只匹配一次,?表示匹配到就停下来。

七、性能测试

1、性能测试怎么测?

一般是我们在功能测试完成最后两三天时间测试性能。

1)先是分析需求计算出并发数,TPS,响应时间和CPU,内存,硬盘和网络IO这些指标。

2)制定测试方案,主要包括环境,计划和具体测试那些场景(如可靠性,并发,负载, 压力测试等)

3)根据场景用Badboy录制脚本,导出为JMeter工具支持的脚本。

4)用JMeter工具打开脚本,进行脚本调试,加一些断言,监听器,参数化等。

5)接下来执行性能测试,然后主要收集监听器和收集服务器CPU,内存,硬盘和网络IO等分析是否满足需求,如果满足就输出性能测试报告。

6)如果指标不能满足,反馈给开发进行调优。调优后继续测试,一直到满足需求后最终输出测试报告。

八、自动化测试

1、Python怎么定义一个函数?

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  1. 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。

  2. 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  3. 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  4. 函数内容以冒号起始,并且缩进。

  5. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None

2、Python切片

list1=[sa,fe,faw,ve,eta,t]

list1[2:5]

list1[2:]

list1[:]

list1[20:]

得到的是[ ]

3、Python上用过什么库/模块?

webdriver:定位和操作元素

time:设置等待时间

ActionChains:动作链,完成鼠标的相关操作

Keys:键盘的相关操作

WebDriverWait:设置显式等待

Expect_Conditions:针对单个元素,设置显式等待的场景

PIL:截图

Select:下拉选择框的操作

unittest python:自带的单元测试框架

HTMLTestRunner:运行脚本,生成报告

ddt:实现数据驱动测试,行为和数据分离

4、你做过自动化测试吗?

我在上一份工作中,公司去年下半年也开始规划做Web自动化,采用Python作为开发 语言,通过Selenium WebDriver定位和操作页面元素,自动化框架用的是unittest。我主要负责写测试脚本。

假设一个测试团队有 5 个人:1个资深(测试经理)+2~3个中级(自动化+手动)+1个初级(手动)。

5、使用什么工具进行的自动化测试

使用的工具是Selenium(Web自动化工具)

6、用的什么编程语言

用的Python

7、Selenium用的是哪个版本?Pytho 用的是哪个版本?

8、Selenium的工作原理?

1)对 html元素定位

2)模拟对第一步定位到的元素进行点击、输入、选择等操作一句话:定位元素,操作元素。

9、元素定位方法有哪些?

要点:8种定位方法

  1. 根据元素的属性值定位,比如id、name、class、标签名、链接文字和部分链接文字;

  2. 根据CSS选择器定位;

  3. 根据XPath定位。

10、子页面里的元素怎么定位?

先切换到框架里,然后再定位,用switch_to_frame函数根据子页面id或name,切换到子页面;定位完了如果要再定位主页面的元素,要用switch_to_default_content函数先返回主页面。

11、怎么定位alert弹窗?或者这样问:怎么处理JS原生窗口?

要点:主要涉及点击弹窗确认按钮、强行关闭弹窗、获取弹窗中的文字等操作。

  1. 点击弹窗的确定按钮,用如下函数:

driver.switch_to_alert().accept()

  1. 强行关闭,点击右上角的叉叉,用如下函数:

driver.switch_to_alert().dismiss()

  1. 获取弹窗里的文字,用如下函数:

driver.switch_to_alert().text

12、怎么运行自动化用例并生成测试报告?

以unittest为例,我通常的做法是把用例加载到测试套中,做成一个脚本,在命令窗口下运行脚本,报告的生成用第三方模块HTMLTestRunner来生成。

13、怎么定位/操作图片中的验证码?

用 tesseract OCR引擎处理图片中的验证码,步骤:

(1)对整个屏幕截屏,保存成 png 格式的图片;

(2)在截取的图片中定位验证码图片的位置坐标;

(3)根据坐标对验证码截图;

(4)在图片中提取验证码,输入到输入框。

九、团队管理类问题

1、如何对测试人员进行考核?

参考答案:

对测试人员考核可以从一些硬性指标来考核,例如:缺陷逃逸率,测试用例的执行效率;

另外还要考虑测试人员对团队的贡献,例如:测试经验的分享,交流,沟通的积极性,录入 bug 的质量,测试报告的质量等;

从开发人员,项目经理,QA 等方面获取对测试人员的综合评价。

2、如果你是测试经理,你将如何建立起一个团队的学习氛围?

我会努力建立起一个可以促使测试人员不断学习的机制。这个机制包含几个方面的内容:

把测试人员的学习内容作为工作考核的一部分;

把测试人员的学习计划作为项目计划的一部分;

把测试人员的学习和技术研究任务化,专门化;

建立一帮一的导师制度;

建立持续培训的体系。

测试团队内部组织一个读书会也是一种营造良好的学习氛围的方式,定期举办读书交流 会,让大家对某本书的知识进行讨论和交流。

3、如何与开发人员有效地交流?

参考答案:

如果想把测试工作做得更好,让开发积极改bug,而不是被动的,消极的应对,那么主动的,有效的沟通和交流是必不可少的。有效的与开发人员工作在一起,需要注意一下几个方面:

定义自己的角色,让开发人员觉得需要测试人员在旁边帮助他们。帮助开发人员在 bug 还没出现之前就把它消除掉,从而减少项目的总体成本;

给感到疑惑的开发人员解释自己的工作,减少对自己做出武断的评价和看法的机会, 让开发人员相信:bug 报告不应该被看作是威胁;

尽量减少会产生误会和曲解的bug报告。

十、个人随机应变能力

1、你遇到的印象深刻的Bug是什么?

开放性问题,提前想好,说得有一定深度即可。

2、你工作中最骄傲的事是什么?

开放性问题,提前想好。

最后,祝大家能够找到一份满意的工作!

如果你已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以加入我们644956177,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!微信公众号【软件测试小dao

燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值