⾯试测试总结
1、给你⼀个APP,你该如何进⾏测试?
  (1)功能测试-----主要测试APP的流程和业务要求是否达标(⼿动和⾃动化结合测试)
  (2)性能测试------关注APP的性能参数:CPU、FPS、内存、耗电量、流量,同时关注APP的安装和启动耗时
  (3)接⼝测试------关注数据的传送,数据的安全加密
  (4)安全测试------APP内涉及到⽤户的信息是否加密,XSS攻击、sql注⼊来测试
  (5)兼容测试------平台/系统(ios、android)、不同机型、相同机型的不同系统版本、分辨率、版本之间的兼容等
2、Appium 的⼯作原理?
Appium启动时会创建⼀个http:127.0.0.1:4723/wd/hub服务端(相当于⼀个中转站),脚本会告诉服务器我要做什么,服务端再去跟设备打交道,服务端完成了脚本交给他的任务之后
服务端和设备如何通讯?
服务端和设备默认使⽤4723端⼝进⾏通讯的,底层调⽤uiautomator⼯具,在测试的时候服务端会给设备扔⼀个jar包就是appiumbootstrap.jar,会启动这个包,启动之后会在⼿机上创建⼀个socket服务,暴露的就是4723的端⼝;相对于socket服务来说,appium服务端⼜是⼀个客户端;
服务端的4723可以修改,设备上的不可以;服务端收到脚本传递过来的命令之后,通过电脑上的4723端⼝,想设备上的4723端⼝发送指
令,appiumbootstrap.jar收到指令后回去完成点击,滑动其他的操作,完成之后再通过服务给服务端⼀个相应。服务端收到之后再去相应脚本
--------------------- 本⽂来⾃ jffhy2017 的CSDN 博客,全⽂地址请点击:blog.csdn/jffhy2017/article/details/69220719?utm_source=copy
Appium⼯作原理
2.1 Android
在Android端,appium基于WebDriver协议,利⽤Bootstrap.jar,最后通过调⽤⽤UiAutomator的命令,实现App的⾃动化测试。
UiAutomator测试框架是Android SDK⾃带的App UI⾃动化测试Java库。
另外由于UiAutomator对H5的⽀持有限,appium引⼊了chromedriver以及safaridriver等来实现基于H5的⾃动化。
appium 在android端⼯作流
1. client端也就是我们 test script是我们的webdriver测试脚本。
2. 中间是起的Appium的服务,Appium在服务端起了⼀个Server(4723端⼝),跟seleniumWebdriver测试框架类似, Appium⽀持标准的
WebDriverJSONWireProtocol。在这⾥提供它提供了⼀套REST的接⼝,Appium Server接收web driverclient标准rest请求,解析请求内容,调⽤⽤对应的框架响应操作。
3. appium server会把请求转发给中间件Bootstrap.jar,它是⽤java写的,安装在⼿机上.Bootstrap监听4724端⼝并接收appium的命令,最终通
过调⽤⽤UiAutomator的命令来实现。
4. 最后Bootstrap将执⾏的结果返回给appium server。
5. appium server再将结果返回给 appium client。
2.2 ios
在IOS端,appium同样使⽤WebDriver的⼀套协议。
与Android端测试框架不同的是,appium ios封装了apple的Instruments框架,主要⽤了Instrument⾥的UIAutomation(Apple的⾃⾃动化测试框架),然后在设备中注⼊⼊bootstrap.js进⾏⾏监听。
appium 在ios端⼯作流
1. client端依然是 test script是我们的webdriver测试脚本。
2. 中间是起的Appium的服务,Appium在服务端起了⼀个Server(4723端⼝),跟seleniumWebdriver测试框架类似, Appium⽀持标准的
WebDriverJSONWireProtocol。在这⾥提供它提供了⼀套REST的接⼝,Appium Server接收web driverclient标准rest请求,解析请求内容,调⽤⽤对应的框架响应操作。
3. appium server调⽤instruments.js 启动⼀⼀个socketserver,同时分出⼀个⼦⼦进程运⾏instruments.app,将bootstrap.js(⼀个UIAutomation
脚本)注⼊⼊到device⽤于和外界进⾏交互
4. 最后Bootstrap.js将执⾏的结果返回给appium server
5. appium server再将结果返回给 appium client。
所以我们可以看到android与ios区别在于appium将请求转发到bootstrap.js或者bootstrap.jar.然后由bootstrap驱动UIAutomation和UiAutomator去devices上完成具体的动作。
3、接⼝测试⽤例的设计?
   1)  优先级--针对所有接⼝
    1、暴露在外⾯的接⼝,因为通常该接⼝会给第三⽅调⽤;
    2、供系统内部调⽤的核⼼功能接⼝;
    3、供系统内部调⽤⾮核⼼功能接⼝;
   2)  优先级--针对单个接⼝
    1、正向⽤例优先测试,逆向⽤例次之(通常情况,⾮绝对);
    2、是否满⾜前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 > 参数数据类型⾃⾝的数据范围值限制
   3、⽆⽹络,接⼝的响应时间和返回值
4、接⼝测试⽤例过多时,如何简化⽤例?
  (1)根据接⼝的使⽤对象(外部,系统内部),有选择的去、留部分⽤例
(2)根据接⼝的是否核⼼接⼝,有选择的去、留部分⽤例
(3)根据参数说明,及实际情况,有选择的去、留部分⽤例
5、接⼝测试的输⼊值如何考虑设计?
  (1)覆盖所有的必选参数
  (2)组合可选参数
  (3)参数有、⽆或为null
  (4)参数的顺序、个数、类型
  (5)参数类型的数值⼤⼩,输⼊的数值的范围
  (6)参数字符串的长短
  (7)参数包含特殊字符
6、接⼝测试质量评估标准:
  a) 业务功能覆盖是否完整
  b) 业务规则覆盖是否完整
  c) 参数验证是否达到要求(边界、业务规则)
  d) 接⼝异常场景覆盖是否完整
  e) 接⼝覆盖率是否达到要求
  f)  代码覆盖率是否达到要求
  g) 性能指标是否满⾜要求
  h) 安全指标是否满⾜要求
7、软件测试⽤例设计
  推荐⼀篇博客,学习链接:wwwblogs/sunshine2016/category/840159.html
8、接⼝测试⼀遍,功能测试⼀遍,是不是测试重复了?
  不会,可以设置2个测试的关注点不同,推荐⼀篇博客,学习链接:wwwblogs/puresoul/p/5388586.html
9、http和https的区别?
1、https协议需要到ca申请证书,⼀般免费证书较少,因⽽需要⼀定费⽤。
2、http是超⽂本传输协议,信息是明⽂传输,https则是具有安全性的ssl加密传输协议。
3、http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。
4、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安全。
--------------------- 本⽂来⾃ xh15 的CSDN 博客,全⽂地址请点击:blog.csdn/xionghuixionghui/article/details/68569282?
app接口测试工具utm_source=copy
10、请求⽅式是否有所了解?分别说明
  GET:发送请求来获得服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中。另外get⽀持快取、缓存、可保留书签等。幂等
  POST:和get⼀样很常见,向服务器提交资源让服务器处理,⽐如提交表单、上传⽂件等,可能导致建⽴新的资源或者对原有资源的修改。提交的资源放在请求体中。不⽀持快取。⾮幂等
  HEAD:本质和get⼀样,但是响应中没有呈现数据,⽽是http的头信息,主要⽤来检查资源或超链接的有效性或是否可以可达、检查⽹页是否被串改或更新,获取头信息等,特别适⽤在有限的速度和带宽下。
  PUT:和post类似,html表单不⽀持,发送资源与服务器,并存储在服务器指定位置,要求客户端事先知道该位置;⽐如post是在⼀个集合上(/province),⽽put是具体某⼀个资源上(/province/123)。所以put是安全的,⽆论请求多少次,都是在123上更改,⽽post可能请求⼏次创建了⼏次资源。幂等
  DELETE:请求服务器删除某资源。和put都具有破坏性,可能被防⽕墙拦截。如果是https协议,则⽆需担⼼。幂等
  CONNECT:HTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器。就是把服务器作为跳板,去访问其他⽹页然后把数据返回回来,连接成功后,就可以正常的get、post了。
  OPTIONS:获取http服务器⽀持的http请求⽅法,允许客户端查看服务器的性能,⽐如ajax跨域时的预检等。
  TRACE:回显服务器收到的请求,主要⽤于测试或诊断。⼀般禁⽤,防⽌被恶意攻击或盗取信息。
11、get请求和post请求的区别?
GET POST
点击返回/刷新按钮没有影响数据会重新提交
缓存/添加书签可以不可以历史记录有没有
编码类型application/x-www-form-urlencoded application/x-www-form-urlencoded
或 multipart/form-data。为⼆进制数据使⽤多重编码
是否幂等幂等⾮幂等
长度限制
http协议没有限制,但是实际浏览器或服务
器有(最⼤2048)
理论上没有,可能会收到服务器配置或内存限制
数据类型限制只能ASCII,⾮ascii都要编码传输没有限制,允许⼆进制数据
安全性数据全部展⽰在url中,不安全相⽐get,通过request body传递数据,⽐较安全
可见不可见
注意:以上只是⼀种规范,如果⾮要给get加上request body,或者给post的url上带上参数,技术上没有任何问题。
12、如何确定性能测试的指标?标准如何定?如何推动性能的优化?
  (1)基于现有的业务确定
  (2)现有的⾏业标准
  (3)个⼈之前的⼯作经验等
  性能的优化:
    内存使⽤优化,程序架构优化,降低模块间耦合,要不就是⽹络性能优化咯
⼀、开发不认可你的bug怎么办?
1、可以先分析哪些类型的bug会出现这个情况,然后根据每种情况进⾏针对性说明,分别从bug本⾝、环境因素、⼈等⽅⾯回答,这样可以体现⾃⼰的分析能⼒和处事⽅式
2、开发不认同的bug⼀般是:数据问题导致的bug、环境问题导致(偶发)、优化体验类的bug
3、如果是应聘钢,也可以回答说出这个情况的“⼈”的原因,⽐如⼀种可能是测试⼈员和开发⼈员之间有⽭盾等导致
4、⼯作中遇到这个情况后,不要轻易认同开发给的笼统模糊的观点,多纬度验证(排查法),明确bug
出现的条件,定位bug的真正原因,测试实际上就是提供信息,⽐如app出现闪退的问题,我们就同⼀⼿机上验证不同的版本,或者不同⼿机验证同⼀个版本,或同⼀款⼿机,不同的操作系统版本上,验证同⼀个app版本。
⼆、给的测试时间特别短,怎么安排写⽤例和执⾏测试的时间?
  考察做事时是否灵活,是否会注意区分轻重缓急,以及解决问题的能⼒,(⾯试官往往通过应聘者表现出来的分析能⼒,归纳总结能⼒来判断其解决问题的能⼒),回答时可以根据具体的情况具体分析,然后结合具体的实例:
思考范围:
是否为新需求/旧某块的变更优化、此次变更影响的模块范围、此次任务的优先级、此次变更的总开发周期、当前的测试⼈员数量、当前的测试⼈员其他任务的排期、项⽬经理是否存在对此次变更的排期不合理、根据实际情况考虑后,与项⽬经理等⼈沟通排期时间,
说⽩了就是质量和时间的问题,这个时间我可以完成,但不保证质量,质量保证的情况下⼀定的时间是不可以被忽略的,鱼和熊掌不能兼得
  1、是否需要写很多的⽤例?或者是否需要做⼤量的测试分析?这是不⼀定的,⽐如bug修复对应的回
归时间都是不能明确给出时间的。
  2、⽤例是否可以从⽤例库中筛选?
  3、是需求,没有⽤例的情况下,考虑⽤xmind
  4、加班可以追赶进度的话,适当的加班追赶(但这不是长久之计)
  5、管理层对项⽬质量的态度(这个基本上都是不⽤说的)
  6、如果是⾯试管理岗,需要考虑到:i⽐如⽤什么样的⼈来执⾏这样的任务⽐较合适?要考虑这个现象是暂时还是常态,是否需要/可以优化?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。