关于接口,UI自动化测试框架实战思路

前言

今天呢,笔者想和大家来分享一下个人的学习心得和面试经验,主要是关于接口,UI 自动化测试框架实战方面的技能。以下是我在面试过程中,被问到的一些问题以及我的个人答题思路,仅供参考。可能有些问题回答的不是很全面,也欢迎大家留言交流探讨。

一、关于 Python 学习

  • 深浅拷贝
  • 各数据结构特点、区别
  • 垃圾回收机制
  • Python 缓冲池
  • 装饰器原理与实现
  • 线程,进程,协程区别、实现
  • 迭代器与生成器等

二、关于接口自动化

其实很多时候,企业不是仅限于满足断言接口状态响应码,部分字段等。对于编写速度,稳定性,数据真实性也是有很多的要求

  • 对于速度,我们可以通过 mustache 模板技术生成测试用例,可以通过 Charles 生成的 chls 文件进行部分处理生成 JSON 或者 YAML 文件
  • 对于稳定性,可以通过在设计阶段,生成对应接口正确的 jsonschema 进行对比
  • 对于数据真实性,可以通过 mitmproxy,让流量走特定接口,直接生成线上数据,模拟真实用户请求

三、接口测试如何设计测试用例?

接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!

接口测试设计测试用例的思路如下:

1.接口业务逻辑测试:

接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。

2.模块接口测试:

模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。

模块接口测试的主要包括以下几个方面:

  • 鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)
  • 其他参数异常
  • 错误码异常覆盖
  • 接口测试其他的关注点接口有翻页时,页码与页数的异常值测试数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致接口返回的图片地址能否打开,图片尺寸是否符合需求当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。所有列表页接口必须考虑排序值所有功能都要考虑兼容旧版本

四、Pytest 测试框架

Pytest 是最流行的 Python 自动化测试框架,需要重点掌握

4.1UI 自动化测试

除了学院教授的 PO 思想,简单完成页面封装后。我们要去增加用例,只有用例数足够多的时候,才能发现还需要处理在多个 py 文件中管理用例顺序,合理 driver 调度等一系列问题。也可以去增加相关的日志,报告模块的封装,将部分 JS 处理同步集成到 Basepage 模块中等一系列的系统操作,SeleniumGrid 的集成等等。

4.2UI 自动化扩展:

增加 log 存储,Allure 报告存储(此处的 Allure 必须要结合趋势图,例如这一次生成报告后,你需要保存 result 中的 history 文件,等下一次生成时,覆盖到 report 中的 histroy 中),seleniumgrid 的执行命令,使用 pytest.ini 进行定制,使用pytest钩子函数定制,使用 pytest-xdist 进行并发用例等)。

4.3对于自动化测试原理

重点掌握 Selenium 自动化原理,接口 Requests 原理,接口 Mitmproxy 代理原理(中间人攻击),Appium 自动化测试原理;

五、关于计算机网络

5.1UDP 与 TCP 区别

  • TCP 有连接;UDP 无连接(基于无状态传输)
  • TCP 需要建立三次握手,含有确认、拥塞、重传机制,对系统资源要求多
  • UDP 不需要一系列复杂认证,速度快;TCP 速度慢
  • TCP 含有确认机制,数据可靠,有序;UDP 不可靠,无序
  • TCP 面向字节流(流模式);UDP 面向报文(数据报模式)

5.2HTTP 与 HTTPS 区别

  • http是超文本传输协议,信息是明文传输;https是具有安全性的ssl传输协议
  • http与https使用的是不同的连接方式,端口也一样,http默认端口是80;https默认端口是443
  • http连接状态比较简单,是无状态的;https协议是由ssl+http协议组成的可进行传输、身份认证的网络协议

5.3 session、token、cookie 区别

  • cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数
  • cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
  • 可以将登录信息等重要信息存放为session;其他信息需要保存,可以放在cookie

5.4 常见网络状态响应码

  • 200 成功
  • 30X 重定向
  • 400 请求格式/语法错误
  • 401 权限
  • 404 资源未找到
  • 405 不允许的请求方式
  • 5XX 服务端错误:
  • 50X 服务器内部错误
  • 502错误网关
  • 503服务不可用 服务器超载或者停机
  • 504网关超时

六、关于数据库 MySQL

重点复习内连接inner join,左链接left join ,右链接right join(要知道左右连接的区别),union,子查询,排序order by,分组group by ,过滤having,去重distinct,事务,索引类型、原理,存储过程,慢 SQL,优化等。

七、关于测试思维

面试时候面试官大部分会询问你以往工作经验中的整体项目生命周期流程,具体功能的系统流程,另外会让你说出你是如何设计测试计划、测试用例、测试报告。还有接口测试,项目中如何做的接口测试,接口测试流程。

给大家总结一个登录的测试用例,需要考虑的层面有:功能测试、界面测试,性能测试,安全测试,易用性测试,兼容性测试,本地化测试。现用登录界面来举例如何设计测试用例

八、功能测试

  • 输入正确的用户名和密码,点击提交按钮,验证是否能正确登录
  • 输入错误的用户名或者密码,验证登录会失败,并且提示相应的错误信息
  • 登录成功后能否能否跳转到正确的页面
  • 用户名和密码,长度
  • 用户名和密码,特殊字符(比如空格)
  • 登录失败后,不能记录密码的功能
  • 用户名和密码前后有空格的处理
  • 密码是否非明文显示,使用星号圆点等符号代替。
  • 牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
  • 登录页面中的注册、忘记密码,登出用另一个帐号登陆等链接是否正确
  • 什么都不输入,点击提交按钮,检查提示信息

九、界面测试

  • 布局是否合理,testbox 和按钮是否整齐
  • testbox和按钮的长度,高度是否符合要求
  • 界面的设计风格是否与UI的设计风格统一
  • 界面中的文字简洁易懂,没有错别字

十、性能测试

  • 打开登录页面,需要的时间是否在需求要求的时间内
  • 输入正确的用户名和密码后,检查登录成功跳转到新页面的时间是否在需求要求的时间内
  • 模拟大量用户同时登陆,检查一定压力下能否正常登陆跳转

十一、安全性测试

  • 登录成功后生成的Cookie,是否是httponly
  • 用户名和密码是否通过加密的方式,发送给Web服务器。
  • 用户名和密码的验证,服务器端验证,而不能前端javascript验证
  • 用户名和密码的输入框,屏蔽SQL注入攻击
  • 防止暴力破解,检测是否有错误登陆的次数限制
  • 是否支持多用户在同一机器上登录
  • 单点登录or多机可登录

十二、易用性测试

  • 是否可以全用键盘操作,是否有快捷键
  • 输入用户名,密码后按回车,是否可以登陆
  • 输入框能否可以以Tab键切换

十三、兼容性测试

  • 不同浏览器下能否显示正常且功能正常
  • 同种浏览器不同版本下能否显示正常且功能正常
  • 不同的平台是否能正常工作,比如Windows、Mac
  • 移动设备上是否正常工作,比如iPhone、Andriod
  • 不同的分辨率下显示是否正常

十四、关于Linux常用命令:

  • 查看帮助文档 :--help ls --help ,man 如man ls
  • 空格键向下翻页,回车键下一行,d 往前翻, 看完退出Q
  • ls查看文件,ls -a查看所有文件包含隐藏文件,前边带点的是隐藏文件,一个点是当前目录,两个点是上级目录,ls-l显示文件详细信息(简写方式ll),可以组合使用比如ls -al 显示文件加详细信息
  • cd h 按tab键自动补全了变成cd hotwargs
  • 显示当前目录pwd
  • 创建新目录mkdir,创建多层目录的新文件a/b/c -p,创建空文件touch touch 1.txt
  • 查看文件里的具体内容cat cat 1.txt
  • 删除文件 rm 1.txt,删除目录 rm -r加文件名,强有力的删除,不管有没有都不会报错 rm -rf,rm -ri b 会询问一下是否要删除目录b
  • cp ./1 ./feier 把1文件拷贝到feier目录下 cp 源文件路径加目标文件路径,拷贝当前目录下的a目录拷贝到上一层目录下的霍格沃兹 cp /a ./a ../hotwargs/ 加参数-a才能拷进去
  • 查找文件:find ./ -name 1.txt 查找当前目录下的1文件,./ -name '*.txt' 查找当前目录下的所有txt文件
  • head -n 3显示文件内容的前3行信息
  • 压缩文件 tar -zcvf f.tar.gz 1.txt 2.txt,解压文件 tar -xf f.tar.gz
  • du -sh 查看当前目录总大小,df -lh 查看磁盘使用
  • 查看日志less或者view加文件名,查看控制台日志tail-f加日志文件名
  • 查看当前系统都有哪些进程:ps -aux 或者ps -elf
  • 查看系统都开启了哪些端口:netstat -lnp
  • 杀死一个进程:Kill -9 pid
  • 怎么重启 Linux 服务器:
  • shutdown -h now --立即关机
  • shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天。

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!【100%无套路免费领取】

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

你可能感兴趣的:(软件测试,程序员,接口测试,自动化测试,测试工程师,面试)