app测试之介绍(18.0)
app测试
app功能测试和app自动化测试
===============================
(一)app手工测试
app手工测试:就是在app上进行手工测试(手点)
app自动化测试使用代码或工具来代替手工测试(python+appium)
(二)web测试和app测试区别?( 重点)
(1)单纯从功能测试的层面上来讲的化,app测试、web测试在流程和功能测试上是没有区别
(2)根据两者载体不一样,区别:
web项目:b/s 架构,基于浏览器的;web测试只要更新服务器端,客户端就会同步更新
app项目:c/s 架构 必须在客户端;app修改了服务端,则客户端用户所有核心版本都要进行回归测试一遍。
(3)性能方面:
web项目 需检测响应时间,cpu,
app项目 需检测响应时间,cpu,还要考虑流量,电量
(4)兼容性方面
web项目:
浏览器(火狐、谷歌、IE等)、版本:ie8、ie10
操作系统(Windows7、Windows10、Linux等)
app项目:
设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)、鸿蒙系统、mac
手机设备可根据 手机型号、分辨率不同
相对于 Wed 项目,
APP有专项测试:
干扰测试:中断,来电,短信,关机,重启等
弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
安装、更新、卸载
安装:需考虑安装时的中断、弱网、安装后删除安装文件等情况(手动安装、自动安装)
卸载:需考虑 卸载后是否删除app相关的文件
更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等
====================================
三、app系统分类
在市面上app测试流行,分为安卓端和ios端(ios端必须要maos系统,还要企业级的证书,再公司一般不会用ios做自动化)
开发人员都是用模拟器,(1、模拟手机种类多,2、连接稳定 3、运行稳定 )
面试题:app中ios和安卓区别?
① 两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。
安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。
② 两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
③ IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
④ ios系统流畅性更具优势。Android系统采用虚拟机的运行机制,需要消耗更多系统资源。Android系统使用一段时间后容易出现卡顿,而ios系统则很少出现卡顿现象,并且Android系统的桌面灵敏性不如ios系统。
⑤ Android的编程语言是JAVA,而iOS的则为Objective-C。Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低。
⑥ 操作界面来讲,ios系统界面单一。而Android的界面可以根据自己的喜好来设置,更加多样化。
⑦ 省电的角度来讲,ios系统更加省电。这是系统机制决定的。Android会占用更多的资源来支撑系统运行,导致了它会比较费电。
=============================
(四)app测试包(后缀名是apk的包)(ios的后缀名:.ipa)
在网上可以看到的包是(生产包)
app 的包下载(灰度包,测试包),开发提交代码,合并代码,通过jenkins 构建,生成测试包:
生成的方式:
第一种:一个连接(url)的方式 (下载灰度包)
第二种:二维码的形式 (下载灰度包)
=============================
(五)app测试流程:(和H模型一样)
1、看需求,分析需求
2、写用例 (自动化脚本的编写)
3、搭建环境(部署好app自动化环境)
4、测试(通过jenkins打包生成最新的apk包,下载后安装到模拟器或手机中)
5、测试,开发修改bug
6、重新提交版本,在打包,在进行测试
7、输出测试报告
=============================
(六)app自动化工具appium 的优点?
优点:
(1)支持多种应用程序
(2)测试对象无需编译
(3)脚本实现多样化以及工具的多样
(4)支持跨平台
缺点:
(1)工具必须依赖电脑才能实现自动化
(2)工具只能用于ui自动化测试
==========================
定位元素:
from appium import webdriver
from time import *
cs={
'platformName':'Android', #平台系统:Android or Ios
'deviceName':'OPPO R17', #设备名称
'platformVersion':'android-5.1W', #平台版本
'appPackage':'com.moji.mjweather', #包名
'appActivity':'com.moji.mjweather.LauncherActivity', #activity
'unicodeKeyboard': True, #使用unicode编码方式发送字符串 }
'resetKeyboard':True} #是将键盘隐藏起来
dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub",cs)
sleep(10)
# dx.find_element_by_id("com.moji.mjweather:id/jc").click() #同意进入
# dx.find_element_by_id("com.moji.mjweather:id/azz").send_keys("北京市")
#dx.find_element_by_android_uiautomator()#
dx.find_element_by_android_uiautomator('new UiSelector().text("北京市")').click()