最近进行了几次面试,对面试内容进行了一下总结。(更新于2019/4/27)
面试小结:
某区块链金融公司-测试开发:
面试官主要是针对简历中内容的提问,具体问题和答复如下,主要是接口/DB/UI自动化架构,敏捷、数据库调优、性能测试和资金清算:
1、基于DOClever的接口自动化平台的架构,内部进行的二次开发是怎么样进行什么二次开发内容,目的是什么。优势在哪里,和其他的接口自动化平台的区别在哪里。
——系统的架构,是以Nginx提供HTTP/WEB服务和分发,前后端均用JS作为我们的开发语言,前端用的是vue+element UI,后端是express+mongodb。
——系统通过到mongo中取存放的接口新型,调用API,发送http请求给到对应的WEB服务,并获取返回,以验证接口内容。
——目前的二次开发是在原本的基础上,增加了对数据库、UI逻辑元件,加密,py脚本调用等等的三方扩展。
——支持swagger等接口文档的导入和更新,通过UI页面的场景逻辑设置和边界的轮询操作。
2、介绍一下Selenium的测试架构。
——selenium是基于web的ui自动化工具,本身基于Apache License 2.0协议发布的开源框架,通过提供的WebDriver,可以利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。
——Selenium只是帮我们解决了执行层面的问题,大规模的自动化测试项目中,需要一个基于Selenium平台的测试框架,框架需要以下特性:1、对象库的分离和管理;2、支持数据驱动(DDT);3、自动化测试脚本的组织和管理;4、脚本的可重用(团队)和可配置。
——通过java+testng+selenium+jenkins来搭建框架:1、首先我们可以通过对selenium提供的API方法进行二次封装来避免每次对这些方法的直接调用,通过方法的封装可以防止重复编写常用方法,还能实现复用,并且易于维护。2、接着对这些方法类进行分层组织,而不是统统的堆到一起。比如分为Page类Window类,Element类,Action类等。3、按照MVC模式的思想将测试项目分模块,以便控制与数据与测试用例分离,在对象包中放入所有测试用到的页面包括Page类和Window类,Element类,在数据包中放入各个页面的元素信息文件,即其ID,XPath等信息,还有测试数据。在用例包中放入测试用例的内容。
——Selenium基本功能说明:https://zhuanlan.zhihu.com/p/52646463
——浅析基于Selenium和TestNG的自动化测试框架:https://zhuanlan.zhihu.com/p/33025296
3、敏捷的开发流程,觉得敏捷测试的核心和内容是什么,和传统瀑布的区别在哪里。
敏捷,是应对快速变化的需求的软件开发。敏捷开发主要的工作可归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果;关注业务优先级; 检查与调整。
强调:1、人和交互 重于过程和工具。2、可以工作的软件 重于求全而完备的文档。3、客户协作重于合同谈判。4、随时应对变化重于循规蹈矩。(更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织 型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。)
4、对数据库的了解情况,举例对sql调优内容的了解。
——对于数据库的调优,可以从以下几个方面入手,针对数据库服务器的CPU、内存、磁盘情况,进行资源排查,通过动态性能视图和awr报告,对TOP SQL等进行分析。例如查询问题,检查常用的查询是否做了缓存或者视图,数据库字段索引是否合理,sql语句是否合理等等。
5、性能测试的项目实战经验,具体项目中,是怎么进行性能测试项目的。怎么排查,分析问题。
——针对性能项目,讲了一次具体的性能测试,从需求的判断,场景的设计,脚本的编写,环境的搭建,资源监控的配置,到实际压测的展开,问题的发现和排查,已经优化。进行一个项目实际的讲解。
6、对于资金清算、资金交易、逻辑,是怎么进行测试的,有什么有效的测试经验。
——对这一块不太了解,面试后进行质询,讲到以下几个点:1、一般有两套逻辑,内部的和对外交互的(银行等);2、交互时,两边的金额可能因为数据库字段、计算方式的精读不一致产生差异,而无法对上;3、自身业务的清算逻辑和银行的清算逻辑不一样,可能会有对应的差异(内部交易金额的差异,和银行的差异等)。
7、DB自动化测试的内容,搭建的框架、内容、意义。
——讲述了以前搭建的DB自动化,简要来说就是以生产数据同步库的月结数据进行回归的核对,通过oracle的job定时任务调用存储过程做自动调度核心,进行DB自动化。
某互联网电商-服务端白盒测试:同样针对简历提问,根据公司情况侧重点不一样。前面已经有类似的,则不进行重复。
1、为什么选用DOClever这个接口平台。
——大部分细节上面已经有了,补充其他内容:测试团队人员扩大的很快,人员技能等等参差不齐,通过DOClever的UI界面可以降低门槛,标准化操作,再通过对UI元件的扩展,更好的支持普通测试人员的使用。
2、mongoDB/redis的使用容易出现什么问题。
——对于这两种数据库的使用,面试官说,在高强度,大并发的使用下,容易挂掉,无法使用,针对不用的场景做不同的使用。回来和公司的架构师沟通,他觉得目前这两个数据库都算是比较成熟的,不会有这类的问题,更多的是自身系统在对他们的使用上是否合理。
3、对于系统项目的管理,认为什么是最重要的,出现什么问题又是最严重的。
——个人觉得最重要的在于沟通、制度、备份;而出现沟通的问题也是最严重的。细节不展开。
4、对java的熟悉程度,是否可以在系统工程上编写测试类,当需要进行三方扩展的时候,是否可以选择合适的内容进行扩展。
——确实这一部分的技能不够,加油吧。
某知识付费创业公司:资深测试(管理向)
最开始以为是技术向的,去了才知道是管理方向。招测试负责人。
总体而言,把个人的项目、团队质量管理经验进行沟通,和对简历技能说明。没有太多特别的地方。简单梳理个人系统项目质量管理体系如下:
单个系统项目:
1、和其他团队交互标准:需求文档、设计文档、移交时间,UAT验证案例/时间。
2、本身测试的内部标准:案例设计流程、案例评审、每日测试进度汇报、风险预警、联测时间约定、联测标准约定。
3、回顾总结:需求问题(需求文档、质量),开发问题(设计文档、设计质量、代码复审、移交时间,bug修复时效),测试问题(测试设计、案例评审,测试进度、风险识别,bug跟进)。整理出来版本的相关质量问题。
4、持续改善:反思版本中的需求,测试中有哪些可以改善的地方,脚本话,自动化,数据准备等等。
多系统项目管理:
1、跟进每个团队的版本需求内容说明、测试方案说明,风险点说明。
2、跟进每个团队的测试进度汇报。跟进每个团队的版本总结回归。
3、整理所有团队的质量体系,分析查看测试质量和系统质量的趋势。
团队建设/人员备份:
1、每一段时间进行人员轮岗调动,进行业务技能备份。
2、展开系列课程,对业务、测试理论、代码、自动化、性能的内容进行培训,进行持续学习的课程。
3、组织团建活动,活跃团队气氛。
业务规划/技术研究
1、组织测试开发团队,搭建自动化平台。支持性能测试。
2、立足专业前沿发展,学习专业技术,评估可以在团队中使用的内容,并进行试用。
3、学习业务知识,深入理解业务,通过专业知识更好结合业务需求,进行测试策略评估。