别再盲目刷题了!这里有软件测试面试核心题库+应答技巧
点击蓝字
关注我们
一、测试用例设计与测试基础
问
测试用例-时钟
答:用户界面测试:按键响应、显示清晰度。
基本功能测试:时间设置和显示、时间更新、日期自动更新、闹钟设置与提醒。
异常情况测试:无效日期设置、时间误差、电池更换后时间保持、关机后时间保持。
边界条件测试:最大和最小时间设置、闰年和平年测试、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+1j = 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,1while True:yield aa,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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
每日有奖互动
你在面试软件测试时还遇到了什么题目?
你是怎么回答的?

夜雨聆风
