一.软件热身题第一印象,相对比较重要,考察软能力,比如表达能力,理解能力,协调能力
1.自我介绍我叫,,,18年毕业于,从事软件测试两年,擅长接口测试,熟练使用python,sql,了解java,linux2.介绍下你负责的公司项目
智能测试系统,把所有的测试用具进行线上管理,产生的数据进行分析处理,把主要的数据呈现出来,以供测试的优化。系统分为13个模块,我做的部分为治具管理,机台管理,程式管理,备品管理现公司:互联网金融业务、银行核心、理财、保险3.你有什么优点和缺点?
优势:分析能力较强,对业务的需求分析比较透彻,业务熟悉度和测试功底比较扎实,执行力、推动力、沟通协作能力比较强4.在同一个项目组内,你认为你怎么做会比另外一名测试更加优秀?
业务熟悉度更高,架构理解更深入,代码能力要更好,协调推动能力更强5.你为什么离开上家公司?离职原因(这个会在最后问)多经历一些,多进步一些,离家近一些
二.测试理论基础基本能力,会的再多也不过分,不扎实的话就会拉低评价,毕竟大家都会,不会的话不算是一个合格的测试工程师了,不会问太多,但是大众化的要了解。
1.描述下你上个公司的测试流程?
需求评审编写测试用例评审测试用例发起case评审,提供准入测试用例给开发提测后先进行准入测试,不通过打回,通过则进入story测试,集成测试,系统测试,性能测试,稳定性测试,安全测试,(uat:客户在测试环境验收),生产验证,发布2.请描述下bug的几个要素?
标题,前提条件、测试环境、操作步骤、预期结果、实际结果、严重等级、版本信息,出现概率,必要时附上截图、视频、日志等3.白盒和黑盒的区别,你是怎么运用的?
白盒是从代码层进行测试,黑盒是对业务层进行测试。白盒可以从单元测试、代码review、架构方面入手。内部实现逻辑可以看代码,也可以请开发讲给你听,知道了怎么实现,能在设计用例时构造不同数据cover逻辑覆盖4.你是如何做测试分析?
确认需求,先定性,再定量
定性:显性需求,隐性需求,功能,性能安全定量:功能要测,那么有哪些功能,每个功能点是什么,入口是什么,出口是什么,precondition是什么,数据哪里构造等等1234如果是分析并制定测试内容,首先会根据需求文档,了解功能交互和规则,再去和开发讨论实现原理,通过交互和原理两个纬度进行分析,并确定测试内容。如果是测试问题分析,出现问题后,首先会抓包,看看是后端返回的问题,还是前端代码或者请求的问题,如果后端涉及多个子系统,可以通过查看日志的方式看看具体是环境问题还是后端哪个子系统的问题。5.如何设计测试用例?什么样子的测试用例是好用例?
需求分析,架构理解,覆盖功能、性能、安全等维度功能拆解:aa的环境,bb的界面,用了cc的工具,做了dd的操作,达到了ee的效果计用例原则上好的用例各有千秋(不外乎边界值,等价类,流程图,正交法,判定表等6.功能测试在beta版本对外的上线标准是什么?
功能上线标准每个公司不一样,大致如下:
1.所有功能点(需求)都被用例覆盖到了2.所有用例执行过至少一遍3.所有发现的bug被修复并验证,做过regression了。4.不能修复的记录了/关闭了/knownissue了。5.bug曲线区域平稳了功能指标:
Bug通过率>=95%严重级别bug通过率=100%case通过率>=95%p0和p1级别case通过率100%自动化工具通过率达到标准接口、安全、兼容、性能、稳定性达到要求产品验收通过三.测试管理题1.如果项目周期很短,测试人力匮乏,你是怎么协调的?
依据代码review的结果和影响范围,对测试内容进行适当的裁剪。借助自动化工具的支持,提高测试案例的执行效率。调整组内任务的优先级,进行人力协调,优先投入最紧要的项目。必要的情况下加班2.描述下你团队的测试分工
测试技术组和业务测试组:
测试技术组主要进行工具考研、工具开发和工具维护,为业务测试效率提升和基础建设做支撑。业务测试组主要进行具体业务测试和工具的落地使用,具体测试内容覆盖功能、性能、兼容、稳定性、接口等3.对于团队成员,你是如何打kpi的?
概念题:1.描述下web测试和移动应用测试的相同点和区别?
硬件兼容:机型、分辨率、系统、版本、网络软件兼容:输入法键盘、相机、安全清理工具类数据兼容:低升高、高降低的用户信息和数据的兼容,还有跨平台的数据兼容3.请讲出客户端下3个常用的性能指标的名称与具体含义?
android运行基于虚拟机,ios则是沙盒机制android是真后台,ios是伪后台,所以安卓才会卡分辨率:iOS覆盖的分辨率和系统是有限的。兼容性:Android比较碎片化,覆盖的机型版本比iOS更多android有各种定制rom,手机型号太多。权限:安卓还要特别考虑权限,6.0是分水岭应用安装渠道:安卓比较多5.请讲述移动应用的灰度是怎么做的?
内部二维码下载白名单用户方式国内小市场先上,国外用GooglePlay的β版,默认开放5%后台控制的方式,开放给一定比例的用户实践题:1.应用的闪退通常是什么原因造成的?如果应用闪退,Android和iOS上是分别怎么抓取日志的?
内存超载后端服务或动态链接库未找到应用初始化时无法正确读取到用户数据系统兼容问题日志抓取:ios
通过iTunesConnect(ManageYourApplications-ViewDetails-CrashReports)获取用户的crash日志通过Xcode从你的设备上获得崩溃日志自己在程序中添加崩溃捕捉代码,如果应用集成第三方SDK,如百度统计Android:
通过集成第三方SDK,如百度统计、友盟统计等发版时使用加固工具,他们也会收集错误日志,如360加固在程序中添加程序异常崩溃的捕捉代码,保存到本地文件中2.请简述移动应用在升级安装时候应该考虑的场景?
APP有新版本时,打开APP是否有更新提示。当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出APP。下次启动app时,仍出现强制升级提示。不删除APP直接更新,检查是否能正常更新,更新后能否正常工作。删除老的APP,重新下载APP,能不能正常工作。不删除APP直接更新,检查更新后的APP和新安装的APP提供的功能一样。检查在线跨版本升级能否成功,版本过老是否提示用户重装。更新成功后,用户数据有没有丢失,各个配置项是否还原。3.给你一个应用,请简述你会从哪些方面去测试?
功能:入口图标的标识度
进入和退出操作简易度
取景框大小
拍景和自拍切换
视频的像素限制
视频的时长限制
发送的进度提示
操作是否卡顿
兼容:不同机型分辨率
不同系统版本
不同网络情况
不同流量情况
5.如果让你来测试扫码支付,你会考虑哪些场景?
接口规范拿到设计接口测试用例发送的数据格式返回的数据格式了解接口实现逻辑,实现逻辑覆盖接口能并发执行吗:采用工具或者自写代码来验证,HTTP接口一般SoapUI,Jmeter,Fiddler,Postman等都能验证,自己写更好。webservice接口一般要写代码来调用。根据测试用例自动化发现问题跟功能测试一样,该报bug报bug,该跟踪状态跟踪状态2.接口测试质量评估标准是什么?
拿到测试需求,确定测试软硬件环境/测试指标
使用测试工具(Loadrunner,jmeter)录制或者编写测试代码,逐步加压,直到测试目的达成
调优(一般都是开发的事)
服务器系统资源方面CPU占用率,内存占用率磁盘的读写指标
网络的占用情况基础吞吐率
4.压力测试和负载测试的区别
一个(压力测试)把最后一根稻草仍你身上,一个(负载测试)就剩最后一根稻草没仍,或者仍给你指定数目稻草。压力测试是在高负载情况下对系统的稳定性进行测试。是在高负载(大数据量、大量并发用户等)下的测试,观察系统在峰值使用情况下的表现,从而发现系统的功能隐患。负载测试:多用户,用户数渐增,持续同时发同一业务请求,产出最大TPS压力测试:多用户,资源使用饱和,持续同时发同一业务请求,产出系统瓶颈或使用极限5.服务器中一般要监控哪些数据,如何监控的,怎么从监控数据中发现问题?
CPU,内存,网络,I/O,数据库。等等。一般用工具监控,另外Windows上有性能监视器基础监控和应用监控。基础监控包括机器是否死机,cpu,内存,磁盘使用率等应用监控包括日志监控、端口监控、进程数监控等发现问题:
好处是去掉的依赖,可以在B没有好之前测试A,并且B的任何改动/错误/失效不会影响我测试A坏处是真实性能要比测出来的性能差,性能指标不准确。因为Mock的服务再真也不能代替真实服务7.有一天早上打车高峰,滴滴服务端挂了大概30分钟,工程师抢修之后,马上上线,之后又挂了,请问有哪些原因会造成这个情况?
理念和概念:1.如何看待自动化和手动测试?怎样的一个比例才是健康的?
项目较成熟时自动化比例可适当提高。开发并维护自动化case成本较高,所以不是自动化比例越高越好。要根据具体的项目及项目所处的阶段来定。投入产出比要先评估好。2.你们公司的自动化投入产出比怎样?效益怎样?
自动化和业务测试人力1:5自动化测试发现新bug的效益很低,主要用在回归测试上,减少测试工作量。接口测试可就不一样了,可以小步快跑,也可以集团作战。3.自动化测试用例的覆盖率多少?
Google说它们分钟级或者秒级别,为毛我们都是小时级别5.什么是分层自动化?
金字塔结构,最底层UnitTest,往上接口API/集成起来的service,最上面UI自动化6.你的测试数据是怎么准备的?
写在脚本里/外部文件(excel,XML)/数据库,逼格逐级提升7.测试脚本的维护成本是怎么样的?
不坏就不要修终身追责,谁污染谁治理8.工具使用
9.接口自动化时上一次执行的数据如何清理掉?(如开户或注册,同一个账号只能使用一次,如何清洗数据能让case下次继续跑?提供新的数据?mock?mock的层级,mock过多的话等同于未做测试)
ID,Clas,CSS,XPath,jquery脚本,总之能不麻烦开发就不麻烦开发2.请问如何实现用例失败或者异常时候需要截图?
框架自带,python+webdriver里是get_screenshot_as_file,一般写一个装饰器,放在要执行的类上,try,catch下3.请问如何分布式执行webdriver用例?
两种策略:
1.利用Jenkins等,部署部分代码到多个机器上执行2.RemoteWebDriver4.如何在脚本中执行JavaScript代码?
driver.find_element_by_id()–元素的resrouce-id属性driver.find_element_by_AccessibilityId()–content-desc属性,替代以前的name。driver.find_element_by_xpath()–比css定位慢driver.find_element_by_class_name()–元素的class属性driver.find_element_by_css_selector()driver.find_element_by_link_text()–链接元素的全部显示文字driver.find_element_by_tag_name()–元素的标签名driver.find_element_by_partial_link_text()–链接元素的部分显示文字2.请简述Appium的原理
Appium是C/S架构的,更像是一个proxy,连接其被测移动平台和测试脚本。appium是基于webdriver协议添加对移动设备自化api扩展而成的。3.iOS和Android的UI自动化的原理是什么?
iOS9.3andabove:Apple’sXCUITestiOS9.3andlower:Apple’sUIAutomationAndroid4.2+:Google’sUiAutomator/UiAutomator2Android2.3+:Google’sInstrumentation.(Instrumentationsupportisprovidedbybundlingaseparateproject,Selendroid)4.当定位策略都失败的时候,你该怎么做?
80%是你元素定位的不对那么多定位方法,一个不行换另外一个直接不能定位,先定位父元素,再循环找子元素。一般来说XPATH都能定位到,无非是可阅读性不强。真的全部失效,请求开发帮你改个元素属性好了。5.请问Monkey测试的优缺点?
6.如果使用monkey发现了一个毕现闪退,请问怎么使用monkey重现它?