覆盖17类面试题小结
目录
- 1、测试概论
- 2、测试分析方法
- 3、测试设计方法
- 4、测试计划
- 5、测试方案
- 6、测试执行
- 7、MySQL
- 8、MongoDB
- 9、Linux
- 10、Docker
- 11、Python
- 12、Web测试
- 13、Selenium
- 14、Jmeter
- 15、微信小程序
- 16、Web项目实战
- 17、Loadrunner
1、测试概论
1、描述缺陷的管理流程
提交缺陷--评审缺陷--分配缺陷--分析修改缺陷--确认缺陷--关闭缺陷
2、缺陷单包含哪些要素
摘要、提交人、发现时间、严重程度、优先级、重现步骤、所属模块、测试版本、测试类型、引入阶段、状态
3、针对QQ登录编写两用例(正向的和反向的)
根据用例八大要素编写(用例编号、测试项、测试标题、优先级、预置条件、输入、操作步骤、预期结果)可以考虑正确的账号密码登录,可以考虑正确的账号错误的密码登录或者不存在的账号登录。
2、测试分析方法
1、为什么做测试分析
测试分析能够明确具体要做的测试工作,从不同的角度分析要测试的内容,防止测试的遗漏。
2、针对使用过的软件进行测试分析找出测试项
质量模型分析(功能、性能、界面、安装、更新、卸载。。。。。);不同的用户角度;分析功能之间的关系是否有功能的交互。
3、某家公司针对目前的商业发展趋势决定升级CRM系统,如果你是CRM的测试人员从哪些渠道获取测试需求
软件需求规格说明书、设计文档、市场上类似的CRM系统软件、以前版本的CRM的需求和案例库、缺陷报告
3、测试设计方法
1、用等价类划分法边界值分析法设计微信朋友圈发图片
有效等价类(图片的格式,尺寸范围,数量范围);无效等价类(不支持图片格式,不支持尺寸大小,超出9张);边界值(9张;10张)
2、用判定表法设计朋友圈的用例
图片、文字、链接、音频、视频的各种组合发送
3、在淘宝购物,想通过搜索获得商品信息。搜索的内容包括评价、价格、包邮、地区,用什么设计方法比较恰当
正交实验法
4、用状态迁移图法设计电梯的运行测试用例
上行、下行、停、停在一楼、直接去一楼
4、测试计划
1、测试计划的作用是什么
所有测试需求都已被标识出来;
测试的工作量已被正确评估并合理地分配了人力、物力资源;
测试的进度安排是基于工作量评估的、适用的;
测试启动、停止的准则已被标识;
测试输出的工作产品是已标识的、受控的和适用的。
2、如何安排测试任务
任务:用简洁的句子对任务加以说明;
方法和标准:指明执行该任务时,应采用的方法以及所应遵循的标准;
输入/输出:给出该任务所必需的输入及输出;
时间安排:给出任务的起始及持续的时间,为方便文档维护,建议采用相对时间,即任务的起始时间是相对于某一里程碑或阶段的相对时间;
资源:给出任务所需要的人力和物力资源,工作量应明确到"人天";
风险和假设:指明启动该任务应满足的假设以及任务执行可能存在的风险;
角色和职责:指明由谁负责该任务的组织和执行,以及谁将担负怎样职责。
3、如何确定测试对象
从软件质量的模型和被测试业务模块两个角度确定。
5、测试方案
1、测试方案的作用是什么
指导测试人员如何编写测试用例、搭建测试环境、准备测试数据、执行测试用例。
2、测试方案中有哪些测试需求
环境需求、被测对象需求、测试工具需求、测试代码需求、测试数据需求。
3、测试方案中的哪一部分内容是对搭建环境的描述的
测试组网图
6、测试执行
1、如何准备测试数据
手工录入、导入生产环境数据、在数据库创建账号
2、测试报告的内容有哪些
概述、测试时间、地点、人员、环境描述、总结和评价、测试过程质量统计评估、软件产品质量统计评估、系统测试综合评价、系统测试遗留问题报告
7、MySQL
1、假设数据库中有两张表,a表和b表,说明使用内连接、左连接、右连接关键字
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
内连接关键字 inner join
左连接关键字 left join
右连接关键字 right join
2、假设有13条数据,查询显示从第十条开始显示4条数据
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
使用分页查询 select * from student limit 9,4
3、什么是MySQL慢查询日志
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
当语句执行时间较长时,通过日志的方式进行记录,这种方式就是慢查询的日志。
这句代码 set global slow_query_log = on; 可以开启慢查询日志。
8、MongoDB
1、MongoDB三元素指的是什么
数据库、集合和文档。数据库里存放的是集合,集合里存放的是文档,数据存放在文档里,以键值对的方式。
2、MySQL与MongoDB的差别是什么
MySQL和MongoDB两者都是免费开源的数据库。MySQL和MongoDB有许多基本差别包括数据的表示(data representation),查询,关系,事务,schema的设计和定义,标准化(normalization),速度和性能。通过比较MySQL和MongoDB,实际上我们是在比较关系型和非关系型数据库。
MySQL是传统的关系型数据库,有数据库、表、记录三个层次组成,所用语句为传统的SQL语句,但是在海量数据处理时效率会有所下降。
MongoDB是文档型数据库,有数据库、集合、文档三个层次构成,没有表结构的概念,文档内容可以非常灵活的定制,适用于事件记录、内容管理或博客平台等。
3、什么是MongoDB
MongoDB是由C 语言编写的一款开源的文档数据库,适合存储海量数据,旨在为Web应用提供可扩展的高性能数据存储解决方案。
9、Linux
1、如何查看当前系统都有哪些进程
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
ps -aux 或者 ps –elf
2、想修改ip,需要编辑哪个配置文件,修改完配置文件后,如何重启网卡,使配置生效
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
使用vi或者vim编辑器编辑网卡配置文件
/etc/sysconfig/network-scripts/ifcft-eth0(如果是eth1文件名为ifcft-eth1)
修改网卡后,可以使用命令重启网卡:ifdown eth0 && ifup eth0
(请将两者连在一起使用,不能单独使用。原因:生产环境中,我们的服务器都是放在机房,没有在办公室;如果关闭了网卡,那就可能不能连接服务器了。)
也可以重启网络服务:service network restart
3、tar命令是打包还是压缩命令
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。
加 -z :可以具有 gzip 的属性,也就是用 gzip 压缩或解压。
一般格式为 xx.tar.gz 或 xx.tgz
10、Docker
1、容器退出后,数据会丢失么
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其数据不会丢失,还可以通过 docker start 来启动,只有删除容器才会清除数据。
在这里还要注意开启容器的时候是否添加了 --rm 参数。
2、可以在一个容器中同时运行多个应用进程吗
一般不推荐在同一个容器内运行多个应用进程。单个容器被设计用来一个应用程序。
3、如何批量删除或者停止运行的容器
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
docker container rm $(docker ps –a);docker container stop $(docker ps –a)
11、Python
1、介绍一下Python下range()函数的用法
Python的range()函数用于生成一个整数序列,一般用在for循环中。
2、列表和元组之间的区别
二者的主要区别是列表里存储的数据是可变的,而元组是不可变的。定义列表使用中括号将数据括起来,定义元组使用小括号。
3、Python中的pass语句是什么
在用Python写代码时,有时可能还没想好函数怎么写,只写了函数声明,但为了保证语法正确,必须输入一些东西,在这种情况下,我们会使用pass语句。
4、解释一下Python中的继承
当一个类继承自另一个类,它就被称为一个子类(或派生类),继承的类称为父类(或基类或超类)。它会获取父类的属性和方法,还可以定义自己的属性和方法。
12、Web测试
1、有一个登陆页面,输入用户名和密码后,点击登陆按钮登陆。请针对这个登陆功能,设计测试用例。
(1)输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。
(2)输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。
(3)登录成功后能否跳转到正确的页面
(4)用户名和密码,如果太短或者太长,应该怎么处理
(5)用户名和密码,中有特殊字符,和其他非英文的情况
(6)记住用户名的功能
(7)登陆失败后,不能记录密码的功能
(8)用户名和密码前后有空格的处理
(9)密码是否以星号显示
2、压力测试和负载测试的区别
负载测试关注的是不同负载水平的系统的性能指标。为了得到压力数确定下的性能指数。例如我们可以找到系统的最大用户数和最佳用户数。
压力测试则是关注在超高负载(超过系统最大用户数)的情况下,系统是否还能稳定处理,如果不能稳定处理,那么系统还能坚持多久。其重点是关注系统是如何失效的,以便于制定系统正式上线后的风险控制措施。
3、虽然易用性测试带有主观判断,总结几条易用性测试可以参照的测试规则
(1)明确最终用户,客户端软件的报错提示不能过于专业。
(2)图形测试:图片的大小和显示。
(3)辅助功能测试:使用说明、导航、站点地图、帮助等。
(4)区域文化:符合软件使用地区的风俗和宗教习惯。
(5)考虑用户群体:儿童(活泼),老人(字大,字少),年轻人(时尚)。
(6)考虑业务配色特点:商业(稳重的色彩)、游戏(活泼的色彩)、环保(绿色)、女性(粉色)。
(7)不要出现水平滚动条。
(8)重要信息或大纲级的内容需高亮显示。
(9)使用不同大小字体,以免找不到重点。
13、Selenium
1、什么是断言,请至少写出5个unittest下的断言,并解释其含义
断言可以简单理解为预期结果和实际结果的比较。如果预期等于实际,断言通过,测试报告上记录pass;如果预期不等于实际,断言失败,测试报告上记录fail。
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
assertEqual:如两个值相等,则pass。
assertNotEqual:如两个值不相等,则pass。
assertTrue:判断bool值为True,则pass。
assertFalse:判断bool值为False,则Pass。
assertIsNone:不存在,则pass。
assertIsNotNone:存在,则pass。
assertIs(arg1, arg2, msg=None):验证arg1、arg2是同一个对象,不是则fail。
assertIsNot(arg1, arg2, msg=None) 验证arg1、arg2不是同一个对象,是则fail。
assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串,不是则fail。
assertNotIn(arg1, arg2, msg=None) 验证arg1不是arg2的子串,是则fail。
2、关于多窗口的常见操作方法有哪些,并分别介绍其用法
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
current_window_handle 获得当前窗口句柄。
window_handles 获得所有窗口句柄。
switch_to_window() 切换到另外一个窗口,需要将窗口句柄传递给此方法。
3、Selenium(Python版)开展自动化测试时使用的unittest框架有几个组成部分,分别有什么作用
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
test fixture 测试固件,定义了一些有固定用法的方法。
test case 测试用例,方法必须以test开头,该测试类必须继承TestCase类,是测试的核心部分。
test suite 测试套件/测试集合,定义了一些方法用来收集脚本,其本身是一个可迭代对象。
test runner 测试运行器,与test suite配套使用,用来执行测试集合。
4、Select类中,关于进行下拉框选择的常见方法有哪些
代码语言:javascript复制"""
微信公众号:AllTests软件测试
"""
select_by_value 根据选项的value属性值进行选择。
select_by_index 根据选项的索引位置进行选择。
select_by_visible_text 根据选项的可见文本值进行选择。
14、Jmeter
1、什么时候可以进行性能测试
功能测试通过;一般需要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。
2、什么是Jmeter的集合点,设置集合点有什么意义
在性能测试过程中,需要模拟大量用户在同一时刻,访问系统并同时操作某一任务,可以通过配置集合点来实现,多个用户同时进行某操作;集合点可以在服务器上创建密集的用户负载,使Jmeter能够测试服务器在负载状态下的性能。
3、性能测试包含了哪些测试(至少举出3种)
(1)负载测试(Load Testing):负载测试关注的是不同负载水平的系统的性能指标。为了得到压力数确定下的性能指数。例如我们可以找到系统的最大用户数和最佳用户数。
(2)压力/强度测试(Stress Testing):压力测试则是关注在超高负载(超过系统最大用户数)的情况下,系统是否还能稳定处理,如果不能稳定处理,那么系统还能坚持多久。其重点是关注系统是如何失效的,以便于制定系统正式上线后的风险控制措施。
(3)配置测试(Configuration Testing):在不同的软件、硬件以及网络环境配置下,通过运行一种或多种业务在一定的虚拟用户数量情况下,获得不同配置的性能指标,用于选择最佳的设备及参数配置。
(4)容量测试(Volume Testing):目的是通过测试预先分析出软件中某指标的极限值(如最大并发用户数、数据库记录数等),保证系统在其极限状态下没有出现问题并能正常运行。
(5)基准测试(Benchmark Testing):在一定的软件、硬件及网络环境下,模拟一定数量虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或者系统评测过程中,通过运行相同的业务场景并比较测试结果,确定调优是否达到效果或者为系统的选择提供决策数据。
(6)并发测试(Concurrency Testing):通过模拟多个用户并发访问同一个应用、同一个存储过程或数据记录以及其他并发操作,测试是否存在死锁、数据错误等故障。
4、请简述使用Jmeter实现参数化的方式(至少举出2种)
通过前置处理器参数化、通过CSV Data Set Config参数化、借助函数助手方式采用随机参数化。
(1)通过前置处理器参数化步骤:
a)Badboy录制论坛登陆的脚本;
b)导入Jmeter;
c)添加-前置处理器-用户参数;
d)设置参数:添加变量和用户;
e)在脚本中用参数替代文本;
f)设置循环次数;
g)添加"察看结果树"并运行。
(2)通过CSV Data Set Config参数化步骤:
a)Badboy录制论坛登陆的脚本;
b)导入Jmeter;
c)制作含有三组登录名和密码的txt文件;
d)添加-配置元件-CSV Data Set config;
e)设置参数:添加变量和用户;
f)在脚本中用参数替代文本;
g)设置循环次数;
h)添加"察看结果树"并运行。
(3)借助函数助手方式采用随机参数化步骤:
a)Badboy录制论坛发帖的脚本;
b)导入Jmeter;
c)选项-函数助手对话框;
d)设置RandomString;
e)生成函数字符串;
f)把论坛发贴的title替换成函数字符串;
g)设置循环次数;
h)添加"察看结果树"并运行。
15、微信小程序
1、什么是微信小程序,简述它的优点和缺点
小程序是一个不需要下载安装就可使用的应用。它实现了应用触手可及的梦想,用户扫一扫或者搜一下即可打开应用。
优点:
(1)少了安装app的麻烦;
(2)释放手机内存;
(3)让手机桌面更简洁。
缺点:
(1)小程序的体系整体依赖于微信;
(2)小程序不能承载所有的用户需求;
(3)消息推送的诸多限制。
2、简述微信小程序跟公众号、订阅号、服务号的区别
公众号指的是能被公众看到的信息平台,范围最广,包括了小程序、订阅号和服务号。
订阅号:是用户在微信中订阅文章所使用的公众账号。订阅号可以向用户推送文章和信息;可以管理订阅用户,与用户交流;是一种媒体属性的产品。
服务号:是一种服务导向的公众账号。可以帮助机构在微信中向用户提供服务;可以让用户直接与机构的客户系统进行沟通、为用户提供品牌信息等。
订阅号和服务号以[聊天界面]为基础,它们的功能和界面是早就规定好了的;小程序允许开发者自定义界面,不用局限于微信的聊天界面。
3、简述微信小程序使用到的技术
(1)WXML:微信标记语言:WeiXin Markup Language。类似于HTML,用于描述当前页面结构。
(2)WXSS:微信样式表:WeiXin Style Sheet。类似于CSS,用于描述页面的样式。
(3)JS:JavaScript。用于处理这个页面和用户的交互。小程序的逻辑功能都是使用JS来实现的。
16、Web项目实战
1、描述一下项目的实施过程
熟悉需求--编写系统测试计划--编写系统测试方案--编写系统测试用例--执行测试--提交缺陷--跟踪缺陷--回归测试--编写系统测试报告
2、在过程实施过程遇到的问题
环境问题、测试不全面问题等等
17、Loadrunner
1、简述使用Loadrunner的使用步骤
脚本录制设置—录制脚本—调试脚本—场景设置—执行场景-结果分析
2、什么是场景,场景的重要性有哪些,如何设置场景
场景:模拟真实环境中,用户运行的状况。
(1)通过场景来模拟实际用户的操作,性能测试结果才具有代表性。
(2)在运行过程中也需要关注场景性能测试值,测试过程是否正常。
设置场景:
(1)选择场景中需要的脚本
(2)选择为目标场景,还是指定的手工场景
(3)设置用户数、设置产生负载的设备
(4)设置执行策略