zoukankan      html  css  js  c++  java
  • 测试面试题

    分析Bug

    先抓包看请求报文,对着接口文档,看请求报文有没有问题,有问题就是前端发的数据不对;请求报文没问题,就看返回报文,返回的数据不对,就是后端的问题。

    举例说下:
    下图的情景,页面显示搜索结果,选择不同的每页显示数量【由size=10变成size=40】,接口vendorId没有传参【vendorId是必传】,那就是说前端少传参数,前端的bug。

     下图的情景:搜索vendorId=100000的数据,接口时间返回 23条数据,看到各种各样的vendorId,确认是返回的数据不对,后台的bug

    测试脚本中 数据的处理

    因为测试的数据多种多样,像登录的账户密码、注册的账户数据、接口的各种参数、邮箱配置的数据等,如何存放?

    1.对于账号密码,可以写在配置文件(ini)
    2.注册使用的账户数据,一次性消耗的数据,可以使用随机函数,或者使用时间戳
    3.接口的各种参数的组合,可以参数化,放到excel、csv里面
    4.邮箱配置,也可以写在配置文件(ini)

    UI自动化测试的优缺点及如何规避缺点

    UI层是用户使用产品的入口,所有功能通过这一层提供给用户,测试工作大多集中在这一层。
    UI自动化测试(GUI界面层),即通过模拟手动操作用户UI界面的方式,以代码方式实现自动操作和验证的一种自动化测试手段。主要应用于冒烟测试、回归测试。

    在实际应用中,UI自动化可以帮助我们节省人工测试成本,提高功能测试的测试效率。缺点也是比较明显,随着敏捷迭代的速度越来越快,UI控件的频繁变更导致控件定位不稳定,提高了用例脚本的维护成本,同时定位的不稳定导致用例的可信度降低。

    解决方法:

    1.在自动化测试中,引入了Page Object Model(POM) 页面对象模式来解决。

    采用PageObject设计模式是将某个页面的所有"元素(包含控件)属性"及"元素操作"封装在1个类(Class)里面,目的是为了将测试代码与被测页面对象代码分离,后期如果有页面元素发生更改,只需要修改相应页面对象的代码(即对应class文件),而不需要修改测试代码。也是为了进一步降低后续因页面变化带来的维护成本。

    2.失败重试机制,提高用例稳定性

    由于用例执行的稳定性直接决定用例在业务落地时的可信度,所以提高用例稳定性是必要的,框架提供了失败重试的机制来间接保证稳定性。即当监听到用例执行失败异常时,重新执行当前用例逻辑,如果执行成功,覆盖当前用例的执行结果;如果失败,重新执行,直到超过重试次数。

    3.定位元素的方式 + 等待方式的优化

    A.实际写脚本的时候,尽量少使用xpath绝对路径方式来定位元素
    B.元素等待少用implicitly_wait 、sleep,可以多使用 WebDriverWait + expected_conditions做新的方法封装

    此外关于自动化测试的优劣势:

    1. 优势:
      提高测试执行效率,节约时间成本;
      解放人力去做更重要的工作;
      可重复利用,建设对人的依赖;
      可大幅度减少兼容性测试的工作量;
      有些测试工作必须依靠自动化实现来完成;

    2. 劣势:
      开发测试脚本需要花费较大的时间成本,拉长周期;
      产品的快速迭代,自动化脚本也将不断迭代,时间成本很高;
      不同的项目之间自动化脚本的复用度很低;
      对短期型项目产品实现自动化价值不高;
      自动化无法完全代替手工测试找到bug,实现100%覆盖;
      自动化更多的适用于回归测试;
      自动化开发过程对软件测试团队的技术有更高的要求;

    App测试和Web测试的区别

    web测试和app测试从流程上来说,没有区别,都有需求分析、设计用例、测试执行、缺陷管理、测试报告等过程。
    从技术角度来说,都需要进行功能测试、性能测试、安全性测试、可用性测试、兼容性测试等类型。

    主要区别在于:

    性能测试:在web测试中,只需要测试响应时间这个要素;在app测试还要考虑流量测试和耗电量。
    兼容性测试:web测试是兼容不同浏览器【常见的兼容IE、Chrome、Firefox】,app测试是兼容手机设备【不同品牌、不同分辨率、不同系统、不同版本】。
    安装测试:web基本没有客户端层面的安装测试,app安装测试包括1).不同操作系统下正常安装测试 2).软件安装后是否能够正常运行,文件夹和文件是否写到指定的目录 3).软件安装各个选项是否符合概要设计说明 4).安装向导的UI测试 5).安装是否可以取消,取消后写入的文件是否符合概要设计说明 6).安装过程的意外情况处理是否符合需求(死机、重启) 7).安装空间不足,是否有提示 8).安装后是否生成多余的目录结构和文件 9).网络验证之类的安装,断网情况下的验证 10).需要对安装手册进行测试

    交叉事件测试:手机客户端的电话、短信、电量不足、闹钟提示、蓝牙传输文件、相机拍照等外部事件
    操作类型测试:手机客户端的横屏测试、手势测试
    网络测试:弱网测试和切换网络测试
    升级测试:升级测试的提醒机制;升级选择取消是否影响原有功能;升级后用户数据是否被清除

    Cookie、Session的区别

    通俗讲,Cookie是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:

    Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。

    Session是存在服务器的一种用来存放用户数据的类HashTable结构。

  • 相关阅读:
    js、css引用文件的下载方式
    前端参考
    Mac配置
    chrome devtools调试Android Webview再也不FQ了!URL映射 + appspot devtools镜像解决chrome调试安卓前端HTML5页面时白屏的问题
    MyBatis 日志输出
    MyBatis 简单原理介绍
    MyBatis resultType 的使用
    sql必知必会笔记
    MyBatis基础:使用java提供的ThreadLocal类优化代码
    Mybatis基础(2)
  • 原文地址:https://www.cnblogs.com/vickyx/p/13820531.html
Copyright © 2011-2022 走看看