加班加点终于的把续集写出来了,这个系列的文字也快要结束了,铁子们还想要看哪方面的文字可以直接练习凡叔哦。
对于App这块,我们一般首先都先做功能,先保证功能过关是第一位,对于功能这块的话,基本都跟Web端是一样的。
除了功能之外,公司还要求做了一些专项测试,像:安装,卸载测试,兼容性测试,稳定性测试,性能测试,弱网测试,交互性测试,都有测试过的,专项测试这块,我主要负责的是:兼容性测试,稳定性测试,性能测试,弱网测试,交互性测试,这是我这边负责的。
像兼容性测试,公司有提供了差不多了7-8款的真机,像:华为,小米,三星, vivo, oppo等这些主流的机型都在真机想有测试过,其他的机型,公司用的是云测,云测平台我们用的Testln这个平台,公司会给我们提供账号。
稳定性测试这块,用的 Monkey命令工具去测的,主要就是通过 monkey模拟用户发送一些伪随机时间,看app是否有Crash, ANR, Exception等现象,一般都是在晚上的时候去执行 monkey命令,然后出报告,分析性能测试,用的GT工具结合 Android Studio工具去检测app在手机上运行的时候的CPU,内存,电量,流量,启动时间,安装,卸载时间以及页面的响应时间。
弱网我们用的 fiddler工具去进行模拟的,模拟2G/3G/4G等弱网场景,看app在弱网情况,功能是否能正常使用。
交互性测试这块主要就是看app与其他应用程序之间的交互运行,以及与系统应用程序之间交互运行,来回进行前后台切换,看是否会出现闪退,数据丢失等现象。
其实功能这块,app测试与Web测试基本是一样,没有什么区别。(需求分析->提炼测试点>编写测试用例->执行用例->提Bug->复测,回归)等等的。
区别主要在于,web端是B/S架构的,App是C/S架构的,由于架构的不同,所以web端一般服务器更新的时候,客户端不需要更新,
因为它是通过浏览器来访问的,服务器更新了,客户端也更新。app服务端要更新,同时客户端软件要进行升级更新,才算是新的版本。
对于app测试来讲,除了功能之外,更多的还要考虑一些专项测试,比如:
Web测试是基于浏览器的所以不必考虑安装卸载。而app是客户端的,则必须测试安装、更新、卸载
兼容性、稳定性、性能测试、弱网测试、交互性测试等等。
还有就是,对于兼容性这块,Web端主要考虑是:不同的浏览器,不同的操作系统的兼容性接口。
而对于app测兼容性更多的考虑:不同的品牌机型,不同操作系统,不同手机屏幕大小,屏幕分辨率
性能方面也会有所不同:Web端性能测试更多关注的后台的性能,
app的性能测试关注的是手机本身的资源的性能问题:
比如:CPU内存,电量,流量,页面加载响应时间,软件启动时间等等
他们两个之间的区别差不多就这些吧。
#电脑端文件传输到手机上
#手机上的文件传输到电脑端
adb其实是一个 android调试桥,主要是用来监控手机设备的,实现手机端与电脑端的通信,通过adb来实现对手机的管控。比如:通过adb安装软件卸载软件,通过adb可以查看手机的资源使用情况,可以查看cpu内存等资源。还通过adb实现手机端与电脑的文件的传输通过adb查看手机端app运行的日志,通过看日志来分析具体问题。
像兼容性这块当时,我们主要用真机测试为主,公司当时使用提供大概7、8款机型吧,
我记得像华为荣耀系列两款,例外小米机型有选择2款,还有就是像 vivo, oppo当时都有测过,
对了还有三星等这些系列机型上都有做过真机测试。
真机这块,像系统版本主要覆盖的系统其中6.0\7.0\8.0为主, 5.0以下公司当时都不要求测,
对于其他的机型覆盖不到位,我们都是通过云测进行覆盖的,云测这边,我们公司用的 testin这个云测平台,公司有提供账号给我们只要登录上去,然后把apk上传上去,之后选择机型要测试的机型,当时我们在云测测试有差不多有60款多款机型吧,主要是市面上流程的主流机型,每个系列都会选个几款,如果用真机测了的就不在选择了,然后做一些相关的配置,云测平台上主要帮我们做了智能遍历,安装,启动,运行,卸载,初始化, Monkey测试相关的测试,不过 monkey一般都是通过真机测的,云测平台没有测过,配置好了之后,提交测试就可以了,一般提交测试之后,需要几个小时就会出报告。然后分报告,主看遍历,安装,启动,运行,卸载,初始化相关哪些机型有出问题,对于出问题的机型,一般会先补测一下,如果还有问题,我们项目组一般会向公司申请真机再真机进行复测,如果真机复测有问题,就通过利用 adb logcat查看错误日志,分析具体的问题所在。
其实我们做兼容性测试主要就是看软件在不同机型,不同系统版本下能不能正常安装,卸载是否能正常启动,运行,初始化,我们都把各个功能都进行运行一遍,主要就是跑下主流程,看有不有问题。例外,就是看软件在不同屏幕大小,不同的分辨率的手机下显示是否正常,有不有拉伸,显示不全,或者显不清晰的等问题。
当时我们兼容性就这么做测。
稳定性这块,我们当时用的是SDK自动的一个 Monkey工具进行测试的,其实 Monkey工具主要通过模拟用户发送伪随机时间去操作软件,通过执行 Monkey命令,它会自动出报告,执行测试大概在10万次,每个动作的间隔时间250ms,主要就是看软件长时间,随机乱操作的情况,是否会出现异常,闪退,崩溃等现象。
一般我都是在下班的时间晚上时间执行 Monkey命令,并把生成的报告导出到电脑端,大概需要6、7小时,第二天早上看报告,分析报告,如果出现问题,一般利用上次执行的那个种子值,再进行执行命令进行复测一下,
这里主要关注几个点,1、指定种子值 2、忽路一些异常,保证能正常执行完成
对于报告怎么分析这块,主要看有不有 CRASH(崩溃),ANR(超时无响应), Exception(异常)等的情况像看有不有空指针异常( NullPointException)啊,0OM等现象啊等等,
找到 CRASH崩溃ANR超时无响应 Exception异常的位置,看出现错误的上一个动作是什么,什么做了什么动作导致错误出现。异常信息会详细的指出哪个 Activity出现了问题,甚至于哪个函数出问题了,具体哪个位置。然后把报告中出现的日志信息截图发给开发,开发修复完成之后,我们会根据种子值在进行复测一下。
稳定性这块我们当时就是这么做的。
我在运行 monkey发现过很多的问题我就简单的说几个问题,举个例子在查看 monkey运行日志中
属于本地监听代码导致的崩溃,手机监听代码导致的崩溃,他是手机产生的原因,不是代码的原因不做处理。
弱网测试这块我用的 fiddler工具做的,通过 fiddler实现延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到模拟2G\3G\4G的移动网络的弱网场景,还有设置随机数来模拟网络不稳定的情况。
操作:首先保证手机与电脑在同一个网络,然后在手机上,设置代理服务器,指定服务器为装了 fiddler的电脑的ip地址,端口为8888然后就是在fiddler上设置上行,下行速率,实现对发送,接受数据的进行网络延迟具体在 fiddler的菜单上有一个Rules -> CustomizeRules,打开 Fiddler的 ScriptEditor文件,在其中找到 m_SimulateMode标志位,然后修改上行,下载的网络延迟时间即可,具体设置参数的值SE那边有给到一个参考文档
生活当中,网络并不是固定不变,一般处于不稳定的状态,我们这个时候编写随机数来模拟网络不稳定的情况
2,在 Customize Rules文件中,限制网络的参数修改成随机数
弱网测试,看我们软件在弱网场景下是否会有丢包的现象,丢包率是否严重,页面是否能正
常展示,是否有空白页,数据是否有丢失,页面加载速度是否会严重影响用户体验。
指标:cpu,内存,电量,流量,FPS,
cpu不能超过10-20% 普通业务要求在10%左右,核心的业务,尤其是一些绘图的业务,
要求在20%左右。指标:SE给到,竞品分析
内存主要看有内存泄露的情况,怎么看?
流量:一刷新使用软件,流量会逐渐增加
1,对于cpu内存,流量这3个指标,我们用的 android studio来检测的,结合sdk里面的一个插件 android Monitor,它可以帮我们试试检测cpu,内存,流量的曲线图
2,这里我们需要开启手机端的开发者模式,还有usb调试模式,例外,开发给我们提供的apk包,必须需要开启 debug模式,开发开启之后打包给测试人员就可以了
3,主要就是对我们需要测的功能进行操作,然后实时查看图表,看他是否有内存oom内存泄漏,cpu是否使用过高,是否有内存抖动,造成的卡顿等现象,是否有图片过大造成流量使用过大这些问题等,是否有频繁使用流量,没有使用缓存等问题
4,像fps帧率是通过adb命令来测的,还有电量我们当时用的是手机自带的一个第三方软件测的?
对于内存其实主要看有没有内存泄漏的问题
1、首先我会频繁操作同一个业务,看他的内存和cpu是否逐步增长,最后稳定在一个固定大小的范围,如果在频繁操作同一个业务,内存一直在增长,可能存在有内存泄漏问题,尝试手动GC(手动回收内存,因为内存泄漏,系统已经回收不了,所以尝试下手动回收内存),内存明显或者断崖式的下降,基本就可以判断有内存泄漏的现象
再通过 damp java这个去分析,分析结果如果出现 leaked,就说明有了,里面可以找到是哪个对象,截图提bug,
2、使用app过程中,内存一直在增长,那基本可以判断有内存泄漏的情况,还有看是否有内存抖动的现象:这里主要原因还是有因为大量小的对象频繁创建,频繁的回收内存,会导数cpu频繁使用,造成cpu使用过大,造成app卡顿,导致内存碎片,内存泄漏等问题
cpu主要就是看有没有过高,有没有超过我们的指标范围
首先频繁使用某一个业务,cpu是否逐步增长,最后稳定在一个固定大小的范围,对于一把基础业务,对cpu要求不高的业务,cpu不能超过10%,对于cpu要求比较高的,比如某个业务需要加载地图,大量的图片,视频等的业务,或者需要做大量的数据统计分析的业务,
我们要求cpu不能超过20%
a,首先看在没有操作功能业务的情况下,没操作流量不应该有,或者是流量使用不是很大,就几KB因为app肯能实时刷新消息,比如如果一个登陆,你就使用1M的流量,查询个图片使用3-4M的流量图片,这个肯定流量使用过大
b,频繁操作同一个业务,流量一直在刷,说明没有使用缓存
如何处理:图片过大处理方法:图片压缩传输,要么降低图片分辨率,
对于Fps帧率的问题,我们当时用的adb命令来测的
知识点拓展: Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过.6ms,这就是16ms的黄金准则,
d. 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
e. 通过execl进行表格处理可以直观的查看软件的流畅度
15.14对于电量具体怎么测?
电量这一块,我们当时用的手机自带的第三方软件测的
交互性这块,主要从以下几个方面去考虑测试的是:
软件是否会有异常,比如:进程被杀死,或者切换到前端页面出现问题,或者页面数据丢失等等。
提示信息中不能出现代码是否有相关的提示信息
基本功能测试:(浏览器、微信内置浏览器)
目前H5与 native各个客户端都做了互通,所以大家在测试的时候要注意两点:
A、若客户端已登录,那么进入H5后仍然是登录状态
B、若客户端未登录,进入H5,点击对应按钮OR链接,如果需要登录,须拉起 native登录。若取消登录,是否可再次拉起登录,或者停留在的页面是否有对应的登录提示.。
ps:本次测试过程中就发现,第一次点击链接,可以拉起登录,第二次却不能
遇到翻页加载的页面,需要注意内容为1页或者多页的情况。
A、数据分页加载时,注意后续页面请求数据的正确。
ps:这个需要注意在快速操作场景中,请求页数是不是依次递增,快速操作(如第1页尚未 loading出来的时候仍然继续上拉操作)时是否发出去对应的请求了。
A、下拉刷新是否仍然处于当前页面。
B、用户主动点击刷新按钮是否仍然处于当前页面
C、点击返回与back键,回退页面是否是期望页面
ps:本次测试过程中就发现,mtop接口请求成功,但是data内无数据时,返回到的就是个空白页面,无法正常发送请求。
H5的适配其实比客户端的相对来说,要少一些,手机品牌之间的差异不大,所以不用太多关注,最容易出现问题的是 android2.3系统,这个要特别关注下:
小屏手机(如320*480,重点关注下弹框样式和文案折行)
A、页面中有图片的话,淘宝那边建议图片一般不大于50kb,本着一个原则,尽量缩小图片
B、资源是否压缩、是否通过CDN加载
C、如何保证二次发布后有效更新。
A、对于一些不会变化的图片,如游戏动画效果相关图片,不需要每次都请求的东西,做本地缓存
B、数据较多时是否做了分页加载。
A、关注页面首屏加载时间
A、弱网络下,数据加载较慢,是否有对应的 loading提示
B、接口获取异常时,提示是否友好
C、刷新页面或者加载新内容时页面是否有抖动
B.回退到后台之后,重新呼出在前端展示
Android和ios测试的共同点都需要进行界面测试、功能测试、兼容性测试、网络测试、交互性测试、易用性专项测试、异常测试、安全专项测试以及权限测试。不同的是 Android测试除了以上的测试之外还要用 monkey进行稳定性专项测试以及用 emmagee或者gt进行性能专项测试。los是用itools工具对功能进行测试:安装、传输文件以及查看日志。
从操作系统,安装卸载,按键操作,开发语言这几个方面去区分操作系统: android操作系统较多,iOS较少只能升级不能降级,并目新的版本的资源库不能完全兼容旧版中系统中的应用,如果低版本应用调用了高版本的资源库,可能会导致系统崩溃。
安装卸载测试,应用发布后:下载安卓包的平台和渠道很多:豌豆英、应用宝、360手机助手等;
本地测试:安卓手机可以通过扫码或者直接安卓APK包安装测试包;iOS要安装测试包必须绑定手机的id(证书)才可以安装ipa测试包
按键操作测试:安卓手机针对每一款手机有不一样的操作;苹果手机操作习惯单一
开发语言:虽然同样的业务安卓和iOS的展示形式和业务一致,但是底层全完不一样,安卓的应用是有java语言实现的,iOS用OC实现。
1,小程序测试(多用第一人称,口语化表达,多讲一些,讲细一些,先宏观,在微观)参考面试问题STAR法则:
我们原来主要测试,几个方面,界面测试,功能测试,交互性测试,兼容性测试,安全测试,
易用性测试,异常测试,权限测试
界面测试:主要是测试跟界面的原型图是否一致,同时我也要考虑不同屏幕大小跟分辨率
功能测试:跟所有的功能测试都是一样的,还有小程序有位置功能,检查下,微信小程序,附近中是否能找到对应小程序,使用小程序是否记录,
交互性测试:要考虑跟微信的功能交互使用,比如说一些,卡包,支付等功,考虑跟手机固有功能交互,比如说来电,短信等
兼容性测试:考虑跟微信不同版本的兼容,还有同时还要考虑不同手机厂商跟手机型号兼容,还要考虑当微信清除缓存后,小程序还能否继续使用
安全测试:测试数据加密,包括sql与xss脚本攻击这块
易用性测试:考虑功能是否方便还用
异常测试:考虑断网,手机重启,关机的情况
权限测试:小程序继承微信权限,测试手机对微信权限,还要考虑微信对小程序授权,是否允许操作
原来我们测试阶段,上传小程序到微信小程序平台,上传到开发版本里面,通过扫描二维码去下载小程序进行测试,
上线后,我们也要测试下,微信搜索小程序中能否搜索的到
小程序有安装包,一般控制在1M以内
1,基于微信大的平台,有流量的入口
2,不需要安装,操作更加方便
原来我们的下载一个微信开发者工具,导入开发给的小程序代码包,在输入开发给予的
appid,调试与测试小程序代码包,
如果真机测试,也可以扫描开发在微信开发者工具生成的二维码进行测试
运用扫描工具 appscan扫描web系统。扫描app的一般用腾讯 wettest等平台测试测试,
前端(web)时我们首先检查检查一下用户的感敏信息有没有进行加密显示,通过Fiddle抓包工具检查一下用户的感敏信息有没有进行加密后传输如:用户密码,相应的银行卡,个人信息等,再到日志中搜索关键信息,搜索到,就泄密,存在安全漏洞,数据库中是否做了加密处理。还有就是把发送请求的数据篡改例如:打开fiddle工具,设置过滤器,设置断点把商城里的支付订单的1000完金额修改成1块钱,再放行发送数据,看是否,支付1块钱,订单支付成功,如果成功则是bug,预期结果是支付金额不对才行,用sql语句注入和xss脚本攻击,把sql语句或xss脚本编缉成csv文档通过 工具添加"CSV数据文件设置"来调用里面的语句来在所有的查询位置、所有的接口请求、url请求链接参数中,进行sql语句注入或xss脚本攻击:模拟sql语句xss脚本攻击数据库,看它是否把sql注入代码或xss脚本当成字符处理,如果不是就是bug,再看功能不能正常使用、系统是否崩溃,错误弹出框,界面是否变形。还有在所有可以保存的地方,都添加xss脚本攻击代码,看看是否出现异常。权限控制(用户的校验)校验用户安全认证信息是否正确,如没有权限的界面不能进入,不能提供操作入口或不能通过url直接去访问:例如;把所有需要权限的界面,全部复制一份出来然后退出用户再通过url链接去访问功能如果可以访问,就是bug,如有提示登录,属于正常。还有登陆用户再退出用户后,点击浏览器的后退不能进入原来的界面。
通过 appscan扫描工具去扫描,我们般是这样操作的;
7、在“详细信息”中,取消“激活会话中的检测”,同时在“登录会话标识中”,对变量参数值进行跟踪以确保参数的正确处理而获得系统访问权限;
8、把密码修改页面URL、用户权限删除URL等页面添加至排除测试范围,防止 Appscan的请求产生相应影响(防止 Appscan修改密码或删除用户帐号);
9、在“自动表单填充中,填入用户名和密码参数,并填写参数值,其余不做修;
10、如果测试过程中,应用服务出现性能响应过慢的问题,适当调整测试线程数为2~5;
11、测试策路选择为严重性”进行过滤只勾选关注的严重性级别,把“高”、“中”和低”选上,
13、点击确定按钮,结束扫描配置工作;
14、点击扫描按钮,选择“仅探索”, Appscan开始执行探索工作;
15、探索自动结束后,点击“手动探索”按钮,此时,在弹出的E浏览器窗口中登录系统,手工的任意访问系统页面(1-10个),关闭浏览器;
16、在弹出的参数添加窗口中,点击确定按钮”
17、点击扫描按钮,选择“完全扫描”, Appscan开始执行测试工作;
18、测试执行结束后,点击报告按钮,选择关注的测试结果信息,勾选“报告内容”里的所有勾选;
19、保存报告,保存类型建议选择为html;然后分析报告。(只需了解面试尽量不要提及)
对一个综合性的大型网站来说,可能存在成干上万的页面。以登录界面为例,至少要输入用户名和密码,即该页面存在两个字段,当提交了用户名和密码等登录信息,网站需要检查是否正确,这就可能存在一个新的检查页面这里的每个页面的每个参数都可能存在安全漏洞,可能成为被攻击对象。 AppScan正是通过按照设定策略和规则,对Web应用进行安全攻击,以此来检查网站是否存在安全漏洞。
在使用 AppScan的时候,通过配置网站的URL网址, Appscan会利用“探索”技术去发现这个网站存在多少个目录,多少个页面,页面中有哪些参数等,即探索出网站的整体结构通过“探索”可确定测试的目标和范围,然后利用 AppScan的扫描规则库,针对发现的每个页面的每个参数,进行安全检查。
简言之, APPScan的工作原理如下:
2) AppScan本身有一个内置的漏洞扫描的规则库,可随版本进行更新,从探索出的url中,修改参数or目录名等方式,构造不同的url对照组向服务器发送请求or攻击。
3) 根据 Http Response返回的内容,和正常请求所返回的响应作对比,是否产生差异性,而这种差异性又是否符合扫描规则库的设定规则,以此来判断是否存在不同类型的安全洞。
4) 若 APPScan可判断存在安全漏洞,则对这些漏洞的威胁风验给出说明,进行严重程度提示,并给出修复的建议和方法,以及漏洞发现的位置提示。
一般在 python中会有红色的波浪线标出来要是运行后,就直接会报变量没定义的错
有序序列:字符串,元组,列表
---都可以通过索引得到每一个元素
---默认索引值总是从零开始
---可以通过切片的方法得到一个范围内的元素的集合
---有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)
python中是区分大小写的
我们可以直接遍历这个字典,用keys()函数取出所有的键
如果说要取出字典中所有的键和对应的值,我们用items0函数
1) 一般就是在定义的这个字符串变量后面用中括号[],然后里面填写需要截取的素引数
os: 提供了不少与操作系统相关联的函数
sys: 通常用于命令行参数
"python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,
在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行 append、+=等这种操作后,
只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,
相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
说明:其中人民币和美元间汇率固定为:
1美元=678人民币。程序可以接受人民币或美元输入,转换为美元或人民币输出。
人民币采RMB表示,美元采USD表示,符号和数值之间没有空格
print("没有选择美元或人民币")
print("你输入错误,请输入数字")
#生成1到100之间的随机整数
#生成0-1之间随机的小数
#生成随机小数, randn(3)代表生成三个
可以使用此装饰器(带或不带参数)来定义 fixture功能。 fixture功能的名称可以在以后,使用引用它会在运行测试之前调用它:test模块或类可以使用 pytest.mark.usefixtures
(fixturename标记。测试功能可以直接使用 fixture名称作为输入参数,在这种情况下,夹具实例从 fixture返回功能将被注入。
不管运行成功与否都运行的代码
1. 子类继承父类所有的方法
2. 父类不能继承子类
3. 子类再去修改父类里面的方法,子类都是新的方法(多态)
定义上:字典是一种数据结构;
json是一种数据的表现形式,一种数据格式。
写法上:字典中的键key,只要是 hashable的数据类型即可;
但是json的键key(属性名称),必须是用双引号引起来的字符串。
我们可以直接遍历这个字典,用keys()函数取出所有的键
如果说要取出字典中所有的键和对应的值,我们用items()函数
原来工作中,没有涉及过,但是了解过
2、动态检查,构造测试数据去检查,语句覆盖---覆盖所有的代码
3、判定覆盖覆盖每个判定条件,每个判定都需要 真假值
4、条件覆盖每个条件 都需要一个真假值
文章到这里就结束了,各位铁汁如果有什么觉得不对的可以发在评论区咱们来讨论哈,
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!
很多人是不是有遇到过这样的尴尬事情,你在微博上面看见一段非常好玩的视频,想保存下来,无奈自己的iPhone却无法保存,只能默默的收藏,可是没有网络的时候又不能看!很尴尬,或者在哪个搞笑的网站上面看见好玩的视频,好听的歌曲,你应该怎么保存呢?就下就犯难了吧!其实很简单的,不用越狱也可以哦!
本篇文章给各位网友带来的资讯是:苹果 iOS 16 正式版发布:全新自定义锁屏、iMessage 编辑撤销、支持 AirPods Pro 2 耳机等(附更新内容) 详情请欣赏下文感谢IT大王网友 会唱歌的小警铃、RTCs、yu22hao、丛贰木、DKind、非影Q、SmartPhone、长得像吴彦祖、龙颜大悦、微了个软、清欢岁、蓝色大眼猫、花灵龙、深空灰plus、Libt、霸气独尊、全科小子、邋遢的球球、小筷子、木谚均、软媒用户1117255、墨写红尘、狐人与裂蹄牛、在地平线上、pff 的线索投递!
《苹果官方解读 iOS 16 正式版:带来锁屏迄今最大更新》