当前位置: 首页 > news >正文

南江县建设局网站wordpress本地备份

南江县建设局网站,wordpress本地备份,外贸网站推广平台排名前十名,大泽山seo快速排名#x1f345; 点击文末小卡片#xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计#xff0c;到…  点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快    一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计到开发成功投入使用并在使用中不断地修改、增补和完善直到停止该软件的使用的全过程(从酝酿到废弃的过程) 生命周期从收到应用软供开始算起到该软件不再使用为止。 它有如下各方面的内容 初始构思、需求分析、功能设计、内部设计、文档计划、测试计划、文档准备、集成、测 试、维护升级、再测试、逐步淘汰 (phase-out)、等等 常见的软件生命周期模型 瀑布模型迭代式模型快速原型模型螺旋模型 2、什么是版本控制常用的版本控制系统有哪些? 版本控制 (Revision control) 是一种软件工程技巧在在开发的过程中确保由不同人所编辑的司一文件都得到更新及历史记录的保存。Git(读音为/git/。)是一个开源的分布式版本控制系统可以有效、高速的处理从很小到非常大的项目版本管理。  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 https://git-scm.com/docSVN 是 Subversion 的简称是一个开放源代码的版本控制系统相较于 RCS、CVS它采用了分支管理系统它的设 计目标就是取代CVs .互联网上很多版本控制服务已从CVs 迁Subversion移https://tortoisesvn.net/support.htm 3、简述软件测试与软件开发之间的关系? 1.项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。 2.需求分析阶段:确定测试需求分析、系统测试计划的制定评审后成为管理项目。测试需求分析是对产品生命周期中测试所需求的资源配置、每阶段评判通过的规约系统测试计划则是依据软件的需求规格说明书制定测试计划和设计相应的测试用例。 3.详细设计和概要设计阶段: 确保集成测试计划和单元测试计划完成。 4.编码阶段: 由开发人员进行自己负责部分的代码的测试。在项目较大时由专人进行编码阶段的测试任务 5.测试阶段(单元、集成、系统测试) :  依据测试代码进行测试并提交相应的测试状态报告和测试结束报告开发和测试是一个有机的整体!在产品的发布之前开发和测试是循环进行的 测出的缺陷要经开发人员修改后继续测试。在开发的同时测试经理开始编写测试用例测 试文档要参考开发文档所以开发和测试是不可分割的少了任何一个都不能开发出产品。从角色方面看像理论和实验的关系开发人员通过自己的想象创造出一套思想之 后测试人员再对它进行检验、证伪开发人员再修改的过程从而不断丰富产品。 从方法方 面看是演绎和归纳的关系一个要掌握大量的技术一个要不断的从实例中学习。因这 两方面的不司所以开发和测试看上去做的工作很不一样开发与测试是相辅相承、密不可分的开发人员开发出新的产品后要通过测试判断产 品是否完全满足用户的需求。如果发现缺陷提交给开发人员进行修复然后再转交测试 人员进行回归测试直到产品符合需求规格说明。符合用户需求的产品是开发和测试 共同努力的成果 4、请根据”V”模型分别概述测试人员在软件的需求定 义阶段、设计阶段、编码阶段、系统集成阶段的工作任务及其相应生成的文档? 需求定义阶段:根据项目需求提取测试需求 并形成测试需求文档根据提取的测试需求和项目计划进行测试计划的拟定测试计划文档 设计阶段: 根据测试需求拟订测试方案并形成测试方案文档根据测试方案制定测试用例并形成测试用例文档 编码阶段:执行测试并完善测试用例文档 系统集成阶段:测试总结报告阶段问题统计报告测试问题报告 5、W 模型的描述? W 模型也称之为双V 模型一个V 是开发的生命同期另一个V 是测试的生命周期W 模型与V模型有一个很大的不同就是W 模型是一个并行的模型V 模型是一个串行的模型W 模型开始是从需求分析开始就开始了而不是等到编码完成后才开始。 并且测试阶段的划分更清楚而不仅仅是单元测试、集成测试、系统测试还包括前期的测试计划、测试方案等内容这更符合现在企业测试的流程。W 模型强调测试伴随着整个软件开发周期而且测试的对象不仅仅是程序需求、设计等同样要测试也就是说测试与开发是同步进行的。W 模型有利于尽早全面地发现问题。 从需求分析开始测试工程师就参与到项目的测试中当需求分析完成后测试工程师就需要参与到需求的验证和确认活动中并需要提供可测试性需求分析说明书这样可以尽早地发现需求阶段的缺陷。同时对需求的测试也有利子及时了解项目难度和测试风险及早制定应对指施这将显著减少总体测试时间加快项目进度。 但W 模型也存在局限性需求、设计、编码等活动被视为是串行的同时测试和开发活动也保持着一种线性的前后关系上一阶段完全结束才可正式开始下一阶段工作这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况W 模型并不能解除测试管理面临的床惑。 总之W 模型具有以下特征 (1)测试阶段戈分得更全面不仅仅是单元测试、集成测试和系统测试 (2)测试与开发是并行的从需求测试就应该开始介入 (3)提出尽早测试的概念这样可以险低缺陷修复成本; (4)测试对象不仅仅是程序还包括需求或其他的相关文档 6、编写测试计划的目的是? 使测试工作顺利进行使项目参与人员沟通更舒畅使测试工作更加系统化 7、测试计划编写的六要素? why一一为什么要进行这些测试 what一测试哪些方面不同阶段的工作内容 when一测试不同阶段的起止时间 where一相应文档缺陷的存放位置测试环境等 who一项目有关人员组成安排哪些测试人员进行测试 how一如何去做使用哪些测试工具以及测试方法进行测试。 8、项目版本执行过程中测试人员如何把控测试进度? 在项目的系统测试过程中测试负责人要及时了解测试进度跟踪 BUG 提交、修复及验证情况以及系统的拷机情况。在开发初期阶段测试组执行BBFV 时很多模块、功能点的开发完成进度和原计划会存在一定的偏差就需要测试负责人动态的刷新WBS 计划根据实际的开发进度调整测试计划。 在开发阶段存在版本编译不出来导致无法测试开发人员修复代码太随意导致版本稳定性反复需求变更过大导致后端测试开发变更严重等现象会导致测试工作无法正常进行。 就需要测试负责人及时反馈出来根据项目本身的特点讲行对应的处理。当测试进度出现延期时要及时确认问题原因如果是问题协查导致则需及时与研发人员进行沟通协商看问题是否必须在测试环境进行排查若为必现问题可与研发协商要求其在自己环境进行排查若必须占用测试环境则需及时调整测试计划若因此可能影响版本的发布则应及时与 SE 确认。 若发现有较多BUG 未解决则应主动联系 SE 及研发人员召开BUG 会确定问题的解决时间。若发现有较多BUG未验证则应提醒项目组的测试人员及时进行验证对于一些拷机或非必现的BUG建议测试人员在此 BUG 上现做拷机标记连续拷机一周未再复现的做关闭处理若再次复现则继续进行排查。疑难问题的跟控: 比较难复现的问题怎么去尝试复现。 比较难定位的问题怎么驱动、反馈给SE协调开发人员定位问题。比较难处理的问题怎么跟控反馈进度等每天下班前确认拷机内容每天上班第一件事需确认拷机结果只有这样才能保证拷机的效果实现拷机的真正意义。 9、测试人员在软件开发过程中的任务是什么? 寻找 Bug避免软件开发过程中的缺陷;衡量软件的品质关注用户的需求。总的目标是确保软件的质量。 10、软件缺陷有哪些 1软件未实现产品说明书要求的功能 2软件出现了产品说明书指明不应该出现的错误 3软件实现了产品说明书未提到的功能 4软件未实现产品说明书虽未明确提及但应该实现的目标 5软件难以理解、不易使用、运行缓慢或者从测试员的角度看最终用户会认为不好 为了发现软件产品中的各种缺陷而对软件产品进行验证和确认的活动过程此过程贯穿整个软件开发生命周期。简单的说软件测试是以发现错误为目的而执行的一个程序或系统的过程。 11、你如何理解软件测试的目的 验证软件需求和功能是否得到完整实现 验证软件是否可以发布 尽可能多的发现软件中的bug 尽可能早的发现软件中的bug 对软件质量做出合理评估 预防下个版本可能出现的问题 预防用户使用可能出现的问题 发现开发过程中的问题和风险 12、软件测试有哪些原则? 所有测试的标准都是建立在用户需求之上 。 合理控制测试深度与广度完全测试不可能测试的投入与产出要均衡。 80-20原则软件中80%的bug可以在分析、设计与评审阶段就能被发现与修正16%的缺陷在系统的软件测试中发现最后剩下的4%是用户长期使用的过程中才能暴露出来。 尽可能早的开展测试越早发现错误修改的代价越小。 发现错误较多的程序段应进行更深入的测试。 软件项目一启动软件测试也就是开始而不是等程序写完才开始进行测试 。 软件开发人员即程序员应当避免测试自己的程序 严格执行测试计划排除测试的随意性以避免发生疏漏或者重复无效的工作 优秀测试人员应具备的素质 1沟通能力与表达能力  2好奇心与怀疑精神  3责任感与抗压能力  4自信心坚持自己的观点 5耐心与细心  6逆向思维的能力  7善于学习与总结  8团队协作精神  9文档编写能力 优秀测试人员应具备的技能 1精通业务知识  2具备软件编程能力比如C,C,JAVA等。 3可以用脚本语言编写小测试工具 4主流操作系统应用与网络知识可以搭建测试环境  5熟练掌握各种数据库知识  6精通软件测试理论与方法  7掌握常用测试与开发工具的使用  8优秀的文档编写能力 13、说一说软件测试的组织架构 1项目型的测试组织 测试人员作为项目组的固定成员从头到尾的跟着项目走 2智能型的测试组织 测试人员参与到项目中是以独立的测试部门委派的方式进入 3综合型的测试组织 项目型与职能型的结构组合并加以改造而产生的。测试部门把测试人员分为常规项目测试人员与专项测试人员。测试部门会把常规测试人员长期委派到项目组中成为项目中的一员。专项测试人员一般由性能测试工程师、自动化测试工程师、安全性测试工程师等组成。只有当项目发生专门需求测试时测试部门才灵活把专项测试人员委派到各个项目组进行专项测试。 14、软件测试常见分类有哪些 1按照是否执行被测试软件来分 静态测试是指不运行软件测试包括代码检查、静态结构分析、代码质量度量等主要对软件需求说明书、设计说明书、软件源代码进行检查与分析。 动态测试指通过运行被测程序检查运行结果与预期结果的差异分析差异原因并分析软件运行效率、健壮性等性能。动态测试是目前公司主要的测试方式 2按照测试技术分为黑盒测试和白盒测试 黑盒测试黑盒测试又叫功能测试或数据驱动测试在完全不考虑程序内部结构和内部特性的情况下通过软件的外部表现来发现其缺陷和错误。 白盒测试白盒测试也称结构测试或逻辑驱动测试它是按照程序内部的结构进行测试程序通过测试来检测产品内部逻辑是否按照设计规格说明书的规定正常进行检验程序中的每条通路是否都能按预定要求正确工作。 3按照测试手段来分可以分为手工测试和自动化测试 4按照过程阶段来分可以分为单元测试、集成测试、系统测试和验收测试 单元测试通过模块(类/方法/函数)测试使代码达到设计要求 主要目的是针对编码过程中可能存在的各种错误例如用户输入验证过程中的边界值的错误。 集成测试将经过单元测试的模块逐步组装成完整的程序。主要目的是检查各单元与其它程序部分之间的接口是否存在问题各模块功能之间是否有影响。 系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起进行测试。系统测试是针对整个产品系统进行的测试目的是验证系统是否满足了需求规格的定义找出与需求规格不符或与之矛盾的地方 进行改正。 验收测试验收测试是在软件产品完成了单元测试、集成测试和系统测试之后产品发布之前所进行的最后一次软件测试活动也称为交付测试。通常由业务专家或用户进行以确认产品能真正符合用户业务上的需要。 15、软件开发流程和开发模型 软件生命周期 计划-》需求分析-》设计-》程序编写-》测试-》运行/维护 软件测试流程 测试计划-》需求分析-》测试用例-》测试用例执行-》提交bug-》回归测试 瀑布模型适用于需求很明确的项目分阶段向下进行无法回溯 迭代模型需求不明确迭代版本系统 敏捷开发模型 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中软件项目被切分成多个子项目各个子项目的成果都经过测试具备集成和可运行的特征。换言之就是把一个大项目分为多个相互联系但也可独立运行的小项目并分别完成在此过程中软件一直处于可使用状态。 测试驱动开发模型先编写测试代码再写开发代码 16、软件测试模型有哪些 V模型反映了测试与开发阶段之间一一对应的特点测试在开发之后出错后回归测试量大 W模型测试伴随整个开发周期测试与开发同步进行有利于尽早发现问题 H模型软件测试活动完全独立与其他流程并行 二、WEB功能测试面试题 1、Student-coures-Studentcourse表关系如下: student(sno,sname,age,sdept)学生表 course(cno,cname,teacher)课程表 Studentcourse(sno,cno,grade)选课表写出sql语句: ·查询所有课程都及格的学生号和姓名·查询平均分不及格的课程号和平均成绩 找出各门课程的平均成绩输出课程号和平均成绩 找出没有选择c2课程的学生信息 2、请说出XHTML和HTML的区别 1、文档顶部doctype声明不同xhtml的doctype顶部声明中明确规定了xhtml DTD的写法; 2. html元素必须正确嵌套不能乱;3、属性必须是小写的; 4、属性值必须加引号; 5、标签必须有结束单标签也应该用“/”来结束掉; 3、很多网站不常用table iframe这两个元素知道原因吗 因为浏览器页面渲染的时候是从上至下的而table和iframe这两种元素会改变这样渲染规则他们是要等待自己元素内的内容加载完才整体渲染。用户体验会很不友好。 4、jpg和png格式的图片有什么区别? jpg是有损压缩格式png是无损压缩格式。所以相同的图片jpg体积会小。 比如我们一些官网的banner图一般都很大所以适合用jpg类型的图片。 但png分8位的和24位的8位的体积会小很多但在某些浏览器下8位的png图片会有锯齿。 5、简述—下src与href的区别 浏览器会识别href引用的文档并行下载该文档并且不会停止对当前文档的处理 当浏览器解析到src引|用时会暂停浏览器的渲染,直到该资源加载完毕。这也是将js脚本放在底部而不是头部的原因。 6、:before和::before区别? 单冒号(t)用于CSS3伪类双冒号(:)用于CSS3伪元素。 对于CSS2之前已有的伪元素比如:before单冒号和双冒号的写法::before作用是一样的。 7、如何理解HTML结构的语义化? 所谓标签语义化就是指标签的含义。语义化的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途和作用对搜索引擎友好有了良好的结构和语义我们的网页内容便自然容易被搜索引擎抓取这种符合搜索引擎收索规则的做法网站的推广便可以省下不少的功夫而且可维护性更高因为结构清晰,十分易于阅读。这也是搜索引擎优化SEO重要的一步。 8、常见的视频编码格式有几种?视频格式有几种? 视频格式:MPEG-1、MPEG-2和MPEG4 、AVl .RM、ASF和WMV格式 视频编码格式:H.264、MPEG-4、MPEG-2.WMA-HD以及VC-1 9、JS中null, undefined的区别? null表示一个对象被定义了但存放了空指针转换为数值时为0。 undefined表示声明的变量未初始化转换为数值时为NAN。 typeof(null) - object; typeof(undefined) - undefined 10、什么是sql注入什么是跨站脚本什么是跨站请求伪造? SQL注入攻击是注入攻击最常见的形式(此外还有OS注入攻击( Struts 2的高危漏洞就是通过OGNL实施OS注入攻击导致的))当服务器使用请求参数构造SQL语句时恶意的SQL被嵌入到SQL中交给数据库执行。SQL注入攻击需要攻击者对数据库结构有所了解才能进行攻击者想要获得表结构有多种方式 如果使用开源系统搭建网站数据库结构也是公开的(目前有很多现成的系统可以直接搭建论坛电商网站虽然方便快捷但是风险是必须要认真评估的);错误回显如果将服务器的错误信息直接显示在页面上攻击者可以通过非法参数引发页面错误从而通过错误信息了解数据库结构Web 应用应当设置友好的错误页一方面符合最小惊讶原则一方面屏蔽掉可能给系统带来危险的错误回显信息);盲注。防范SQL注入攻击也可以采用消毒的方式通过正则表达式对请求参数进行验证此外参数绑定也是很好的手段这样恶意的SQL会被当做SQL的参数而不是命令被执行JDBC中的PreparedStatement 就是支持参数绑定的语句对象从性能和安全性上都明显优于Statement。 xss (Cross Site Script跨站脚本攻击是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。跨站脚本攻击分有两种形式: 反射型攻击诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标目前有很多攻击者利用论坛、微博发布含有恶意脚本的URL就属于这种方式) 持久型攻击将恶意脚本提交到被攻击网站的数据库中用户浏览网页时恶意脚本从数据库中被加载到页面执行QQ邮箱的早期版本就曾经被利用作为持久型跨站脚本攻击的平台)。 CSRF 攻击(Cross Site Request Forgery跨站请求伪造)是攻击者通过跨站请求以合法的用户身份进行非法操作如转账或发帖等。CSRF的原理是利用浏览器的Cookie或服务器的Session ,盗取用户身份其原理如下图所示。防范CSRF的主要手段是识别请求者的身份主要有以下几种方式 在表单中添加令牌(token) ;验证码;检查请求头中的Referer (前面提到防图片盗链接也是用的这种方式)。 令牌和验证都具有一次消费性的特征因此在原理上一致的但是验证码是一种糟糕的用户体验不是必要的情况下不要轻易使用验证码目前很多网站的做法是如果在短时间内多次提交一个表单未获得成功后才要求提供验证码这样会获得较好的用户体验。 三、APP测试面试题 1基础篇 1、请介绍一下APP测试流程 APP测试流程与web测试流程类似分为如下七个阶段 1.根据需求说明书编写测试计划 2.制定测试方案主要是测试任务、测试人员和测试时间的分配 3.测试准备包括搭建测试环境准备测试数据确定测试方法 4.测试用例的设计与编写进行用例评审及补充完善 5.执行测试时首先进行冒烟测试然后对主功能流程进行测试包括客户端的单个功能模块及功能业务逻辑功能交互回归测试 6.提交测试结果包括测试用例测试计划 7.日常维护性测试 APP测试周期可根据项目的开发周期来确定测试时间一般测试时间为两三周根据项目情况以及版本质量可适当缩短或延长测试时间。 2、APP测试需要提前准备哪些测试资源 具体要准备的测试资源根据实际项目来可以从以下几个方面出发 1.IOS设备、Android设备选取市面上主流手机产品 2.支付宝/银联支付的项目需要提前申请支付宝/银联账户等等 3.有秒杀专题的题目需要规划秒杀时间表 4.有优惠券使用的项目需要添加优惠券数据 3、APP测试和Web测试的区别 单纯从功能测试的层面上来讲的话APP 测试、web 测试在流程和功能测试上是没有区别的。 相同点 1.同样的测试用例设计方法 2.同样的测试方法都会依据原型图或效果图检查UI 3.测试页面载入和翻页的速度、登录时长、内存是否溢出等 4.测试应用系统的稳定性 不同点 1.系统结构方面 web项目b/s架构基于浏览器的web测试只要更新了服务器端客户端就会同步更新。 app项目c/s结构的必须要有客户端app 修改了服务端则客户端用户所有核心版本都需要进行回归测试一遍。 2.性能方面 web项目 需监测 响应时间、CPU、Memory app项目 除了监测 响应时间、CPU、Memory外还需监测 流量、电量等 3.兼容性方面 web项目浏览器火狐、谷歌、IE等操作系统Windows7、Windows10、Linux等。 app项目设备系统:iOSipad、iphone、Android三星、华为、联想等 、WindowsWin7、Win8、OSXMac手机设备可根据 手机型号、分辨率、屏幕尺寸不同。 4.测试工具方面 自动化工具APP 一般使用 Appium; Web 一般使用 Selenium性能测试工具APP 一般使用Monkey、 JMeter; Web 一般使用 LR、JMeter 4、相对于 Web 项目APP有哪些专项测试 1干扰测试中断来电短信关机重启等。 2弱网络测试模拟2g、3g、4g、5gwifi网络状态以及丢包情况网络切换测试网络断开后重连、3g切换到4g、5g/wifi 等。 3安装、更新、卸载中断、前后台切换。 安装需考虑安装时的中断、弱网、安装后删除安装文件全新安装、升级安装、第三方工具安装等情况 卸载需考虑第三方工具卸载、直接卸载卸载后是否删除app相关的文件 更新分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新 中断来电中断、短信中断、闹钟中断、手机锁定、手机断电、手机死机 4界面操作关于手机端测试需注意手势横竖屏切换多点触控前后台切换。 5安全测试安装包是否可反编译代码、安装包是否签名、权限设置例如访问通讯录等。 6边界测试可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖QQ、微信登录等。 7权限测试设置某个App是否可以获取该权限例如是否可访问通讯录、相册、照相机等。 5、Android手机和IOS手机系统有什么区别 1.两者运行机制不同IOS采用的是沙盒运行机制安卓采用的是虚拟机运行机制。 IOS 沙盒运行机制: 每个程序都有自己的虚拟地址空间。所以程序之间不能进行访问。 默认只会将应用的最后运行数据记录在RAM里面。 Android 虚拟机运行机制 所有的应用程序都是运行在虚拟机中用户界面其实是由虚拟机传递的并且通过虚拟机Android的任何程序都就可以轻松访问其他程序文件。 所有的Android的应用程序都是运行在RAM里面的所以会发现有时候Android用着用着就开始有点卡顿。 2.两者后台制度不同IOS中任何第三方程序都不能在后台运行安卓中任何程序都能在后台运行直到没有内存才会关闭。 3.IOS中用于UI指令权限最高安卓中数据处理指令权限最高。 6、IOS和Android的APP测试有什么区别 1.物理按键Android长按home键呼出应用列表和切换应用然后右滑则终止应用iOS所有的返回上一层只能靠页面功能实现。 2.多分辨率测试Android端20多种IOS较少。 3.手机操作系统Android较多IOS较少且不能降级只能单向升级新的IOS系统中的资源库不能完全兼容低版本中的IOS系统中的应用低版本IOS系统中的应用调用了新的资源库会直接导致闪退。 4.操作习惯AndroidBack键是否被重写测试点击Back键后的反馈是否正确应用数据从内存移动到SD卡后能否正常运行等。 5.push测试Android点击home键程序后台运行时此时接收到push点击后唤醒应用此时是否可以正确跳转IOS点击home键关闭程序和屏幕锁屏的情况红点的显示。 6.安装卸载测试Android可以通过手机自带的应用市场或者是第三方的手机助手进行下载下载和安装的平台和工具和渠道比较多IOS主要有app storeiTunes和testflight下载。 7.升级测试可以被升级的必要条件新旧版本具有相同的签名新旧版本具有相同的包名有一个标示符区分新旧版本如版本号。 8.支付方式对于一些有内购功能的APPAndroid直接调用第三方支付渠道完成支付IOS需要先在APP store里绑定支付方式然后通过APP store去完成支付操作。 9.消息推送机制Android使用第三方或者自建平台进行消息推送IOS的消息推送渠道由苹果官方提供。 7、介绍一个APP抓包工具 一般用Fiddler主要用来做app抓包使用先在Fiddler客户端做好各项配置端口设置为8888;然后在手机上设置代理就可以抓包主要看的是服务器返回的值、还能够修改传入参数、传出的参数、模拟网络延时构造不同场景。 8、APP日志如何抓取 可以使用adb命令adb logcat | find com.sankuai.meituan d:\test.txt 也可以用ddms抓取手机连上电脑打开ddms工具 或者在Android Studio开发工具中打开DDMS 9、常用的adb命令有哪些 1.查看帮助手册列出所有的选项说明及子命令 adb help 2.获取设备列表及设备状态 adb devices 3.安装应用adb install 路径\xx.apk, 安装应用adb install -r 重新安装。 adb install adb install -r 4.获取设备的状态设备的状态有 device , offline , unknown3种其中device设备正常连接offline连接出现异常设备无响应unknown没有连接设备。 adb get-state 5.卸载应用adb uninstall 包名, 后面的参数是应用的包名区别于 apk 文件名。 adb uninstall 6.将 Android 设备上的文件或者文件夹复制到电脑本地adb pull 远程路径 本地路径, 如复制 Sdcard 下的 pull.txt 文件到 D 盘adb pull sdcard/pull.txt d:\重命名adb pull sdcard/pull.txt d:\rename.txt。 adb pull 7.推送本地文件至 Android 设备adb push 本地路径 远程路径, 如推送 D 盘下的 ITester.txt 至 Sdcardadb push d:\ITester.txt sdcard/ 注意sdcard 后面的斜杠不能少。 adb push 8.结束和启动adb服务adb kill-server /adb start-server , 结束 adb 服务/启动 adb 服务通常两个命令一起用设备状态异常时使用 kill-server运行 start-server 进行重启服务。 adb kill-server adb start-server 9.打印及清除系统日志adb logcat , 打印 Android 的系统日志 adb logcat -c,清除日志。 adb logcat adb logcat -c 10.查找包名/活动名 adb logcat | findstr START 10、adb三个组件是指 ADB作为一个客户端/服务器架构的命令行工具主要由3个部分组成。 adb clent客户端可以通过它对Android应用进行安装、卸载及调试。 adb service服务器管理客户端到Android设备上abd后台进程的连接负责管理client和damon进行通信。 adb daemon守护进程运行在Android设备上的adb后台进程。 2进阶篇 1、介绍一下Android四大组件 Android四大基本组件Activity、BroadcastReceiver广播接收器、ContentProvider内容提供者、Service服务。 Activity应用程序中一个Activity就相当于手机屏幕它是一种可以包含用户界面的组件主要用于和用户进行交互。一个应用程序可以包含许多活动比如事件的点击一般都会触发一个新的Activity。 BroadcastReceiver广播接收器应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而它们可以启动一个activity或serice 来响应它们收到的信息或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标用户可以打开它并获取消息。 ContentProvider内容提供者内容提供者主要用于在不同应用程序之间实现数据共享的功能它提供了一套完整的机制允许一个程序访问另一个程序中的数据同时还能保证被访问数据的安全性。只有需要在多个应用程序间共享数据时才需要内容提供者。例如通讯录数据被多个应用程序使用且必须存储在一个内容提供者中。它的好处统一数据访问方式。 Service服务是Android中实现程序后台运行的解决方案它非常适合去执行那些不需要和用户交互而且还要长期运行的任务一边打电话后台挂着QQ。服务的运行不依赖于任何用户界面即使程序被切换到后台或者用户打开了另一个应用程序服务仍然能够保持正常运行不过服务并不是运行在一个独立的进程当中而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉后所有依赖于该进程的服务也会停止运行正在听音乐然后把音乐程序退出。 2、Activity生命周期 生命周期即活动从开始到结束所经历的各种状态从一个状态到另一个状态的转变从无到有再到无Activity本质上有四种状态 运行Active/Running:Activity处于活动状态此时Activity处于栈顶是可见状态可以与用户进行交互。 暂停Paused:当Activity失去焦点时或被一个新的非全面屏的Activity或被一个透明的Activity放置在栈顶时Activity就转化为Paused状态。此刻并不会被销毁只是失去了与用户交互的能力其所有的状态信息及其成员变量都还在只有在系统内存紧张的情况下才有可能被系统回收掉。 停止Stopped:当Activity被系统完全覆盖时被覆盖的Activity就会进入Stopped状态此时已不在可见但是资源还是没有被收回。 系统回收Killed:当Activity被系统回收掉Activity就处于Killed状态。 如果一个活动在处于停止或者暂停的状态下系统内存缺乏时会将其结束finish或者杀死kill。这种非正常情况下系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息同时当Activity被移动到前台时重新启动该Activity并调用onRestoreInstance()方法加载保留的信息以保持原有的状态。 在上面的四中常有的状态之间还有着其他的生命周期来作为不同状态之间的过渡用于在不同的状态之间进行转换。 3、请介绍一下Android SDK中自带的几个工具 有如下几个工具 ddmsDalvik Debug Monitor Service是 Android 开发环境中的Dalvik[虚拟机]调试监控服务。 monkeyAndroid中的一个命令行工具可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等)实现对正在开发的应用程序进行压力测试。 uiautomatorUIAutomator是Eclipse自带的用于UI自动化测试工具可仿真APP上的单击、滑动、输入文本等操作。 monitor同uiautomator adbADB的全称为Android Debug Bridge就是起到调试桥的作用。通过ADB我们可以在Eclipse中方面通过DDMS来调试Android程序就是debug工具。 4、你所了解的APP测试工具 APP自动化测试工具 Appium Airtest uiautomator2python APP稳定性测试工具 Monkey MonkeyRunner Maxim UICrawler APP性能测试工具 Perfdog SoloPi APP弱网测试抓包工具 Fiddler Charles APP兼容性测试工具 TestIn 腾讯优测 百度MTC 阿里MQC APP安全测试工具 OWASP ZAP Drozer MobSF QARK 5、介绍一下冷启动、暖启动、热启动、首屏启动 APP启动会发生多个事件测试人员需要知道整个环节是否出现问题需要了解到具体是哪个环节存在问题 冷启动当进程不存在的时候从进程创建开始到界面的展示的过程 暖启动有一部分资源已经存在进程存在相对于热启动要消耗更多资源。当用户退出应用程序时进程还会存在暖启动相较于冷启动只是少了进程的创建 热启动大部分资源都在只是应用之间的切换 首屏启动第一屏加载完整 标准 冷启动需要5秒甚至更长 暖启动需要2秒甚至更长 热启动需要1.5秒甚至更长 整个启动过程可以用adb工具进行分析利用adb logcat获取启动数据或者录屏使用ffmpeg拆帧分析。 adb logcat 首先定义一个变量这个变量填写用到的包名。 packagecom.xueqiu.android 清除缓存数据 adb shell pm clear $package 停止进程 adb shell am force-stop $package 通过以上命令就做好了冷启动的环境下面启动app并获取数据。启动App adb shell am start -S -W $package/.view.WelcomeActivityAlias -S表示启动之前先停止应用进程 -W是表示等待对应的activity启动完成 获取数据bash adb logcat |grep -i displayed 获取的时间如下 6、谈谈对冷启动的理解 应用的启动可以分为冷启动热启动和温启动而启动最慢、耗时最长的就是冷启动。 冷启动开始时系统会依次执行三个任务去启动APP: 加载和启动应用程序 APP启动后立即创建一个空白的启动Window 创建APP的进程 在这三个任务执行后系统创建了应用进程那么应用进程接下来会执行下一步 创建APP对象 开启一个主线程 创建启动页的Activity 加载View 布局view到屏幕 进行初始绘制显示视图 当应用进程完成初始绘制之后系统进程用启动页的Activity来替换当前显示的空白Window这个时刻用户就可以使用App了。 四、接口测试常见面试题 1、请描述下HTTP接口 了解HTTP接口首先需要知道HTTP是什么。 HTTP的全称为HyperText Transfer Protocol即超文本传输协议 。百度百科中对HTTP协议的解释是http是一个简单的请求-响应协议通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息及会得到什么样的响应。请求和响应消息的头以ASCII码形式给出而消息内容则具有一个类似MIME的格式。 所以HTTP是工作于 客户端/服务端架构之上的。通常情况下常用的web服务器有Apache服务器、 IIS服务器等等。  OSI模型中的七层结构见下图而HTTP是属于应用层定义应用程序的功能 。 用户通过URL向HTTP服务端发送请求HTTP服务器经过一系列的算法处理请求后再把相应的结果返回给用户即浏览器。 2、GET接口与 POST接口分别有什么特点有什么区别 GET接口是从指定的资源中获取数据的参数通过URL发送 POST是把需要处理的数据提交到指定的资源 POST的参数不能通过URL发送只能从请求的的消息主体中发送。 3、HTTP1.1版本中有哪些请求方法 1.0版本中有三种方法即GET POST HEAD。  http1.1版本中新增了OPTIONS DELETE PUT CONNECT TRACE5种请求方法. 4、HTTP响应消息由哪些部分组成 响应消息包括状态行消息报头和响应正文 5、HTTP某个状态码的含义如304代表什么或是XX状态码头的含义 1xx表示请求已接收 继续处理 2xx 请求成功接收 3xx 重定向 需要进一步操作 4xx 请求错误 属于客户端错误 5xx 请求合法但服务器无法处理属于服务端错误  常见的状态码见下图 6、你怎么理解RPC接口有什么作用 RPC 的全称为Remote Procedure Call Protocol即远程过程调用协议。 RPC通过网络从远程的服务器上请求服务无需了解底层技术协议 。RPC采用的是客户端/服务端模式RPC的作用是开发方便、直接安全性高特别是在一些大型项目中内部的子系统及接口比较多的情况下采用网络分布式的多个APP开发更加容易 。 7、RPC的工作流程是怎样的 下图为RPC的工作流程 8、请描述下RPC的各个核心部件 Remoting 网络通信框架 实现了消息机制 RPC远程过程调用 支持集群负载均衡  Registry服务目录框架 9、接口测试的流程 接口测试流程也与公司要求、项目性质有所区别可以适当增减节点。 阅读接口文档接口文档形式各个公司不同 设计接口测试用例 准备测试环境、测试工具及测试数据 执行测试 提交缺陷报告回归测试 编写测试报告 10、你之前使用过的接口测试工具有哪些 postman、jmeter、RESTClient、loadrunner、SoapUI等 本人常用的有postman、jmeter postman使用操作非常简单支持测试case的管理 文件上传、响应验证以及环境参数管理还可以批量运行 jmeter是一款免费开源的轻量工具可以用来做简单的压力测试也可以自己写接口脚本验证。 11、调用HTTP接口时如何获取到HTTPClient库 使用maven管理的话可以加入GroupId及 ArtifactID均为 commons-httpclient的依赖即可。 12、你之前怎么做RPC接口测试有哪些准备工作 接口调用客户端依赖包 配置接口远程服务端的Consumer Provider 编写RPC接口测试脚本。 13、说说HTTP单接口测试与 RPC接口测试的特点 RPC接口编写测试脚本时是需要导入JAR包并且配置好Consumer。Http单接口测试是提交数据的方式 常用的提交数据方式有application/x-www-form-urlencoded    multipart/form-data 14、针对你之前做的项目中简单描述下日志工具是怎么配置的 以maven为例首先需要引入Log4j在CLASSPATH目录下建立一个文件log4j.properties,然后使用API输出日志 15、GIT代码版本控制工具的常用命令 第一次从Git下载新代码git clone xx.git “下载目录” 从远程仓库克隆git clone “url” 添加目录git  add  “要添加的目录” 提交commit 查看所有的本地分支git branch 查看所有的远程分支git branch -r 新建分支git branch 新建分支名称 切换分支git checkout  切换分支名称 合并分支git merge 要合并的分支 查看git状态git status 查看当前文件与上次时的区别git diff 文件名 查看提交日志git log 回退到上一个版本git reset 删除版本库的文件git rm 文件名 16、简要说明JUnit的测试框架 JUnit是用Java语言编写的单元测试框架使用JUnit进行测试前需要先继承TestCase类。应用比较多的领域有重构和极限编程。 17、TestNG常用的annotation关键字的含义 Test 标记一个类或方法  BeforeSuite被BeforeSuite注解的方法会在所有测试运行之前运行。 AfterSuite被AfterSuite注解的方法会在所有测试运行之后运行。 BeforeTest被BeforeTest注解的方法在测试执行之前运行。 AfterTest被AfterTest注解的方法在测试执行之后运行。 BeforeClass被BeforeClass注解的方法会在当前类的第1个测试方法运行前运行。 AfterClass被AfterClass注解的方法会在当前类的第1个测试方法调用后运行。 BeforeMethod被BeforeMethod注解的方法会在每个测试方法调用之前运行。 AfterMethod被AfterMethod注解的方法会在每个测试方法调用后运行。 18、TestNG常用的断言方法 assertTrue判断是否为True assertFalse判断是否为false assertNull判断是否为null assertNotNull判断是否不为null assertSame判断引用地址是否相同 assertNotSame判断引用地址是否不同 19、TestNG多线程测试时的annotation如何使用 invocationCount \threadPoolSize 20、TestNG怎么导出测试报告  TestNG自带了导出测试报告的功能 但可读性较差可以用maven下载ReportNG的依赖并在pom.xml中进行配置。也可以使用插件。 五、自动化测试面试真题 1编程语法题 1 、 python 有哪些数据类型 python 数据类型有很多基本数据类型有整型数字、字符串、元组、列表、字典和布尔类型等 2 、怎么将两个字典合并 调用字典的 update 方法合并 2 个字典。 3 、 json.l python 如何将 json 写到文件里 loads 是将字符串转化为字典 json.load()是将文件打开从字符串转换成数据类型 json.dumps ( 是将字典转化为字符串 json.dump()是将数据类型转换成字符串并存储在文件中 4 、 __init__ 和 __new__ 区别 __new__是在实例创建之前被调用的因为它的任务就是创建实例然后返回该 实例对象是个静态方法。 __init__是当实例对象创建完成后被调用的然后设置对象属性的一些初始值通常用在初始化一个类实例的时候。是一个实例方法。 5 、什么是可变、不可变类型 可变数据类型列表 list 和字典 dict 不可变数据类型整型 int、浮点型 float、字符串型 string 和元组 tuple 6 、 mysql 注入点用工具对目标站直接写入一句话需要哪些条件 mysql 写入一句话需要具备 1.secure-file-priv即my.ini 文件打开找到 secure-file-priv 参数改空 2.当前用户具备 root 权限 3.已获取到应用程序的绝对路径且目录可以进行文件写入操作。  7 、 python 深浅拷贝的区别 对于不可变数据来说深浅拷贝的结果一致会重新创一个数据的副本。浅拷贝对于 可变类型来说只会拷贝其元素的引用。 深拷贝对于可变元素来说会递归的整个重新创建一个原数据的副本。 8 、 python 为什么使用 *args 和 **kwargs 如果我们不确定要往函数中传入多少个参数或者我们想往函数中以列表和元组 的形式传参数时那就使用*args如果我们不知道要往函数中传入多少个关 键词参数或者想传入字典的值作为关键词参数时那就要使用**kwargs。args 和 kwargs 这两个标识符是约定俗成的用法你当然还可以用*bob 和**billy 但是这样就不太专业。 9 、重写和重载有什么区别 重写用在类的继承当中。子类对父类的同名方法进行重写。在子类同名方法 内部如果要延用父类的方法可以使用 super 调用。 重载用在类当中对于同一个方法名支持不同类型的参数支持不同数量的 参数。由于 python 的函数本身就对参数不作类型限定也有*args 和**kwargs 支持不定长度参数。 10 、 python 实现 get 数据库的表你是怎么实现的 python 当中对于不同数据库都有不同的第三库来实现连接和数据库操作。 比较熟悉的是对 mysql 的操作。使用的是 pymysql 这个第三方库。第一步是建立 数 据 库 连 接 第 二 步 调 用 execute 方 法 执 行 sql 语 句 第 三 步 使 用 fetchone,fetchall,fetchmany 去获取不同条数的结果。 11 、对象 ( 实例 ) 方法类方法静态方法的定义有何不同分别适用于什么场 景 python 中类中定义的普通函数就是对象方法对象方法中的第一个形参一般 会定义为self表示调用的对象本身当对象调用对象方法时会被隐式的传递 给这个形参。所以当函数需要用到对象或对象的属性时一般会将其定义为对象方 法。 类方法定义时需要使用装饰器classmethod进行装饰类方法中的第一个形 参一般会定义为cls表示类本身。当对象调用或类调用类方法时类会被隐 式的传递给这个形参。所以当函数需要用到类或者类的属性时一般会将其定义为 类方法。 静态方法定义时需要使用装饰器staticmethod进行装饰其他与普通函数没 有区别。一般会将一些与对象和类无关的工具函数定义为静态方法方便调用。 12 、 SQL 连表查询去重查询查询重复的数据 两表查询SELECT 字段 1,字段 2,字段 3,…… FROM 表名 1 INNER JOIN 表名 2ON 关联条件去重查询SELECT distinct ...;查询重复的数据select 列名 from 表名 group by 列名 having count(列名) 1; 13 、 python 的单例模式 单例模式是确保类有且只有一个对象被创建为唯一对象提供访问点令其可被全局访问控制共享资源的并行访问 具体实现方式可以通过模块导入、装饰器、控制 __new__方法 等等。 14 、什么是 PEP 8 EP 8 代表 Python Enhancement Proposal它可以定义为帮助我们提供有关如何编写 Python 代码的指南的文档。它基本上是一组规则指定如何格式化 Python 代码获得最大的可读性。它由 Guido van Rossum、Barry Warsaw 和Nick Coghlan 于 2001 年编写 15 、 PO 模式的封装原则有哪一些 公共方法表示页面提供的服务。比如把登录封装成 login 方法搜索操作封装成 search 方法注册操作封装成 register 方法。 尽量不要暴露页面的内部比如页面的 HTML, 页面的上下结构 一般不做断言做到页面逻辑和测试逻辑的分离。 方法返回 self 或者其他 PageObjects也可以是元素属性等。 不需要封装整个页面行为用到什么逻辑封装什么逻辑 同一操作如果出现不同结果可以用不同的方法表示。比如登录成功有跳转登录失败报错登录未授权  2编码题 1 、幂的递归计算 x 的 n 次方如3 的 4 次方 为 3*3*3*381 # 递归的方式def mi(x, n):if n 0:return 1else:return x*mi(x, n-1)print(mi(3, 4))非递归的方式def mix(x,n):result 1for count in range(n):result * xreturn resultprint(mi(3,4)) 2 、统计列表list 中每个元素出现的次数 # 统计列表list中每个元素出现的次数lista [1, 2, 3, 4, 12, 22, 15, 44, 3, 4, 4, 4, 7, 7, 44, 77, 100]new_dict {}for item in lista:if item not in new_dict.keys():new_dict[item] lista.count(item)print(new_dict) 3 、 [abc13,abv89] 这种列表打印最大长度的共同的前缀列表元素个数不确定 def test_str(iterable):return_strfor i in zip(*iterable):if len(set(i))1:return_str i[0]else:breakprint(return_str)return return_str 4 、对 list 去重并找出列表 list 中的重复元素 from collections import Counter #引入 Countera [1, 2, 3, 3, 4, 4]b dict(Counter(a))print(b)print ([key for key,value in b.items() if value 1]) #只展示重复元素print ({key:value for key,value in b.items() if value 1}) #展现重复元素和重复次数 5 、已知一个队列 [1, 3, 6, 9, 7, 3, 4, 6] 1. 按从小到大排序 2. 按从大大小排序 3. 去除重复数字 a [1, 3, 6, 9, 7, 3, 4, 6]# 1.sort 排序正序a.sort()print(a)# 2.sort 倒序a.sort(reverseTrue)print(a)# 3.去重b list(set(a))print(b) 6 、任选语言完成双向冒泡排序算法程序[8,6,4,3,9,1,2,5,7] 升序 def cocktail_sort(arr): n len(arr) start 0 end n - 1 swapped Truewhile swapped: # 正向冒泡找到最大元素放到后面 swapped False for i in range(start, end): if arr[i] arr[i 1]: arr[i], arr[i 1] arr[i 1], arr[i] swapped True# 如果没有元素进行交换则排序完成 if not swapped: break# 在反向冒泡之前重新标记 swapped 为 False swapped False end - 1# 反向冒泡找到最小元素放到前面 for i in range(end - 1, start - 1, -1): if arr[i] arr[i 1]: arr[i], arr[i 1] arr[i 1], arr[i] swapped Truestart 1return arr # 测试排序算法arr [8, 6, 4, 3, 9, 1, 2, 5, 7]sorted_arr cocktail_sort(arr)print(sorted_arr) 3自动化基础能力评估 1 、 python 列表和字典的区别列表和元组的区别 列表是有序的字典是无序的。列表通过索引获取、字典通过 key 获取。 列表是可变的可以修改、添加、删除其中的元素但是元组是不可变的不能修改、添加、删除其中的元素。 对于一个元素的元组必须要在元素后加逗号而列表不需要。 2 、 Python 用到的库 单元测试框架unittest pytest 操作 mysql 数据库pymysql http 请求库requests web 自动化selenium 处理日志:logging json 数据提取和 json 文件读写:jsonjsonpath pyyaml:yaml 文件读写 3 、 unittest 和 pytest 区别 pytest 是第三方库基于 unittest 的扩展框架比 unittest 更简洁高效 pytest 有丰富的插件系统 pytest 的夹具使用更加灵活 pytest 可以很方便的过滤用例 4 、 python 当中如何操作数据库 ? python 不同的数据库都有对应的第三方库。比如 mysql 数据库有 pymysql库oracle 数据库有 cx_Oracle 安装成功第三方库后代码中将包导进来 ·接下来就是连接数据库提供数据库的服务器地址、端口号、访问的用户名和密码、数据库名称通过调用对应的方法去连接 连接成功之后调用执行 sql 语句的方法去操作数据库 操作完成之后释放数据库连接 5 、 jmeter 或 postman 实现多接口关联测试 ? 怎么做关联 ? 6 、接口自动化的断言怎么做 7 、如果需要用自动化测删除接口断言怎么做 8 、做自动化的过程中如何处理验证码 让开发屏蔽验证码邀请开发处理在测试环境预发和正式环境恢复 让开发设置一个万能验证码使用复杂的其他人无法猜到的验证码 基于图像识别破解验证码 9 、自动化测试用例如何编写 自动化测试本质是测试是用自动化手段替代部分手工测试。 自动化测试用例源自功能测试用例都应包含前置/后置步骤断言。 自动化用例设计原则与功能用例一致。 自动化用例需要自行解决环境依赖问题。比如手工测试时遇到前置条件不满足手工去准备前置条件再测试。 自动化用例断言要明确将手工测试看到的期望效果转成代码。 自动化用例需要考虑重复执行不受影响。 考虑好以上 5 点使用工具或者代码的测试框架编写即可。 10 、 pytest 的前置实现有哪几种方式 11 、 Appium 都有哪些启动方式 12 、 web ui 自动化中显式等待、隐式等待有什么区别 相同点都是智能等待在一定时间范围内不断查找元素一旦找到立刻执行后续代码没找到就会一直查找到超时为止 不同点 显式等待显示等待是单独针对某个元素设置一个等待时间设置一个查询间隔时间在等待时间内会按照设置的间隔时间对该元素进行查找超过设置的等待时间尚未出现则抛异常显示等待必须在每个需要等待的元素前面进行声明 隐式等待隐式等待是全局的是针对所有元素设置一个等待时间在设置的等待时间内程序会不停检测页面元素是否全部加载完成加载完成则继续向下超过设置的等待时间尚未出现则抛异常隐式等待只需要声明一次声明之后对整个 drvier 的生命周期都有效不用重复声明程序会一直等待整个页面加载完成 13、 有没有遇到元素定位不到情况如何处理的 页面加载元素过慢添加等待时间 页面有 frame 框架页需要先跳转入 frame 框架再定位 可能该元素是动态元素定位方式要优化可以使用部分元素定位或通过父节点或兄弟节点定位。 可能识别了元素但是不能操作比如元素不可用不可写等。需要使用js 先把前置的操作完成 元素定位的表达式写错了。 14 、请尽可能多的列出自动化的元素定位方式以及你最喜欢的定位方式 web 自动化的定位方式 1、通过 idfind_element_by_id2、通过 name 属性find_element_by_name3、通过 class 属性find_element_by_name4、通过标签名find_element_by_tag_name5、通过文本定位链接标签find_element_by_link_text6、通过文本部分匹配定位链接标签find_element_by_partial_link_text 7、通过 xpath 定位find_element_by_xpath8、css 选择器定位find_element_by_css_selector最常用的id,xpath 和 css 这三种 15 、如果同一个浏览器打开两个窗口要用 selenium 里面哪个指令进行切换 1、窗口切换  2、iframe 切换 3、alert 切换 16 、 App 自动化有做过吗知道用到哪些技术框架吗 做过app 自动化主要使用的开源框架 appium结合测试框架 pytest还有 PO设计思想共同搭建了 app 自动化测试框架。 17 、 ui 自动化出现的异常以及出现这些异常后你是如何处理的 元素定位失败异常处理方式为检查元素定位表达式添加等待 定位超时异常检查定位方式检查是否有 iframe 元素无法交互检查是否定位到正确元素。 18 、什么是 PO 模式什么是 page factory PO 模式是 page object model 的缩写顾名思义 是一种设计模式把每个页面当成一个页面对象页面层写定位元素方法和页面操作方法,实现脚本的page 和真实的网站页面 Map 起来一对应起来PO 模式业务代码和测试代码被分开降低耦合性维护成本低减少代码冗余  19 、简述 selenium 的原理 selenium 涉及到三个组件的通讯分别是 浏览器 webdriver client client 负责通过对应的编程语言函数发送请求给 webdriver client 其实并不知道浏览器是怎么工作的但是 driver 知道在 selenium 启动以后driver 其实充当了服务器的角色跟 client 和浏览器通信client根据 webdriver 协议发送请求给 driverdriver 解析请求并在浏览器上执行相应的操作并把执行结果返回给 client。这就是 selenium 工作的大致原理。 20 、 UI 自动化测试用例在运行过程中经常会出现不稳定的情况也就是说这次可以通过下次就没有办法通过了如何去提升用例的稳定性 1. 界面上无法预测的弹框。页面上经常会根据用户行为推送或者弹出动态的信息比如版本更新消息通知推荐产品等等当这些弹框出现以后原来的页面元素会被遮挡无法被定位此时可能会造成自动化测试脚本运行错误。 2. 页面元素的动态变化主要有两方面的变化第一方面前端需求经常发生变化导致前端代码频繁修改当前端页面变化以后可能会造成之前的元素无法被定位第二方面页面可能会根据用户的状态和等级展示不同的页面或者是这一次访问的数据和下一次会不同。 3. 随机的页面延迟造成控件识别失败受限于网络环境和设备状态自动化代码每次运行时可能会产生随机的超时处理。 4. 测试数据变更。ui 测试每个用例的测试步骤会有很大的区别他们不能共享同一套代码逻辑当测试数据变更时如果不能及时更新自动化代码会造成脚本执行出错等问题。 4自动化项目实战能力评估 1 、介绍一下你的自动化测试框架 我的框架主要根据分层思想设计了几个独立模块 模块一主要存放通用业务代码比如接口访问数据库操作excel 操作等 模块二主要负责用例收集和用例执行生成测试报告。 模块三主要负责存放测试用例数据。通常是使用 excel, yaml, 等通用数据格式。 模块四主要存放测试用例方法和测试逻辑相关代码。这里会调用模块的通用方法。 2 、讲一下在工作中怎么做的自动化测试 a. 根据自动化测试特性整理需求 b. 根据优先级和公司人员状况制定自动化测试计划 c. 制定自动化测试执行方案 d. 自动化测试用例设计或从功能测试用例中挑选适合的用例 e. 自动化脚本的开发 f. 自动化测试执行生成报告 3 、自动化测试框架至少包含哪些核心模块。 基础方法 数据驱动 PO 分层 接口分层 接口数据管理 异常处理 - 工具包 配置 日志收集 测试报告 4 、框架中的接口参数传递怎么做的是否有优化第三库有没有用到方法是什么 框架当中接口参数传递主要涉及 2 部分一是数据生成或者提取二是替换。在框架当中数据从响应结果提取用的 jsonpath提取表达式直接写在 excel 当中提取之后存储到变量类 Data 当中作为它的类属性。 替换时则直接访问 Data 类的类属性将其值拿到并替换。在 excel 中要替换的标志为#value#。因为会存在有多个要替换的值所以用正则表达式来查找到所有要替换的标识然后全部替换。 用到第三方库的话一个是 jsonpath一个是 re 5 、拿到一个项目怎么衡量这个项目做接口自动化还是 UI 自动化 1、不管什么项目都可以做接口自动化 2、偏公司内部人员使用的管理平台无需做 UI 自动化对外用户的可以考虑做 UI 自动化 6 、框架的数据库验证在你 excel 中 check_sql 放的是什么你如何做比对 check_sql 中存放的是一个列表列表的成员是字典字典有 3 个 key,一个是sql 语句第二个是期望结果第三个是 sql 的查询方式(查询总条数/查询值)在收到响应结果以后会遍历 check_sql 中的列表将每一个字典取出来执行sql 语句查询结果 并与期望结果做比较。 7 、自动化测试中测试用例的执行是怎么让他按照你写的用例一条一条执行的 在我的项目接口自动化中我用 pytest 框架。 一个接口的用例我的用例数据是写在 excel 当中在编写时就是按照顺序写的从 excel 读取出来使用数据驱动 方式就是按照 excel 中的顺序 多个接口的用例因为我是一个接口一个 py 测试文件所以我在 py 测试文件命名中用 00-99 数字按顺序编写的。 8、Login 这些用例数据是在哪里取的excel 吗用到什么方法什么第三方库 具体公司的业务业务怎么开展 项目的介绍( 或者简单介绍最熟悉的项目介绍) 主要考察 2 个方面一是表达能力和业务的熟悉度。二是做的项目复杂度如何是否能胜任复杂项目的测试工作。 一般是根据自己的业务来回答。最好是能讲出有挑战性有难度或者复杂的业务场景。面试官不一定听得懂但是他觉得复杂挺难的就可以。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。
文章转载自:
http://www.morning.kntsd.cn.gov.cn.kntsd.cn
http://www.morning.bqdgr.cn.gov.cn.bqdgr.cn
http://www.morning.rjljb.cn.gov.cn.rjljb.cn
http://www.morning.lhhkp.cn.gov.cn.lhhkp.cn
http://www.morning.thrgp.cn.gov.cn.thrgp.cn
http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn
http://www.morning.pdwzr.cn.gov.cn.pdwzr.cn
http://www.morning.nzqmw.cn.gov.cn.nzqmw.cn
http://www.morning.rkkpr.cn.gov.cn.rkkpr.cn
http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn
http://www.morning.ssgqc.cn.gov.cn.ssgqc.cn
http://www.morning.sglcg.cn.gov.cn.sglcg.cn
http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn
http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn
http://www.morning.kscwt.cn.gov.cn.kscwt.cn
http://www.morning.kzpxc.cn.gov.cn.kzpxc.cn
http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn
http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn
http://www.morning.fhbhr.cn.gov.cn.fhbhr.cn
http://www.morning.mpsnb.cn.gov.cn.mpsnb.cn
http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn
http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn
http://www.morning.vattx.cn.gov.cn.vattx.cn
http://www.morning.uytae.cn.gov.cn.uytae.cn
http://www.morning.c7625.cn.gov.cn.c7625.cn
http://www.morning.zxhpx.cn.gov.cn.zxhpx.cn
http://www.morning.ndcjq.cn.gov.cn.ndcjq.cn
http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn
http://www.morning.mqdr.cn.gov.cn.mqdr.cn
http://www.morning.skdrp.cn.gov.cn.skdrp.cn
http://www.morning.srbmc.cn.gov.cn.srbmc.cn
http://www.morning.kpygy.cn.gov.cn.kpygy.cn
http://www.morning.mxhys.cn.gov.cn.mxhys.cn
http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn
http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn
http://www.morning.clwhf.cn.gov.cn.clwhf.cn
http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn
http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn
http://www.morning.llcsd.cn.gov.cn.llcsd.cn
http://www.morning.jzlfq.cn.gov.cn.jzlfq.cn
http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn
http://www.morning.zrkp.cn.gov.cn.zrkp.cn
http://www.morning.rxhsm.cn.gov.cn.rxhsm.cn
http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn
http://www.morning.rnhh.cn.gov.cn.rnhh.cn
http://www.morning.rbnj.cn.gov.cn.rbnj.cn
http://www.morning.ndynz.cn.gov.cn.ndynz.cn
http://www.morning.rdymd.cn.gov.cn.rdymd.cn
http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn
http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn
http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn
http://www.morning.lswgs.cn.gov.cn.lswgs.cn
http://www.morning.yprnp.cn.gov.cn.yprnp.cn
http://www.morning.jbmsp.cn.gov.cn.jbmsp.cn
http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn
http://www.morning.rmkyb.cn.gov.cn.rmkyb.cn
http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn
http://www.morning.wwnb.cn.gov.cn.wwnb.cn
http://www.morning.lsxabc.com.gov.cn.lsxabc.com
http://www.morning.mjjty.cn.gov.cn.mjjty.cn
http://www.morning.gcfg.cn.gov.cn.gcfg.cn
http://www.morning.syznh.cn.gov.cn.syznh.cn
http://www.morning.pybqq.cn.gov.cn.pybqq.cn
http://www.morning.rywn.cn.gov.cn.rywn.cn
http://www.morning.tgfsr.cn.gov.cn.tgfsr.cn
http://www.morning.qtbnm.cn.gov.cn.qtbnm.cn
http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com
http://www.morning.qrpdk.cn.gov.cn.qrpdk.cn
http://www.morning.hnhsym.cn.gov.cn.hnhsym.cn
http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn
http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn
http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn
http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn
http://www.morning.xtkw.cn.gov.cn.xtkw.cn
http://www.morning.lzjxn.cn.gov.cn.lzjxn.cn
http://www.morning.npbgj.cn.gov.cn.npbgj.cn
http://www.morning.nzmhk.cn.gov.cn.nzmhk.cn
http://www.morning.mgmqf.cn.gov.cn.mgmqf.cn
http://www.morning.gygfx.cn.gov.cn.gygfx.cn
http://www.morning.rlbc.cn.gov.cn.rlbc.cn
http://www.tj-hxxt.cn/news/273072.html

相关文章:

  • 公司网站设计需要多少钱网站建设 硬件
  • 宁波镇海区优秀全网seo优化新网站seo技术
  • 北京通州住房和城乡建设部网站电子商务平台官网入口
  • pc网站 手机网站万网注册域名的步骤
  • 网站后台做数据库备份代码绿色网站设计
  • 视频网站采集规则新手怎样在手机上做电商
  • 一个网站做网站地图的目的网络营销课程设计计划书
  • 塘厦东莞网站建设云南旅游网站
  • 摄影网站源码 国外网站建设套餐方案
  • 广告网站 源码曲沃网站开发
  • 网站设计师如何让客户信任你渝中网站建设
  • 哈尔滨网站开发公司微信贷款怎么申请开通
  • 营销型网站的名词解释城市文明建设网站
  • 联盟网站做的最好wordpress商品展示主题
  • 江苏两学一做网站做一款网站注意啥
  • 北仑做网站个人网站规划书模板
  • 软件公司logo图标大全seo培训机构排名
  • 网站建设分为哪些广州企业推广网站建设
  • 自己做网站怎么加定位上海建设工程交易服务中心
  • 青浦集团网站建设商城网站的搜索记录代码怎么做
  • 合肥建设银行招聘网站石家庄旅游景点
  • 江苏网站建设公司排名wordpress 点击放大
  • 网站连接微信肇庆专业网站建设服务
  • 成都手机模板建站美橙建站十四年
  • 网站如何做防护园林景观设计公司有丙级吗
  • 空包网站怎么做的领创科技网站开发
  • 欧洲购物网站排名wordpress 后台不显示
  • 免费网站建设总部国医堂网站平台建设
  • 全球设计网站临沂网站
  • 网站模板设计教程建站系统主要包括什么