测试开发07

测试开发07

web自动化测试

selenium中hidden或者是display=none的元素是否可以定位到

不能,可以写javascript,将标签中的hidden改为0可以定位到

selenium中如何保证操作元素的成功率(一定可以是点击的)

1.添加元素智能等待时间driver.implicitly_wait(30)
2.添加强制等待时间(如sleep)
3.try方式进行id,name,xpath,css…以不同方式进行元素定位,如果一种失败可以尝试另一种

提高selenium脚本的执行速度

代码优化、多任务、分布式部署

用例在运行过程中出现不稳定的情况,这次通过可能下次就通过不了,所以要去提高用例的稳定性

1.time.sleep()
2.driver.implicitly_wait(30)
3.多用try捕获,处理异常

自动化用例的执行策略

自动化测试与软件开发本质上是一样的,利用自动化测试工具,经过测试需求分析,设计出自动化测试用例,从而搭建自动化测试框架,编写自动化测试脚本,验证测试脚本的正确性,最终完成自动化测试脚本并输出测试结果

自动化测试连接数据库做数据校验

我一般都在接口自动化中连,但是UI层面的校验也是需要做的

id/name/class/xpath/css selector

xpath/css几乎都能定位到,但是当页面更改了元素位置后就很容易改变,id或name相比他俩在更改元素位置的情况下要强

定位页面上动态加载的元素

触发动态加载元素的事件,动态元素出现后开始定位

定位属性动态变化的元素

有frame框架的先跳到框架里,然后再跳出
xpath或者css通过同级、父级、子集进行定位
加元素等待时间

page object设计模式

把页面作为对象,在使用中传递页面对象,使用页面对象中相应的成员或者方法,能更好的体现面向对象语言的面向对象和封装特性

在定位元素后高亮元素

用javascript来重置元素属性,给定位的元素加背景及边框

断言

assert
assertion checking
断言是指一个程序必须已经存在的状态的一个逻辑表达式,一组程序在执行期间某个点必须满足的条件
如-断言状态码、断言返回数据,与所期望的是否一致

自动化测试的缺陷

不稳定、不宜维护、成本与收益

webdriver

webdriver适用于webUI自动化测试,接口自动化可用jmeter、python中的requests库等

APP UI自动化测试

Android内存不足时,系统如何结束进程获取内存

系统优先结束被挂起的进程,从而释放出内存

app测试常见的严重问题以及引起的原因

crash、ANR — 无响应卡死
设备问题、网络问题、内存问题、代码问题

介绍一下app自动化测试工具

appnium
airtest

Android与web测试的区别

相同点:
1.设计测试用例以及测试原理相同
2.黑盒测试
3.UI测试
4.性能测试
5.稳定性测试
不同点:
1.手机作为通信工具,一些行为会对app产生影响,中断测试
2.安装卸载测试
3.自动化工具,性能app会偏向于monkey、monkeyrunner

app测试的环境

本地环境、测试环境、正式环境

Android SDK的安装步骤

下载jdk与Android sdk
安装并配置环境变量。。。有详细介绍

移动应用及其服务端的测试点

移动应用的测试点:
app的权限问题
安装运行卸载
UI
功能
性能
中断测试
兼容性测试
安全性测试
回归测试
升级更新
用户体验

服务器:
接口测试
性能测试
安全测试

app的bug是客户端问题还是后台问题

样式、数据等为前端、也有报错或者数据问题也可能是后端问题
根据实际业务来

Android中取出日志信息

Android系统日志信息实时导入到本地:adb logcat -v time > d:\mylog.log
实时获取app的日志信息(cmd):
adb shell monkey -p com.android.calendar -v 1000 > d:\mylog2.log

adb命令

查看当前连接的设备:adb devices
安装软件:adb install ***.apk
卸载软件:adb uninstall 包名
从电脑上发送文件到设备:adb push 本地路径 远程路径
adb push C:\test1.txt/sdcard/
从设备上下载文件到电脑:adb pull 远程路径 本地路径
adb pull /sdcard/test1.txt C:
获取实时日志:adb logcat -v time > D:\mylog.log
登录终端设备shell:adb shell
查找包名/活动名:adb logcat | findstr START

启动 APP 启动:adb shell am start -n packageName/activity

关闭 app语法:adb shell am force-stop 包名

监控 APP 启动时间:adb shell am start -W packageName/activity

Monkey 命令:adb shell monkey -v -p mypackage 50

app测试的主流机型

华为 小米 iphon系列 ----测试兼容性
或者采用云真机

APP崩溃、闪退的原因

缓存垃圾过多
运行的程序过多,导致内存不足
应用版本兼容性问题
网络问题
各类问题

appium的启动方式

客户端启动
命令行启动

Android UI自动化测试工具

appium:是一个移动端的自动化框架,可用于测试原生应用、移动网页应用。混合型应用,并且是跨平台的
robotium:是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。
airtest:----------

Android及ios的区别

两者运行机制不同:ios采用的沙盒运行机制、Android采用的是虚拟机运行机制
两者后台制度不同:ios中任何第三方程序都不能在后台运行,android可在后台运行,直到没有内存才会关闭
ios用于UI指令权限最高,android用于数据处理指令最高

接口自动化测试

什么是接口

程序中在不同模块之间传输或接收数据并做处理的类或者函数

http与https的区别

http是超文本传输协议,信息是明文传输;https是http+ssl构建的加密传输身份认证的网络协议,比http要安全
端口号不一样,http是80,https是443
https一般需要用到CA证书,有些免费有些付费

网络协议-https在哪一层

https在应用层

get和post的区别是什么

向服务器提交数据、从服务器获取数据
get通过地址栏传输,post通过报文传输
get参数有长度限制,post无限制
GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)
get请求参数会被完整保留在浏览记录里,post参数不会被保留
例:|
数据查询时,多用get
数据添加修改删除时,建议用post

常见的post提交数据方式

application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml

http协议无状态协议

无状态是指协议对事务处理没有记忆能力,服务器不知道客户端是什么状态
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。HTTP 是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。HTTP 协议这种特性有优点也有缺点,优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。

cookie与session的区别

cookie数据存放在浏览器上,session数据存放在服务器上
cookie不安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
session在一定能时间内保存在服务器上,当访问量增多,会比较占用服务器的性能,若减轻服务器性能应当用cookie
单个cookie保存的数据不应超过4K,很多浏览器都限制一个站点最多保存20个cookie,可以将重要信息保存到session,其他信息保存在cookie

DNS

DNS-域名解析服务,DNS是用来做域名解析的,在输入网址后,它转换为IP,然后去访问服务器。没有DNS,假如要上百度则需记住百度的IP,有了DNS,只需要记住对应网站的域名,即网址

接口测试

1.获取接口规范或接口文档,没有文档fidder抓包
2.设计测试用例-在功能测试的基础上
3.jmeter写脚本,实现逻辑覆盖
4.测试接口

设计接口测试用例

通常,设计接口测试用例需要考虑以下几个方面:

①是否满足前提条件

有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token

逆向用例:针对是否满足前置条件(假设为n个条件),设计0~n条用例

②是否携带默认值参数

正向用例:带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其他不填写,设计1条用例

③业务规则、功能需求

这里根据时间情况,结合接口参数说明,可能需要设计N条正向用例和逆向用例

④参数是否必填

逆向用例:针对每个必填参数,都设计1条参数值为空的逆向用例

⑤参数之间是否存在关联

有些参数彼此之间存在相互制约的关系

⑥参数数据类型限制

逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例

⑦参数数据类型自身的数据范围值限制

正向用例:针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例

接口测试的工具

postman jmeter fidder…

没有接口文档做接口测试

抓包

在接口测试中上下游接口有数据依赖

用一个全局变量来处理依赖的数据。如登录后返回的token,其他接口都需要这个token,所以就用全局变量来传token参数

依赖于第三方的接口如何进行测试

mock
搭建mock fidder也可以实现mock

接口测试中,依赖登录状态的接口如何测试

依赖登录状态的接口本质上是在每次发送请求时需要带上session或者cookie才能发送成功,在构建post请求时添加上必要的session或cookie

弱网测试

fidder
F12

接口测试发现的bug

常规错误,接口没实现,没按约定返回结果,边界值处理出错等。

输入异常值(空值、特殊字符、超过约定长度等),接口抛错,没做封装处理;

输入错误的参数、多输入、少输入参数,接口可能出现的错误;

安全性问题,如明文传输、返回结果含有敏感信息,没对用户身份信息做校验,没做恶意请求拦截等;

性能问题,如接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈等;

当接口出现异常时是如何分析异常的

抓包-fidder或者fidder
查看后端日志 tail -f

如何分析一个bug是前端还是后端的问题

抓包分析:请求数据有问题就是前端的问题,返回报文数据有文艺就是后端的问题

接口自动化

jmeter
pytest
unittest

Jmeter监听器

查看结果树
聚合报告
图形结果
用表格查看结果
。。。

在python中进行数据驱动的测试

在unittest中,没有自带的数据驱动,需要借助ddt来实现,在python运行环境中安装ddt,然后pip install ddt
在pytest中,自带数据驱动,通过@pytest.mark.parametrize(argnames,argvalues)

接口自动化中的关联如何处理

上一个请求返回的结果传入下一个请求的参数中
设置全局变量或者建立正则表达式和后置处理器

自动化测试之结果校验

1.通过断言进行结果校验,达到预期结果与实际结果的对比
2.数据库校验,根据测试场景来查询数据库里的数据和请求之前的数据进行对比

使用的自动化测试框架

测试框架:python+unittest+requests+ddt+openpyxl+pymysql+logging
python:语法简洁
unittest:定义一个测试用例类,用具体的方法来维护测试用例的生命周期,测试场景行为,测试用例、前置场景、行为、期望结果、实际结果、断言方法、setup/teardown方法
requests:接口调用,支持http请求的库,API简介,提供不同的http请求方法,支持session,cookies
ddt:数据驱动,ddt类装饰器,data测试方法装饰器,unpack解包可迭代的数据类型,普通用户、数据库、配置文件–(基础数据)
openpyxl:数据管理之excel管理数据,使用openpyxl模块来进行excel数据的读和写(excel/csv/json/yaML/txt都可以管理测试数据)
pymysql:数据库交互、数据校验
eval/json:数据格式的转换,eval将python支持的格式转换为对应的格式
logging:日志处理,统一日志输出格式、渠道、级别、执行结果的记录,便于定位问题
Jenkins:持续集成
框架设计思路:数据驱动+结构分层(可读性、可维护性、可扩展性)
数据驱动:将维护数据与代码分离,接口调用行为一致,针对不同的参数组合驱动不同的测试场景,减少代码冗余
结构分层:数据层+用例层+逻辑层
数据层:测试数据的支撑-data.xls
用例层:用力的执行test_register.py,
逻辑层:公用方法的封装与提取logger.py/…/py等公用的模块
框架设计:
测试数据:excel准备测试用例-数据读取-参数值的替换
发起请求:get/post
拿到请求的返回值:解析返回值code、status、msg等信息
断言

好处:
自动化测试与手工测试的完美结合,可以减少重复性的工作
配置灵活,可以自主切换测试环境,执行测试用例
常用功能进行封装,逻辑清晰,易于维护
统一执行入口,管理测试用例集
run.py模块执行测试用例
持续集成、定时构建、快速反馈

具体在项目中自动化怎么应用到实际

对自动化结果的分析完成所有的自动化测试框架的设计和实现后,进行接口测试,集成到jenkins,配置定时执行,生成html报表,查看测试通过率,查看接口的功能
每次发版前进行回归测试
发版后再执行一遍

https://mp.weixin.qq.com/s/0FUZeZFurRYOwiwcoeLzPg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪敏wangmin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值