乐于分享
好东西不私藏

别再盲目刷题了!这里有软件测试面试核心题库+应答技巧

别再盲目刷题了!这里有软件测试面试核心题库+应答技巧

点击蓝字

关注我们

一、测试用例设计与测试基础

测试用例-时钟

答:‌用户界面测试‌:‌按键响应、‌显示清晰度。

‌基本功能测试‌:‌时间设置和显示、‌时间更新、‌日期自动更新、‌闹钟设置与提醒。

‌异常情况测试‌:‌无效日期设置、‌时间误差、‌电池更换后时间保持、‌关机后时间保持。

‌边界条件测试‌:‌最大和最小时间设置、‌闰年和平年测试、‌24小时制和12小时制切换。

‌性能测试‌:‌长时间运行稳定性、‌电池寿命测试。

描述一个bug的过程

答:发现BUG–>提交BUG–>指派BUG–>研发确认BUG–>研发去修复BUG–>回归验证BUG–>是否通过验证–>关闭BUG

如何保证你的测试符合需求?

答:精确的需求分析,本次需求改动了什么、为什么改动、影响了哪些,再制定测试计划设计测试用例,保证需求完全覆盖;执行测试中跟踪缺陷直至合理解决。

回归测试时这么多的测试用例,

这么多已经关闭的bug,

如何高效测试?

答:回归测试执行全部测试用例,对需要重复执行的用例做自动化。

分优先级,选择重要功能点、常用、与bug相关的功能点回归。

测试流程是什么?

答:需求分析 – 测试计划 – 测试用例设计 – 测试环境搭建 – 测试执行 – 缺陷报告与跟踪 – 回归测试 – 测试收尾与报告 – 发布后的自动化与维护。

二、Python

python的列表、集合、字典

和元组区别

答:列表list:可变,有序,可以修改、添加、删除元素,支持索引,使用方括号[]

元组tuple:不可变,有序,创建后不能修改,支持索引, 使用圆括号()

集合set:可变,无序,不能重复,不支持索引,空集合用set()

字典:可变,无序,key-value键,key唯一value可重复,使用{}

迭代器

答:一个可以记住遍历的位置的对象,允许逐个访问容器中的元素,如列表、字典、元组、集合。只能往前不会后退。两个基本方法iter()和next()。可用于生成无序序列如斐波拉契。

编程题:已知各数之和=8,

返回这些数的下角标

答:

@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋体";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋体;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}p.p{mso-style-name:"普通\(网站\)";margin-top:5.0000pt;margin-right:0.0000pt;margin-bottom:5.0000pt;margin-left:0.0000pt;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-pagination:none;text-align:left;font-family:Calibri;mso-fareast-font-family:宋体;mso-bidi-font-family:'Times New Roman';font-size:12.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;	mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}list1 = [1,2,3,4,5,6,7,8,4]list2 = []i = 0j = 1for i in range(len(list1)-1):    for j in range(len(list1)):        if (list1[i] + list1[j] == 8):            list2.append(i)            list2.append(j)            i = i+1            j = j+1print(set(list2))

斐波拉契 0,1,1,2,3,5, 

打印前10个

答:

@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋体";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋体;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}p.MsoCommentText{mso-style-name:批注文字;margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:left;font-family:Calibri;mso-fareast-font-family:宋体;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;	mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}def fibonacci():"""生成斐波那契数列的生成器"""    a,b = 0,1    while True:        yield a        a,b = b,a+b# 使用生成器获取前10个数字print("前10个斐波那契数(生成器方式):")fibo_gen= fibonacci()for num in range(10):print(next(fibo_gen))

列出 5 个常用 Python 标准库?

答:time:处理时间

requests:接口请求

random:随机数

os:提供了不少与操作系统相关联的函数

re:正则匹配

math:数学运算

python单例模式

答:确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式通常用于需要全局唯一对象的场景,例如配置管理、日志记录、数据库连接池等。

代码中经常遇到的*args、

**kwargs 含义及用法。

答:*arg代表任意个位置参数,并打包为元组返回给函数。

**kwargs代表任意个关键字参数,并打包为字典返回给函数。

使用顺序为def 函数名(位置参数,*args,关键字参数,**kwargs),即arg一定在kwargs之前。

with语句的作用,简述with方法

打开处理文件帮我们做了什么?

答:with语句用于简化资源管理(如文件操作),确保资源在使用后被正确释放。打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open写法,我们需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,with方法帮我们实现了finally中f.close。例如:

@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋体";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋体;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;	mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}with open('file.txt', 'r') as f:content = f.read()

python中的类和对象是什么?

答:类定义了对象的属性和方法,对象是类的实例。

Python 中的生成器是什么?

答: 生成器是一种特殊的迭代器,按需生成值而不是一次性生成所有值,使用 yield 关键字生成值。

编程python装饰器是什么?

有什么作用?简单举一个例子

答:是一种特殊类型的python函数,用于修改其他函数的行为。通过在函数定义之前使用 @decorator_name 的语法来应用,可以接收函数作为参数,并返回一个新的函数,本身是一个函数,接收一个函数作为参数,并返回一个新的函数。

Python提供内置的装饰器,如 @staticmethod 和 @classmethod,用于定义静态方法和类方法。装饰器的应用场景:日志记录、性能分析、权限控制、缓存。

pytest的装饰器你用到过哪些

答:

@pytest.fixture 创建配置和清理代码的钩子

@pytest.fixture(scope=’session’,autouse=True)

@pytest.mark.parametrize 参数化

@pytest.mark.skip 满足某些条件时测试才通过,否则跳过运行测试

@pytest.mark.xfail 将功能标记为预期失败

python中多进程和多线程

答:用threading模块创建和管理多线程,threading.Thread()

用multiprocessing模块管理多进程,multiprocessing.Process()

DDT是什么

答:自动化测试的方法论,将测试用例的输入数据和预期输出存储在外部文件中,通过读取数据来驱动测试执行。

接口自动化中如何保持登录状态

答:用登录后获取到的cookie保持。

自动化测试框架通过什么模型

来进行搭建的?

答:PO模式,即page object 

pattern,将测试对象(页面)封装成对象,通过面向对象的方式对页面定位和页面操作进行分离封装,方便维护和修改。

Docker是什么,公司内使用场景

答:Docker是一种开源的应用容器引擎,通过轻量级的虚拟化技术,将软件及其依赖打包为容器,使应用程序可在任何支持docker系统上运行,无需担心环境配置问题,包括容器和镜像。

部署测试包,公司内使用Docker主要保证研发和测试的环境统一,不出现环境不同引发的问题,也便于每周的快速构建部署。

数据库左连和右连? 

答:左连和右连操作是基于关联条件匹配行。

三、Linux

Linux中根目录下有哪些基本目录,

分别存放什么?

答:/bin二级制文件、/etc配置文件、/home个人目录、/lib共享库文件、/opt第三方应用程序、/root root用户目录、/tmp临时文件、/usr 用户应用程序和文件、/var 变化的文件如日志或缓存)、日志存在哪个文件下面(/var)。

linux命令使用

答:查看日志文件的第几行sed -n ‘5p’ file或第几列awk,如awk 1 file。

查看端口是否被占用netstat -ano|grep 8080,a表示all,n表示数字形式,o确定哪个进程(only)。

监控资源的命令:

查看磁盘使用空间du(disk usage) 

查看文件系统磁盘使用情况 df -h,df即disk free。

查看内存free -m,m单位MB,方便阅读计算。

查看系统运行信息 top

查看某端口号netstat -anp|grep 

port_number ,a表示所有,n以数字

形式,p进程信息program,

port_number即PID

查看某进程ps -ef|grep ps_name,e表示所有进程every process,f完整格式full

查看日志 tail -500 log.txt,查看动态日志tail -f logfile,f表示follow跟随

监控资源vmstat (virtual memory statistics虚拟内存统计)

查出端口是80的所有进程

netstat -tulnp | grep:80

四、Selenium

Selenium原理

答:

Selenium webdriver:核心,用于与浏览器进行交互,通过浏览器驱动控制浏览器的行为。每个浏览器对应特定的driver,如chrome-chromeDriver,通过driver使客户端即用户脚本和浏览器通信,向浏览器发送命令并返回响应。

selenium IDE:浏览器插件,用于录制回放操作,以生成简单的测试脚本。

selenium grid:支持分布式测试,可在多台浏览器或机器上并行运行测试。

Webdriver 工作原理分为如下步骤:

(1)用户通过webdriver API启动浏览器,如driver=webdriver.chrome(),selenium会启动chromeDriver,通过chromeDriver启动chrome浏览器。

(2)用户通过webdriver API发送命令,如打开网页点击按钮

driver.get(),driver.find_element(By.ID,’’).click

(3)浏览器驱动执行命令。

(4)返回结果:浏览器将执行结果返回给浏览器驱动,驱动将结果返回给WebDriver,webdriver将结果返回给用户脚本。

五、SQL

如何插入、更新和删除数据?

答:

INSERT INTO table_name (column1, column2) VALUES (value1, value2);

UPDATE table_name SET column1 = value1 WHERE condition;

DELETE FROM table_name WHERE condition;

六、接口与网络

http和https协议区别?

答:https协议需要到CA申请证书,一般有费用,由SSL+http协议构建的可进行加密传输、更安全,端口用443;

http是超文本传输协议,明文传输,端口用80。

网络协议了解多少?

答:用的较多的是http/https和tcp协议,http和https都是超文本协议,https在http基础上增加ssl加密协议,默认端口443,收费,http端口80,免费。

OSI七层

答:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

七、项目问题

在selenium自动化测试中,

你一般完成什么类型的测试?

自动化覆盖率?

答:主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。因为UI自动化测试用例也是在不断的更新和迭代,大概在30%-40%左右。

App和web测试有什么不同?

答:App和web在测试流程基本相同,在测试技术也差别不大(功能、性能、安全),但在细节和方法上有区别:

兼容性测试(web浏览器,android/ios版本、操作系统,选主流或Testin)

安装测试

app需要有专项测试(内存、CPU占用、流量、流畅度、耗电量),交叉测试(操作app时来电、电量不足、弱网),升级测试(web客户端不涉及,app看用户是否进行了更新客户端),自动化测试(selenium、appium)

如何测试app的内存、CPU、

流量、流畅度、耗电量?

答:用adb命令,查看内存,用adb shell dumpsys meminfo com.**.com

查看CPU,用adb shell dumpsys 

cpuinfo com(包名)

流量:查看某个应用的UID,通过命令

adb shell dumpsys package 

com.package |findstr userId;查看该app的流量,执行命令adb shell dumpsys netstats |findstr “UID=(上述指令查到的)”,或者profiler选择network选项卡;

流畅度:adb shell dumpsys gfxinfo 包名,或android profiler的GPU选项卡

耗电量:adb shell dumpsys 

batterystats 或Battery Historian 工具

App测试具体怎么测?

答:一般先测试功能,除了保证功能外,公司还要求做专项测试,比如安装、卸载、兼容性、弱网、交互性测试这些。兼容性测试,提供了5-6款,如小米、华为、vivo、平板、三星这些主流机型,云测平台找的testin,cpu、内存、电量、流畅度、流量要求不高但知道adb测试方法和android studio的profile。弱网用fiddler测的,模拟2g、3g,交互看冷热启动、app与其他程序交互运行、断网看app情况。

adb命令熟悉的有哪些?

答:

adb devices , 获取设备列表及设备状态。

adb kill-server , adb start-server , 结束 adb 服务, 启动 adb 服务。

adb logcat , 打印 Android 的系统日志,如adb logcat >e:log.txt

adb install , 安装应用,adb install -r 重新安装。

adb shell pm list package,列出所有的应用的包名。

adb shell ime list -s   列出android设备上可用的输入法(input method editor)

adb reboot , 重启 Android 设备。

adb shell monkey –p 程序包 –v 测试次数 

你们系统哪些地方哪些功能?

做了性能测试?

答:用户使用最频繁的功能来做,比如登录、创建患者、退出。

Loadrunner性能测试

怎么开展的?

答:打开lr的Virtual User 

Generator,新建脚本,弹框中选择协议

web(http/html)协议,start 

recording,选择application和浏览器,输入用户名密码登录,创建用户,退出登录,停止录制,回到脚本中。生成的脚本进行回放,回放有红色则报错,修改查原因修改,没有红色显示passed则运行成功。脚本可用。修改脚本,在登录前插入集合点、事务开始,登陆后插入事务结束,退出也是。对数据进行参数化,用大括号表示,大括号内插入txt数据。我们当时是这么开展的。

性能关键指标

答:响应时间、吞吐量、错误率、CPU使用率、内存占用率、延迟、并发。

八、总结

以上是本人面试中遇到的主要问题,答案仅供参考,不对的勿喷。建议简历不要出现技术名词堆叠,最好具体化,如哪个模块用了什么技能,某技术用来做什么,注意技术名词拼写正确,首字母大写保持一致,业绩用数据说话。面试时真诚积极、解释清楚项目问题,忌讳不回答哦。

E n d

声明:本文为51Testing软件测试网枫叶用户投稿内容,该用户投稿时已经承诺独立承担涉及知识产权的相关法律责任,并且已经向51Testing承诺此文并无抄袭内容。发布本文的用途仅仅为学习交流,不做任何商用,未经授权请勿转载,否则作者和51Testing有权追究责任。如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:editor@51testing.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

每日有奖互动

你在面试软件测试时还遇到了什么题目?

你是怎么回答的?

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 别再盲目刷题了!这里有软件测试面试核心题库+应答技巧

评论 抢沙发

5 + 6 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮