selenium 过程如下:
运行用python写好的selenium脚本,它会像web service中发送一个http请求
浏览器驱动中的web service 会根据这个请求生成对应的js脚本,因为不同的浏览器,相同的操作生成的js脚本会有所不同,因此不同的浏览器要有不同的驱动
js脚本驱动浏览器,产生各种操作,并返回给web service
web service将结果通过http响应的形式返回给客户端
appium的加载过程
调用Android adb完成基本的系统操作
向Android上部署bootstrap.jar
bootstrap.jar Forward Android的4723端口到PC机器上
PC上监听端口接收请求,使用webdriver协议
分析命令并通过forward 端口发给bootstrap.jar
bootstrap.jar接收请求并把命令发给uiautomator
uiautomator执行命令
selenium的定位方式
ID定位:driver.find_element_by_id("kw")
name定位:driver.find_element_by_name("wd")
class name定位:driver.find_element_by_class_name("s_ipt")
tage name定位:元素的标签名,比如input标签 driver.find_element_by_tag_name()
link_text和partial_link_text:link_text和partial_link_text是作用于链接a标签的,link_text用于全部匹配文本值,partial_link_text用于部分匹配文本值。
css定位:通过组合的方式进行定位 driver.find_element_by_css_selector(css表达式)
xpath定位:find_element_by_xpath(xpath表达式)
绝对定位 (/):严格按照路径、同级元素的位置来定位
相对定位(//):有一个参照物 不考虑路径和位置,只考虑:有还是没有!! 以//开头 //标签名[@属性名称=值]
UI 自动化测试中,如何做集群?
Selenium Grid,分布式执行用例
Appium 使用 STF 管理多设备
Docker+K8S 管理集群
测试理论:
隐藏得比较深的bug、影响比较大的bug、处理过程比较曲折的bug。根据自己的经验描述:如何发现的、如何处理、影响、结果、反思。
举例说明:如升级版本兼容性问题、接口安全性问题、数据库安全性问题、服务器资源占用溢出问题、代码逻辑问题等
app兼容性:
系统兼容(ios、安卓)、机型兼容(iPhone、华为、小米、三星、vivo、OPPO)、分辨率兼容、软件本身向前向后兼容
web端测试和app端测试差异:
系统结构方面
Web 项目,b/s架构,基于浏览器的;Web 测试只要更新了服务器端,客户端就会同步会更新;
App 项目,c/s结构的,必须要有客户端;App 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍;
兼容方面
Web项目:a. 浏览器(火狐、谷歌、IE等)b. 操作系统(Windows7、Windows10、Linux等)
App项目:a. 设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)b. 手机设备可根据 手机型号、分辨率不同
性能方面
web项目 需监测 响应时间、CPU、Memory
app项目 除了监测 响应时间、CPU、Memory外,还需监测流量、电量等
相对于 Web 项目,APP有专项测试
干扰测试:中断,来电,短信,关机,重启等
弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况
卸载:需考虑 卸载后是否删除 App 相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
权限测试:设置某个 App 是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
测试用例:
登录界面:
功能测试:正确输入、为空输入、字符类型校验、长度校验、密码是否加密显示、大写提示、跳转页面是否成功、登出后用另一个账号登录
UI:界面布局合理、风格统一、界面文字简洁好理解、没有错别字
性能测试:打开登录页面需要几秒、点击登录跳转首页需要几秒、多次点击、多人点击
安全性:用户名和密码是否加密发送给服务器、错误登录的次数限制(防止暴力破解)、一台机器登录多个用户、一个用户多方登录、检查元素能否看到密码
兼容性测试:不同浏览器、不同的平台(Windows、Mac)、移动设备能否工作
易用性:输入框可否tab键切换、回车能否登录等
性能测试指标包括哪些
最大并发用户数,HPS(点击率)、事务响应时间、每秒事务数、每秒点击量、吞吐量、CPU使用率、物理内存使用、网络流量使用等。
前端需主要关注的点是:
响应时间:用户从客户端发出请求,并得到响应,以及展示出来的整个过程的时间。
加载速度:通俗的理解为页面内容显示的快慢。
流量:所消耗的网络流量。
后端需主要关注的是:
响应时间:接口从请求到响应、返回的时间。
并发用户数:同一时间点请求服务器的用户数,支持的最大并发数。
内存占用:也就是内存开销。
吞吐量(TPS):Transaction Per Second, 每秒事务数。在没有遇到性能瓶颈时:TPS=并发用户数*事务数/响应时间。
错误率:失败的事务数/事务总数。
资源使用率:CPU占用率、内存使用率、磁盘I/O、网络I/O。
从性能测试分析度量的度角来看,主要可以从如下几个大的维度来收集考察性能指标:
系统性能指标、资源性能指标、稳定性指标
如果一个需求没有明确的性能指标,要如何开始进行性能测试?
先输出业务数据,如pv、pu、时间段等,计算出大概的值,然后不断加压测到峰值
介绍JMeter聚合报告包括哪些内容
请求名、线程数、响应时间(50 95 99 最小 最大)错误率、吞吐量
如果有一个页面特别卡顿,设想一下可能的原因
后台:接口返回数据慢,查询性能等各种问题
前端:使用chrome工具调试,判断js执行久或是其他问题
网络问题
说一说项目中的实际测试内容
根据自己项目中的经验实话实说,有没有经验很容易露馅
介绍一下JMeter进行性能测试的过程
www.baidu.com 55
介绍一下JMeter和LoadRunner的区别
www.baidu.com 55