1、web端和app端测试的相同点和不同点的是?
相同点:
1)都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动
2)WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试、性能测试、安全性测试、GUI测试等测试类型
不同点:
1)采用的系统框架不同:web项目是b/s 框架,app项目是c/s 框架
2)性能方面:web页面主要会关注响应时间,而app则还需要关心流量、电量、CPU、GPU、Memory这些
3)兼容方面:①、web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容,而app需要测试手机版本(Android、ios)的兼容性
②、web测试是基于浏览器的所以不必考虑安装卸载,而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景,包括安装时的中断、弱网、安装后删除安装文件
4)app还需要在不同网络下测试(2G网络/3G网络/4G网络/WIFI网络),以及弱网测试、信号中断测试
2、los和android测试的侧重点是?
1.Android多分辨率测试,20多种,IOS较少。
2.Android手机操作系统较多,IOS较少且不能降级,只能单向升级;新的IOS系统中的资源库不能完全兼容低版本中的IOS系统的应用,低版本IOS系统中的应用调用新的资源库,会直接导致闪退。
3.Android操作习惯,Back键是否被重写,应用数据从内存移动到SD卡能否正常运行。
4.安装卸载测试:Android的下载和安装平台较多,IOS主要是AppStore,iTunes,TestFlight。
5.Push测试:Android点击home键,程序后台运行,此时点击Push消息,唤醒后台应用;iOS点击home键关闭程序和屏幕锁屏的情况。
6.单条item的操作:Android中分为点击和长按,点击一般进入一个新的页面,长按进入编辑模式。IOS中分为点击和滑动,点击一般进入一个新的页面,滑动会出现对item的常用操作。
7.悬浮窗:Android中可以有各种悬浮窗,IOS并不支持。
3、如何测试一个app的登录场景?
1.功能测试
2.性能测试
3.安全测试
4.兼容性测试
APP登录场景大体从以下几个方面进行:
页面基本元素的操作。
大量字符,特殊字符,边界值,必填项校验。
注册手机号的特殊性验证,注册邮箱的格式验证。
密码大小写是否敏感,密码是否加密展示,密码是否有可见按钮功能,密码框能否使用复制粘贴。
验证码校验:必填项,过期,错误,无网络时获取验证码,多次获取,超过获取次数,输入验证码后,修改手机号。
登录时与系统的交互:锁屏,蓝牙,home,后退,横竖屏,修改字体字号。
逆向思维:已注册账号注册,未注册账号忘记密码,未注册账号登录,注册过程中退出再次注册。
输入法交互,切换输入法,切换输入模式,手写/九宫格。
登录账号的多样性:多个账号轮流登录,同一个账号多角色登录。
第三方登录验证:账号授权,信息正确,取消授权。
登录页面跳转,返回,登录成功及其他页面跳转。
手机兼容性测试:分辨率兼容,系统兼容,系统版本兼容,App版本兼容。
网络切换,网络断开,弱网。
4、Push消息测试如何测试?
1.检查Push消息是否按照指定的业务规则发送。
2.检查不接收推送消息时,用户不会在接收到Push消息。
3.如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到Push。在非免打扰时间段内,用户能正常收到Push。
4.当Push消息是针对登录用户的时候,需要检查收到的Push与用户身份是否相符,没有错误的将其他人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送。
5.测试Push时,在开关机、待机状态下执行推送,消息及其推送跳转的正确性。
6.push消息时,会有红点展示,推送消息阅读前后数字的变化是否正确;
7.应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转是否正确。
8.多条推送的合集的显示和跳转是否正确。
5、App的闪退通常是什么原因造成的?
1.机缓存垃圾太多。闪退修复方法:进入设置—应用管理—全部,找到出现状况的应用程序,清理数据和缓存
2.手机内存不足。闪退修复方法:定期清理后台程序,删掉无用的照片和程序。
3.安卓因为审核较为简单而且很多第三方软件容易植入各种病毒代码。闪退修复方法:建议在正规商店下载程序。
4.网络差。闪退修复方法:建议在WIFI环境下使用部分大型游戏软件,也可升级到4G网络。
5.系统不兼容。闪退修复方法:更新升级手机系统版本即可。
6.手机杀毒软件存在恶意代码,会被杀毒软件拦截因而不能正常进入。解决方法:须通过绿色下载平台或者使用软件商店来下载安全系数较高的趣步手机应用。
6、常见的接口协议/类型是什么?
1.HTTP类型/协议:
通过GET或POST来获取数据,在数据处理上效率比较高 == 概念
2.Webservice 类型/协议:
通过soap协议来获取数据,比起 http 来说能处理更加复杂的数据类型。本质上也是 http 协议。
7、常见的接口请求方式是什么?
1.Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
2.Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
3.Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
4.Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
5.Delete 请求服务器删除request-URL所标示的资源(请求服务器删除页面)
6.opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送测试服务器功能(允许客户端查看服务器性能)
8、常见的状态码是什么以及都有什么意思请解释说明?
1.200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
2.404:(客户端问题)请求的资源没有找到,说明客户端错误的请求了不存在的资源;
3.500:(服务端问题)请求资源找到了,但服务器内部发生了不可预期的错误;
4.301/302/303:(网站搬家了,跳转)重定向
5.304: Not Modified,代表上次的文档已经被缓存了,还可以继续使用。如果你不想使用本地缓存可以用Ctrl+F5 强制刷新页面
9、接口测试的原理是什么?
1.接口测试的原理主要是模拟客户端向服务端发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
10、后台接口测试了一遍前端也测试了一遍是不是重复测试?
1.从后端角度出发:后端测试自己开发的接口,更多在于单测层面,好的开发会从接口业务调用场景出发,覆盖一些功能case,但是开发测试自己的代码,他往往觉得自己的代码已经很完美了,所以开发测试自己的代码往往是覆盖不全面的。
2.从前端角度出发:前端开发要和后端联调,所以前端的关注点是你接口返回给我的数据结构是不是严格按照技术方案上契约来设计的,你让我传给接口的参数是不是按照契约约定的,,所以前端开发不太关注接口逻辑对不对,只关心我只要入参给的对,返回的数据结构对就行了。
3.从测试角度出发:测试是保证质量最重要的一环,接口测试我们不仅仅只考虑功能层面用例,还要从非功能层面出发,比如接口性能,稳定性,安全性。我们还要结合业务场景,去思考一些反向的异常case,和其他服务相互调用过程的异常场景怎么兜底,依赖服务响应超时怎么兜底,系统异常怎么兜底等。
11、接口测试的流程/步骤?
1.需求分析和设计评审
2.测试框架和技术选型
3.测试计划制定
4.测试环境搭建
5.测试用例设计和评审
6.测试实现和执行
7.持续集成
12、get/post的区别?
1.get是获取数据的,而post是提交数据的
2.GET 用于获取信息,是无副作用的,是幂等的,且可缓存, 而POST 用于修改服务器上的数据,有副作用,非幂等,不可缓存。
13、如何编写接口测试用例?
1.用例编号
2.所属模块
3.用例标题
4.优先级
5.前置条件
6.操作步骤
7.请求方法
8.参数名
9.参数类型
10测试数据
11.预期结果
12.实际结果
13.通过否
14.bugid
15.编写人员
16.编写时间
17.测试人员
18.测试时间
19.备注
14、性能测试都包含了哪些?
1.压力测试
2.负载测试
3.容量测试
15.什么时候执行性能测试?
1.一般在系统功能稳定没有大的缺陷之后开始执行。但前期准备工作可以从系统需求分析时就开始:性能目标制定、场景获取、环境申请等。
16、你是如何做测试分析?
1.根据需求规格提取独立的功能点,确定测试范围
2.对独立功能进行分析,确定各独立功能的测试点
3.对业务场景即功能组合进行分析,提供业务场景的测试点
4.对非功能特性进行分析,了解需要测试的非功能特性
5.针对系统级接口进行分析,了解被测试对象、测试规格。分析可测性,确定测试方法、工具。
17、性能测试的步骤/流程?
1.测试准备
2.搭建环境
3.测试脚本开发
4.测试数据准备
5.测试执行
6.结果分析与调优
7.测试后续跟踪
18、如何识别性能测试的瓶颈?
1.查看系统日志,如果日志记录的全面,很容易通过日志发现问题。比如,系统宕机时,系统日志打印了某方法执行是抛出out of memory的错误,很快定位到导致内存溢出的问题在哪里。
2.利用性能监控工具,比如:linux系统环境下通过nmon来监控系统性能。
3.设计合理的性能测试场景,好的测试场景能更加快速的发现瓶颈。
4.了解系统参数配置,可以进行后期的性能调优
19、常用的性能测试指标的含义?
1.TPS
TPS的含义是每秒事务数。
2.并发
多个线程模拟多个虚拟用户(virtual user)
3.RT
response time;90%用户的响应时间,就是这个意思,比如一个小时内90%的响应时间为500ms,表示是这个小时内所有请求该页面的响应时间中,有90%的请求响应时间小于或等于500ms
4.吞吐量
20、如何判断一个bug是前端bug还是后台bug?
通常可以利用抓包工具来进行分析。可以从三个方面进行分析:请求接口,传参,响应。
1.请求接口url是否正确
2.传参是否正确
3.请求接口url和传参都正确,查看响应是否正确
4.也可以在浏览器控制台输入js代码调试进行分析
21、说一说你知道的Python数据类型有哪些?
1.数字类型
int(整型)、long(长整型)、float(浮点型)
2.字符串
3.布尔型
4.列表
5.元组
6.字典
7.集合
22、什么是测试用例?什么是测试脚本?两者关系?
1.测试用例为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
2.测试脚本是为了进行自动化测试而编写的脚本。
3.测试脚本的编写必须对应相应的测试用例
23、简述静态测试、动态测试、黑盒测试、白盒测试、α测试、β测试分别是什么?
1.静态测试(ui界面 业务逻辑 )是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。
2.动态测试(链接数据之后 )是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
3.黑盒测试 :纯功能测试
4.白盒测试 :使用编程脚本进行测试 实现自动化
5.α测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
6.β测试:是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
24、在你的项目中详细的描述一个测试活动完整的过程?
项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后SQA进入项目,开始进行统计和跟踪
开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。
测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。
测试用例完成后,测试和开发需要进行评审。
测试人员搭建环境
开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现BUG后提交给BugZilla。
开发提交第二个版本,包括Bug Fix以及增加了部分功能,测试人员进行测试。
重复上面的工作,一般是3-4个版本后BUG数量减少,达到出货的要求。
如果有客户反馈的问题,需要测试人员协助重现并重新测试。
25、如果项目周期很短,测试人力匮乏,你是怎么协调的?
1.依据代码review的结果和影响范围,对测试内容进行适当的裁剪。
2.借助自动化工具的支持,提高测试案例的执行效率。
3.调整组内任务的优先级,进行人力协调,优先投入最紧要的项目。
4.必要的情况下加班
26.如何对app进行弱网测试
一款APP针对不同网络情况下都需要保证不会崩溃,同时尽可能做到在弱网情况下也能达到功能正常使用,或者使用体验达到最佳。弱网测试可以测试APP的加载时间、可用性、稳定性和健壮性。这时我们就可以借助工具来模拟不同的网络状况,模拟2G、3G或弱网情况进行测试。工具可以选择Fiddler也可以选择Charles也可以选择其他工具。
1、描述下你团队的测试分工?
第一类 管理人员
负责测试团队管理的人,需要
对公司发展方向和产品规划有比较清晰的认识
能够分清楚测试任务的轻重缓急,尤其是哪些事情是不应该占用资源的
对下属的能力和优势比较了解,着眼于团队的培养和建设
能够从其他部门或是上级获得更多的支持
第二类 支持人员
负责测试支持的人,存在的目的就是节省测试人员的时间,提高测试效率
需要对于测试执行过程所需的工具非常熟悉
能够快速响应测试人员对测试工具的新需求,例如自动化测试中需要新加一个功能,测试仪器出了小故障了等
需要了解市面上测试工具和框架的发展,及时扩展测试“武器库”
第三类 测试执行人员
这些人在测试部门所占的比重应该是最大的。
具备测试所需的基础知识,了解要测试的产品
能够根据开发文档和公开的标准,提取罗列测试点
执行覆盖测试点,有条件的可以考虑编写调试自动化测试脚本
能够借鉴其它友商的产品和实现中优点,为完善产品提交建议
发现待测对象存在的问题,无论是模块级还是系统级,无论是功能性还是易用性,提单跟踪
待问题单被解决后,需要在新版本上进行验证确认
日常的回归测试,自动化脚本维护
2、你做移动端的应用和web的程序应用都是如何的兼容性测试的?
移动端
1、适配系统版本:
去二手平台找到低版本的设备
2、 适配不同机型:
选择世面上的主流机型
3、适配尺寸:
4、适配分辨率:
分辨率常见的720p(720×1280),1080p(1080×1920),2k(2560×1440)
5、适配网络:
三大运营商 、信号:2G、3G、4G、5G、WiFi
6、适配异形屏
现在手机花里胡哨的,全面屏、曲面屏、3D屏、刘海屏、挖孔屏、越来越多,所以我们也需要测试一下系统状态栏
7、涉及到蓝牙、耳机,看对应功能需要了
web端
1.操作系统兼容性
市场上有很多不同的操作系统,Windows 、Mac、Linux等操作系统。同一个应用在不同的操作系统下,可能会有兼容性问题,可能有些系统正常,有些系统不正常。
2.浏览器兼容性
国内主流的浏览器内核主要有3种:IE内核、Firefox内核和Chrome内核;
(1)IE内核常见的浏览器有:360安全浏览器(兼容模式)、360极速浏览器(兼容模式)、搜狗浏览
器(兼容模式)、QQ浏览器;
(2)Firefox内核常见的浏览器即火狐浏览器(Firefox);
(3)Chrome内核常见的浏览器有
3.分辨率兼容性
同一个页面在不同分辨率下,显示的样式可能会不一样。可以通过对浏览器的缩放的比例进行不同分辨率的测试。
台式机分辨率::1024×768、1280×1024、1440×900
笔记本电脑分辨率:1024X768 、1280X800、1440X900、 1600X9000
4.网速测试
项目在不同的网络环境中是否正常的运行,通过Charles、Fiddler等工具进行弱网测试。
3、请讲诉移动应用的灰度是怎么做的?
找单一渠道投放特别版本出去是一个思路。另一个是做升级平台的改造,允许针对部分用户推送升级通知甚至版本强制升级。
无论哪种方法都需要做好版本管理工作,分配特别的版本号以示区别。
当然,既然是做灰度,数据监控(常规数据、新特性数据、主要业务数据)还是要做到位,该打的数据桩要打。
还有,灰度版最好有收回的能力,一般就是强制升级下一个正式版。
4、请简述移动应用在升级安装时候应该考虑的场景?
1.APP有新版本时,打开APP是否有更新提示。
2.当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。
3.当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出APP。下次启动app时,仍出现强制升级提示。
4.不删除APP直接更新,检查是否能正常更新,更新后能否正常工作。
5.删除老的APP,重新下载APP,能不能正常工作。
6.不删除APP直接更新,检查更新后的APP和新安装的APP提供的功能一样。
7.检查在线跨版本升级能否成功,版本过老是否提示用户重装。
8.更新成功后,用户数据有没有丢失,各个配置项是否还原。
5、如果让你来测试扫码支付,你会考虑哪些场景?
功能测试用例
卡的类型(
一类户:借记卡、信用卡、各个开户行
二类户:虚拟账户如微信里的零钱账户、支付宝的余额宝、电子账户
二维码的商户类型(微信、支付宝、汇宜、银联)
支付限额(单笔限额、累计限额、日累计、月累计、支付笔数)
退款(退款入口、退款进度、退款结果)
对账
资金流动(我方扣款数额正确,对方收款数额正确)数额及时效
支付结果展示、交易明细
连续扫码支付,每天的扫码支付次数限制及数额限制
二维码有效期
有无相机权限
前后置摄像头
像素低端的手机能否扫码成功
兼容性
兼容性(不同手机厂商自带相机功能实现不一致)
安全性:
1.是否有超时超次限制
2.测试用户操作时相关信息是否写入了日志文件、是否可追踪等
3.如果使用了安全套字,需要测试加密是否正确,加密前后的信息完整性,正确性
性能
1.用户操作的响应时间
2.系统的吞吐量(TPS)
3.系统的硬件资源情况(CPU、硬盘、磁盘)
4.网络资源占用情况等。
异常场景
异常情况(卡异常、余额不足)
6、请描述下微信朋友圈发小视频的用例设计?
1、本地相册选择/拍摄
2、视频秒数验证:1-10s,超出10s
3、视频个数验证:1个,超出1个
4、视频格式验证:支持的视频格式,例mp4、不支持的视频格式
5、视频大小验证:苹果400kb以内、Android200-300kb(此为百度数据)、超出规定大小
6、视频预览增删改操作
7、为空验证
7、一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
一个客户端,三百个用户
只有一个客户端,三百个用户肯定不能同时进行操作,假设每次一人操作客户端对服务器施压,服务器承受的压力小但持续时间长
三百个客户端,三百个用户
假设三百个客户端同时进行操作对服务器施压,就要求服务器带宽能够承受三百人同时在线操作,且服务器短时间内承受压力大但持续时间短
8、您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果
尽量面对面的沟通,其次是能直接通过电话沟通,如果只能通过Email等非及时沟通工具的话,强调必须对特性的理解深刻以及能表达清楚。
运用一些测试管理工具如TestDirector进行管理也是较有效的方法,同时要注意在TestDirector中对BUG有准确的描述。
在团队中建立测试人员与开发人员良好沟通中注意以下几点:
一真诚、二是团队精神、三是在专业上有共同语言、四是要对事不对人,工作至上
当然也可以通过直接指出一些小问题,而不是进入BUG Tracking System来增加对方的好感。
9、简述你在以前的工作中做过哪些事情,比较熟悉什么?
我过去的主要工作是系统测试和自动化测试。在系统测试中,主要是对BOSS系统的业务逻辑功能,以及软交换系统的Class 5特性进行测试。性能测试中,主要是进行的压力测试,在各个不同数量请求的情况下,获取系统响应时间以及系统资源消耗情况。自动化测试主要是通过自己写脚本以及一些第三方工具的结合来测试软交换的特性测试。
在测试中,我感觉对用户需求的完全准确的理解非常重要。另外,就是对BUG的管理,要以需求为依据,并不是所有BUG均需要修改。
测试工作需要耐心和细致,因为在新版本中,虽然多数原来发现的BUG得到了修复,但原来正确的功能也可能变得不正确。因此要注重迭代测试和回归测试
10、请说出这些测试最好由那些人员完成,测试的是什么?
代码、函数级测试一般由白盒测试人员完成,他们针对每段代码或函数进行正确性检验,检查其是否正确的实现了规定的功能。
模块、组件级测试主要依据是程序结构设计测试模块间的集成和调用关系,一般由测试人员完成。
系统测试在于模块测试与单元测试的基础上进行测试。了解系统功能与性能,根据测试用例进行全面的测试。
11、在windows下保存一个文本文件时会弹出保存对话框,如果为文件名建立测试用例,等价类应该怎样划分?
12、假设有一个文本框要求输入10个字符的邮政编码,对于该文本框应该怎样划分等价类?
特殊字符,如10个*或¥;英文字母,如ABCDefghik;小于十个字符,如123;大于十个字符,如11111111111;数字和其他混合,如123AAAAAAA;空字符;保留字符
13、您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。?
评审计划->预审->评审;
评审内容主要是测试用例对软件需求的覆盖程度,对于相关边界是否考虑,是否针对复杂流程准备多套测试数据,是否有专门针对非功能性需求的测试。
14、在你测试的过程中如果发生时间上不允许进行全部测试,你应该怎么做?
软件测试初学者可能认为拿到软件后需要进行完全测试,找到全部的软件缺陷,使软件“零缺陷”发布。实际上完全测试是不可能的。主要有以下一个原因:
-完全测试比较耗时,时间上不允许;
-完全测试通常意味着较多资源投入,这在现实中往往是行不通的
-输入量太大,不能一一进行测试;
-输出结果太多,只能分类进行验证;
-软件实现途径太多;
-软件产品说明书没有客观标准,从不同的角度看,软件缺陷的标准不同;
因此测试的程度要根据实际情况确定。
15、列举web自动化中常见的元素定位方式是?
通过class属性定位
通过id属性定位
通过name属性定位
通过link属性定位
通过partialLink定位
通过标签tagname定位
通过css定位
通过xapth定位
16、简述你知道的延时等待的方式?
sleep(): 强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。
implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。
WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。
17、自动化测试用例的覆盖率多少?
40%左右
18、完整运行一次自动化用例需要多久时间?
主要跑的是业务流,所以跑一次需要半个小时左右
19、什么是分层自动化?
金字塔结构, 最底层UnitTest,往上接口API/集成起来的service, 最上面UI自动化
20、你的测试数据是怎么准备的?
提前准备好,在代码里的yaml文件
21、请简述Appium和selenium的原理?
selenium:
IDE,俗称集成开发环境(编辑器),client(1.编写脚本,形成操作指令集,并运行时,会启动webdriver。2.webdriver启动后,绑定ip和端口,向发送来的请求的链接创建session(首次)。webdriver提供的http服务,client通过API接口访问webdriver,发送指令,webdriver接到指令后,按照自己封装的原生的浏览器API,对浏览器进行操作。webdriver将操作完成结果返回给客户端)
简化版:
1.IDE,俗称集成开发环境(编辑器),client(1.编写脚本,形成操作指令集,并运行时,会启动webdriver。通过HTTP协议传输给Webdriver
2.webdriver启动后,绑定ip和端口,向发送来的请求的链接创建session(首次)。webdriver提供的依http协议方式提供API接口服务,client通过API接口访问webdriver,发送指令,数据格式是JSON格式。webdriver接到指令后,按照自己封装的原生的浏览器API,对浏览器进行操作。webdriver将操作完成结果依照JSON格式返回给客户端
appium:
Appium是C/S架构的,更像是一个proxy,连接其被测移动平台和测试脚本。
appium是基于 webdriver 协议添加对移动设备自化api扩展而成的。
22、如何实现jenkins实现自动自动化打包发布和启动?
一、安装jenkins
二、进入jenkins
三、安装和Git,GitLab插件
四、新建item
23、你为什么离开上家公司?离职原因(这个会在最后问)
不发工资
24、请写出冒泡排序
def bubbleSort(array):
maxindex = len(array)-1
maxValue = array[maxindex]
k=0
while maxindex:
for i in range(1,maxindex):
if array[i-1]>array[i]:
temp = array[i]
array[i] = array[i-1]
array[i-1] = temp
k+=1
maxindex -=1
print(k)
return array
25、1~9999数列中数字3出现的次数。用递推方法解出。
def count_digit(number):
return len(str(number))
def countThree(digit):
if not isinstance(digit,int):
raise TypeError(‘number is not int’)
digit = len(str(number))
if(digit <=0):
return 0
if(digit ==1):
return 1
return 10*countThree(digit-1) + 10 **(digit-1)
print(countThree(count_digit(9999)))
26、从一个数组中找出前4个最大的数,用最优解。
#快速排序:最快的n*logN
def qiuckSort(list):
if len(list)<2:
return list
mid = list[0]
left = [i for i in list[1:] if i <= mid]
right = [i for i in list[1:] if i > mid]
finallyList = qiuckSort(left)+[mid] + qiuckSort(right)
return finallyList
array = [3, 0, 1, 832,23,45, 5, 5, 6,46, 9, 56, 897]
print(qiuckSort(array)[-4:])
27、写一段程序,删除字符串a中包含的字符串b,举例 输入a = “asdw”,b = “sd” 返回 字符串 “aw”,并且测试这个程序。
def delBString(a,b):
if not isinstance(a,str):
raise TypeError(“a is not str”)
if not isinstance(b,str):
raise TypeError(“b is not str”)
if len(a) < len(b):
raise Exception(‘a length must large to b length’)
result = []
flag = False
i=0
la = len(a)
lb = len(b)
while i
while j < lb:
if i+j < la and a[i+j] == b[j]:
j += 1
else :
j += 1
flag = False
break
flag = True
if flag:
i += lb
else:
result.append(a[i])
i += 1
return “”.join(result)
28、写一个方法把字符串转为数字,比如 str=“1234”,变成 int 1234。并且测试这个程序
数据库的中的左连接右连接和全连接内连接的区别?
def delBString(a,b):
if not isinstance(a,str):
raise TypeError(“a is not str”)
if not isinstance(b,str):
raise TypeError(“b is not str”)
if len(a) < len(b):
raise Exception(‘a length must large to b length’)
result = []
flag = False
i=0
la = len(a)
lb = len(b)
while i
while j < lb:
if i+j < la and a[i+j] == b[j]:
j += 1
else :
j += 1
flag = False
break
flag = True
if flag:
i += lb
else:
result.append(a[i])
i += 1
return “”.join(result)
何必伪装:
29、数据库的中的左连接右连接和全连接内连接的区别?
比如有两张表 A,B。左连接是把符合条件的所有A表的内容列出来,B表如果没有内容匹配用NULL代替。
右连接是符合条件的所有B表的内容列出来,A表如果没有内容匹配用NULL代替
30、测试结束的标准是什么?
错误强度曲线下降到bai预du定的水平。