1、B/S架构和C/S架构区别
B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个性化能力低,响应速度较慢
C/S响应速度快,安全性强,一般应用于局域网中,因为要针对不同的操作系统,需要针对性的开发,并且维护成本高
*
2、安卓和ios的区别有哪些?
安卓开源导致碎片化严重、相比之下,bug会比ios的多
还有就是分辨率,安卓的有20多种,ios比较少
运行机制不同,ios是沙盒运行机制,安卓采用的是虚拟机机制
两者后台机制不同,ios是不允许任何第三方程序在后台运行的,安卓可以,直到没有内存才会关闭。
3、什么是APP的功耗测试?
答案:
APP功耗测试是针对APP的耗电量进行的专项测试,常用方法有:
1.通过手机自带的电量消耗查询的应用查看各个APP电量消耗。
2.基于硬件设备的耗电量测试(在生产厂家用的比较多),具体方法:将手机电池拿掉,并将电流表串联在手机和外部电源之间,将开启APP时的手机耗电量和没有开启APP情况下的耗电量进行对比。
3.利用专业的功耗测试工具
4、请介绍Android SDK中自带的几个工具/命令的功能
参考答案:Android SDK为了方便应用开发者开展调试工作,提供了一系列的工具,以下列举的是对于测试工程师来说比较常用的工具/命令:
1、adb: ADB的全称为Android Debug Bridge,就是起到调试桥的作用。通过ADB我们可以在Eclipse中方面通过DDMS来调试Android程序,就是debug工具。
2、ddms:Dalvik Debug Monitor Service,是Android开发环境中的Dalvik虚拟机调试监控服务。
3、monkey:Android 中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
4、uiautomator: UIAutomator是Eclipse自带的用于UI自动化测试工具,
可仿真APP上的单击、滑动、输入文本等操作
5、接口测试计划你会怎么制定?
接口测试的测试计划制定基本上和功能测试差不多。这个阶段主要要明确有哪些测试资源,测试资源如何分配,在整个测试过程中需要完成哪些事情,每个时间点应该完成哪些事情,还有最重要的也是很容易被忽略掉的一点就是风险评估。
6、Docker安全么?
答:Docker利⽤了Linux内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进⾏验证。⼤量⽣产环境的部署证明,Docker虽然隔离性⽆法与虚拟机相⽐,但仍然具有极⾼的安全性。
7、软件的安全性应从哪几个方面去测试?
(1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议
(2) 加密机制
(3) 安全防护策略:如安全日志、入侵检测、隔离防护、漏洞扫描
(4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理
(5) 防病毒系统
8、为什么进行抓包测试?
1:有些时候公司没有标准的接口文档,测试人员只能抓包来获取接口信息
2:抓包可以迅速找到请求,通过抓包可以查看整个请求过程,以及响应过程,可以通过抓包来分辨前台还是后台bug
3:通过抓包,可以查看是否有敏感信息泄露,比如用户密码和个人账号信息等数据。
4:可以通过抓包进行测试,拦截请求,修改请求数据,查看对应响应结果,抓包本身就是接 口测试的一部分
9、测试人员在软件开发过程中的任务是什么?
1、尽可能早的找出系统中的Bug;
2、避免软件开发过程中缺陷的出现;
3、衡量软件的品质,保证系统的质量;
4、关注用户的需求,并保证系统符合用户需求。
总的目标是:确保软件的质量。
10、测试报告有哪些内容?
测试报告包括:测试模板(每个模板里需要记录测试的开始时间、结束时间、用例、通过多少、失败多少、有多少bug、遗留的bug、解决多少)bug的统计,项目总结,汇报一下测试的大致结果,遗留和风险,该软件还有什么遗留问题,还有什么风险,都要一一说明,最后评判该软件是否符合上线标准、日期、签字、加上盖章
11、做好软件测试的一些关键点:
必须经过测试基础知识和理论的相关培训
测试人员必须熟悉系统功能和业务
测试方案要和整个项目计划协调好
测试执行阶段必须根据测试用例进行
12、简述cookie、session及token的区别
cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie。
可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie。
13、webdriver的协议是什么?
client与driver之间的约定,无论client是使用java实现还是c#实现,只要通过这个约定,client就可以准确的告诉drier它要做什么以及怎么做。
webdriver协议本身是http协议,数据传输使用json。
这里有webdriver协议的所有endpoint,稍微浏览下就知道这些endpoints涵盖了selenium的所有功能。
14、selenium自动化页面元素找不到存在异常的原因?
(1)元素定位错误;(2)页面加载时间过慢,需要查找的元素程序已经完成,单页面还未加载,此时可以设置加载页面等待时间;(3)有可能元素包含在iframe或者frame里面,需要切换。
15、什么是PO模式,它有哪三层?三者的关系是怎样的?
PO模式是一种自动化测试设计思想,是把一个页面看成一个对象,页面的元素看成对象的属性和行为。PO模式一般有三层:
基础层:封装一些最基础的方法
页面对象层:元素定位,页面操作等
测试用例层:业务逻辑,数据驱动
这三层的关系:
页面对象层继承基础层,测试用例层调用页面对象层
16、简述集成测试与系统测试关系?
参考答案:
(1)集成测试的主要依据概要设计说明书,系统测试的主要依据是需求设计说明书;
(2)集成测试是系统模块的测试,系统测试是对整个系统的测试,包括相关的软硬件平台、网络以及相关外设的测试。
17、您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
参考答案:(根据项目经验不同,灵活回答即可)
我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试
19、在配置测试中,如何判断发现的缺陷是普通问题还是特定的配置问题?
参考答案:
在进行配置测试时,测试工程师仍然会发现一些普通的缺陷,也就是与配置环境无关的缺陷。因此判断新发现的问题,需要在不同的配置中重新执行发现软件缺陷的步骤,如果软件缺陷不出现了,就可能是配置缺陷;如果在所有的配置中都出现,就可能是普通缺陷。
需要注意的是,配置问题可以在一大类配置中出现。例如,拨号程序可能在所有的外置Modem中都存在问题,而内置的Modem不会有任何问题。
20、单元测试的主要内容?
参考答案:
模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
21、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
参考答案:
1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。
22、单元测试的策略有哪些?
参考答案:
逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析
23、QTP中的Action有什么作用?
参考答案:
用Action可以对步骤集进行分组
步骤重组,然后被整体调用
拥有自己的sheet
组合有相同需求的步骤,整体操作
具有独立的对象仓库
24、你觉得bugzilla在使用的过程中,有什么问题?
参考答案:
1.界面不稳定;
2.根据需要配置它的不同的部分,过程很烦琐。
3.流程控制上,安全性不好界定,很容易对他人的Bug进行误操作;
4.没有综合的评分指标,不好确认修复的优先级别。
25、我要测商品列表接口,但是这个接口是依赖于登录接口,要登录成功才能测这个接口,用postman怎样去做这个接口测试?
在postman创建一个登录接口,确定登录是正常的,如果它使用的cookie那么需要把cookie传入列表接口头部信息中 如果登录接口他返回的token是在返回报文中,那么列表接口直接在头部信息中传入这个token即可 。
两个联通之后,根据用例传入不同的参数值去校验这个商品列表接口是否正常。
26、您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
答:性能测试工作的目的:检查系统是否满足在需求说明书中规定的性能要求;
性能测试关键:以真实的业务流程为依据,选择有代表性的、关键的业务操作去设计测试案例
27、分布式架构,对比传统架构的优势
①最为明显的一点,在传统的架构中,如果某个功能需要进行维护,那么我们必须停掉整个服务,这对于公司的运营会造成损失。分布式系统在核心功能模块使用单独服务器,维护部分模块不影响用户的其他操作。
②在海量数据处理方面,传统架构显得比较乏力;分布式系统架构采用服务器集群,使用负载均衡,海量数据处理游刃有余!
③在性能(检索)以及维护方面,分布式系统架构也有较为明显的优势。
28、什么是安全测试( 什么是安全测试(Security Testing)?)
在所有类型的软件测试中,安全测试可以被认为是最重要的。其主要⽬的是在任何软件(Web或基于⽹络)的应⽤程序中找 到漏洞,并保护其数据免受可能的攻击或⼊侵者。由于许多应⽤程序包含机密数据,需要被保护泄漏。软件测试需要定期在这 样的应⽤程序上进⾏,以识别威胁并⽴即采取⾏动。
29、软件的评审一般由哪些人参加?其目的是什么?
参考答案:
在正式的会议上将软件项目的成果(包括各阶段的文档、产生的代码等)提交给用户、客户或有关部门人员对软件产品进行评审和批准。其目的是找出可能影响软件产品质量、开发过程、维护工作的适用性和环境方面的设计缺陷,并采取补救措施,以及找出在性能、安全性和经济方面的可能的改进。
人员:用户、客户或有关部门开发人员,测试人员,需求分析师都可以,就看处于评审哪个阶段
30、正交表测试用例设计方法的特点是什么?
参考答案:
用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂;
对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的;
具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。
31、如何定位是前端bug还是后端bug(*)
1、验证这个BUG、在前端去复现bug
2、在服务器上面找到日志文件
3、用tail -f显示日志
4、去观察日志,如果有明确的“exception”,那就是后台报错
5、接口返回码为500+即服务器问题,后台问题。
前端:前问题一般就是界面的问题,不过像开发在url中加入新的请求参数,而没有写进接口文档中的错误属于后端错误。一般像页面的排版和显示问题都属于前端问题
32、你都知道有哪些接口请求方式?区别是什么?
GET ; POST ; PUE ; DELETE
区别:get直接从服务端拉取数据
post:先发送请求再拉数据(注册、更新、改)
put:修改的数据
delete:用户删除数据
这几种方式,取决于开发,他用啥你们就传啥
33、Beta测试与Alpha测试有什么区别?
参考答案:
Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场。
Alpha testing (α测试),是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试。
34、述集成测试与系统测试关系?
参考答案:
(1)集成测试的主要依据概要设计说明书,系统测试的主要依据是需求设计说明书;
(2)集成测试是系统模块的测试,系统测试是对整个系统的测试,包括相关的软硬件平台、网络以及相关外设的测试。
35、阶段评审与项目评审有什么区别?
参考答案:
阶段评审 对项目各阶段评审:对阶段成果和工作
项目评审 对项目总体评审:对工作和产品
36、软件测试的风险主要体现在哪里?
参考答案:
我们没有对软件进行完全测试,实际就是选择了风险,因为缺陷极有可能存在没有进行测试的部分。举个例子,程序员为了方便,在调试程序时会弹出一些提示信息框,而这些提示只在某种条件下会弹出,碰巧程序发布前这些代码中的一些没有被注释掉。在测试时测试工程师又没有对其进行测试。如果客户碰到它,这将是代价昂贵的缺陷,因为交付后才被客户发现。
因此,我们要尽可能的选择最合适的测试量,把风险降低到最小。
37、如果要测试后台删除用户,就是用户名后面一个删除按钮的情况,能写出哪些测试用例?
删除一个用户的场景:点击删除按钮,页面自动刷新,此用户在该页面已查询不到。再去打开另外一个浏览器,在前台登录已删除的用户,页面提示该用户不存在。
同时删除多个用户的场景:利用复选框,测试多选,反选,全选删除用户的情况。删除后,被删用户在该页面已查询不到,同样要去前台登录已删除的用户,页面应该提示该用户不存在。
38、在测的模块中,是不是所有的缺陷都解决了?如果没有,怎么处理?
不是。
首先进行缺陷的分析讨论。主要分析缺陷解决的成本和风险。如果bug没有解决,存在软件中,会给用户造成什么影响,会不会造成法律纠纷或重大损失;如何解决该bug,时间成本有多大,会不会造成其他模块出问题,影响产品的发布。
39、如何判断CPU使用率不达标?
CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致CPU使用率不达标,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试。
40、测试计划主要包括哪些主要部分
1)简介(项目简介、测试目的、测试范围-模块层次*、测试阶段*)
2)参考文档和提交文件
3)进度安排
4)测试资源
5)严重程度和优先级
6)风险分析
7)测试策略
41、如果你要进行性能测试,你是如何展开操作的?
1.确定关键业务,关键路径;
2.确定测试的关键数据。比如并发量,响应时间,循环次数等;
3.准备测试环境,完成脚本录制或脚本开发;
4.执行测试,观察或监控输出参数,比如吞吐量,响应时间,资源占有率等;
5.对执行结果进行分析,分析性能问题。
42、性能测试关注的指标是什么?
从外部看,性能测试主要关注如下三个指标:
吞吐量:每秒钟系统能够处理的请求数、任务数
响应时间:服务处理一个请求或一个任务的耗时
错误率:一批请求中结果出错的请求所占比例
从服务器的角度看,性能测试主要关注CPU、内存、服务器负载、网络、磁盘IO等。
43、给你⼀个插板,你怎么测试?
测试点可以分为:功能测试、兼容性测试、易⽤性测试、UI测试、安全性测试等等,
⽐如功能测试:插板的⼤⼩、有⼏个插孔、有没有开关按钮
⽐如兼容性测试:⼿机的充电器能不能⽤,电脑的插孔能不能⽤等
安全性测试:在插⼊的时候会不会触电,⽤电的时候 会不会漏电的情况
44、什么项目适合做自动化测试?
第一点,需求变化不能太频繁;
第二点,项目周期要足够长,如果自动化代码还没有写完,公司就倒闭了,那也不需要自动化了
第三点,脚本可以重复使用:在一些典型的场景,比如说 “冒烟测试、回归测试” 的地方就是经常使用自动化测试;
第四点,被测试的软件是否规范:比如说是不是有需求文档、规范的接口文档、是否有原型图、你的接口设计是不是比较规范;
第五点,手工测试是无法完成的;比如说一个性能测试,不能同时有 一千只手一直做好点点点,自动化测试的成本不是特别高
45、什么是页面静态化?
就是把一个动态的页面(操作数据库的 php 页面)变成一个静态页面,后续用户直接访问静态页面。
页面静态化技术分为两种:真静态和伪静态。
真静态:把一个动态的页面,实实在在的转成一个静态的页面,即.html 文件
伪静态:所谓伪静态是从 url 地址上看是一个静态页面,但是实际上还是对应一个动态页面
46、目前主要的测试用例设计方法是什么?
白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖
黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法
47、Jmeter 怎么做接口测试?怎么测试接口的关联?
参考答案:首先我们做接口测试的流程是:根据开发提供的接口文档,编写接口测试用例;然后根据用例使用Jmeter进行测试;
Jmeter做接口测试:测试计划–>添加线程组–>添加http请求–>输入url+端口+请求方法+参数–>添加头部信息–>添加查看结果树查看响应消息
然后对比接口测试用例的预期结果,同时也会同步检查数据库,确认接口测试结果的正确性(可以使用Navicat连接数据库,或者用Jmeter添加jdbc请求获取数据库信息)。还有就是一些数据也会定义为用户变量调用;以及批量测试,会使用csv测试元件读取数据进行批量测试;
接口关联:我们用的是Jmeter的后置处理器,JSON提取器和正则提取器,比如cookies token就可以提取出来赋值给一个变量,然后下个接口调用这个变量即可;
48、一个测试工程师应该具备哪些素质和技能?
1.掌握基本的测试基础理论
2.本着找出软件存在的问题的态度进行测试,不要以挑刺的形象出现
熟练阅读需求规格说明书等文档
3.以用户的观点看问题
4.有强烈的质量意识和责任心
5.有效的沟通方式
6.能够及时准确的判断出高危险区在何处
49、Python生成器和迭代器的区别?
作为迭代器必须实现两个特定的方法 “iter(),next()” ;
生成器是一种特许的迭代器,支持所有的迭代操作,除此之外生成器还实现了,普通迭代器没有的一些特性;
比如说它可以通过send的方法与生成器内部进行数据交互;还有它可以通过close方法去进行关闭;甚至还可以通过throw方法,引发内部的异常;
50、你们做过冒烟侧吗?冒烟测试是什么(理论)?
冒烟测试也叫预测试,就是正式测试之前的一种测试,为了确保主流程能走通。
可以回答没有冒烟测试,就说测试之前一般会要求开发自测,开发自测后(自测大概就是一天左右的时间),确保没有大的问题,再通知测试开始测试。
51、如果完美执行黑盒测试,还需要进行白盒测试吗?
软件的黑盒此时意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试 又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
a.是否有不正确或遗漏的功能?
b.在接口上,输入是否能正确的接收?能否输出正确的结果?
c.是否有数据结构错误或外部信息(例如数据文件)访问错误?
d.性能上是否能够满足要求?
e.是否有初始化或终止性错误?
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期状态一直,因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是相对程序模块进行如下检查:
a.对程序模块的所有独立的执行路径至少测试一遍。
b.对所有的逻辑判定,取‘真’与取‘假’的两种情况都能至少测一遍。
c.在循环的边界和运行的界限内执行循环体。
d.测试内部数据结构的有效性,等等
52、举一个电商项目的模块你是怎么做的?举例自己熟悉的,比如电商项目中的购物车?**
功能:
分为已登录和未登录的场景;如果是未登录的话,添加购物车就提示登录页面先登录;已经登录的话,可以正常跳转至购物车;
进入购物车的入口验证:比如淘宝商品页点击“加入购物车”切入,或从导航栏顶部去往购物车;
购物车空页面验证:当购物车商品添加为0时,页面是否正常提示
购物车的商品清单验证:一件/多件/多个商家多件商品的图片、名称、单价金额等是否正常显示,并且点击可跳转到商品详情页;
商品数量的增减和输入验证:测试1/最大库存/限购数量的正常情况 ,测试0/负数/超过库存/超过限购数量/非数字的异常情况;
选择全选和部分勾选商品,确认单件商品的小计金额、 结算里的数量和总价金额的正确性
购物车已添加的商品下架,是否正常显示失效
删除购物车商品,购物车不再显示,重新添加可正常显示
点击结算,可正常跳转到订单页面,并与优惠活动存在交互功能验证
非功能:
界面:页面的美观,没有错别字和页面排版等兼容性:Web 端的能兼容主流浏览器,APP 端能兼容手机和系统版本性能:多次访问,长时间访问考虑稳定性等安全:敏感信息的传输,漏洞扫描等
52、定期存款到期自动转存该怎么测?
回答思路:到期肯定会有边界,所以设计里面可以考虑边界值法。自动转存(首先要搞清楚什么是自动转存。)存钱该怎么测,用什么测试方法?
准备思路:存钱要分类:活期、零存整取等(具体规则百度下),然后根据每类的业务规则选择合适的用例设计方法。譬如一次最少存入多少?最多一次能存入多少等。