单纯从功能测试层面上来讲的话,APP测试、web测试在流程和功能测试上是没有区别的
根据两者载体不一样,则区别如下:
web项目:b/s架构,基于浏览器的;web测试只要更新来服务器端,客户端就会同步更新
app项目:c/s架构,必须要有客户端;app修改来服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
web项目 需监测 响应时间,CPU、Memory
app项目 除了监测 响应时间,CPU、Memory外,还需监测浏览,电量等。
web项目
1.浏览器(火狐、谷歌、IE等)
2.操作系统(Windows7、Windows10、Linux等)
app项目:
1.设备系统:iOS(iPad、iPhone)、Android(三星、华为、联想等)、Windows(Win7、Win8)、OS X(Mac)
2.手机设备可根据 手机型号、分辨率不同
1.干扰测试:中断,来电,短信,关机,重启等
2.弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连,3g切换到4g/wifi等)
安装:需要考虑安装时的中断、弱网、安装后删除安装文件等情况
卸载:需考虑卸载后是否删除app相关的文件
更新:分强制更新,非强制更新,增包更新,断点续传,弱网状态下更新
自动化工具:APP一般使用Appium;Web一般使用Selenium
性能测试工具:APP一般使用Jmeter;Web一般使用LR Jmeter
关于手机端测试,需要注意手势,横竖屏切换,多点触控,前后台切换
安装包是否可以编译代码,安装包是否签名,权限设置,例如访问通讯录等
可用存储空间少,没有SD卡/双SD卡,飞行模式,系统时间有误,第三方依赖(QQ,微信登录)等
设置某个app是否可以获取权限,例如是否可访问通讯录,相册照相机等
以等价类划分和边界值法来分析
精确查询:
模糊查询:
在精确查询的基础上加上以下一点:
8. 输入一些字符,看是否查出数据库中所有相关信息
随着手机应用不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与pc端针对这些产品的测试有什么相同之处与不同之处呢?
总结如下:
一、针对同一个系统功能的测试,三端所测试的业务六月初是一样的
二、一般情况下手机端和PC端都对应一套后台服务,比如说某公司所开发的互联网金融平台,整个平台做了分布式服务架构,后台服务包括用户服务,交易服务,产品服务,PC和手机端测试以上三个流程时,调用的都是同一个后台服务。
(注:也有一些功能,比如PC与手机端展示不一致,或者有什么特殊处理,这样情况下后台会写两套不同的接口来处理对应的业务需求)
一、 测试平台(容器)不同:
pc项目都是在电脑上进行测试的:常见的PC项目架构有BS架构和CS架构(server),后台返回的到相应内容显示在浏览器上,常见BS架构的项目比如QQ,微信等,需要在电脑下载客户端(client),客户端与后台服务器(server)进行数据传输交互,基于以上信息,PC端测试都是在电脑上,要么是在浏览器上测试要么安装对应客户端,平台都是电脑
app测试平台分为安卓和iOS端:安卓测试需要在安卓手机上安装开发提供的apk测试包,iOS测试需要将手机UUID提供给开发安装ipa测试包进行测试
H5测试就是测试HMTL5页面:在PC或者手机浏览器都可以直接访问H5页面
二、兼容性测试不同
基于以上测试平台的不同,三端的兼容性也不一样
PC的兼容性主要包括各个浏览器和不同操作系统,目前笔者所经历的公司主要测试了不同主流版本浏览器的兼容性,还未涉及操作系统层面
APP的兼容性包含安卓和iOS不同机型,不同版本,不同屏幕都要适配
H5的兼容性主要测试手机端的不同浏览器的兼容性
三、系统架构不一样
PC和H5端项目尤其是WEB项目对应一个后台服务,所有客户访问的都是同一个后台。上线测试时,直接访问线上地址测试即可
APP测试虽然对应一个后台,但是不同的用户可一下载了不同版本的客户端,上线测试时,需要兼容每个版本的测试。
四、发布流程不同:
PC端每次更新发布,需要将测试通过的包退换线上包,重启服务后立即生效,访问的就是最新的环境
H5由于是一些html5网站发布上线后无需重启即可访问
APP端需要向应用市场发布,安卓发布的市场有很多,应用宝,豌豆荚,应用商店等每个应用都需要单独审核;iOS端应用比较单一就是app store。从提交,审核发到发布会有几天的时间间隔,开发的应用包不会立即发布。
五、专项测试
除以上不同外,app端还有一些专项测试
性能方面:响应时间,流量测试和耗电量测试
安装测试(PC端web项目不用测试,CS架构的也需要考虑)
交叉测试:就是在操作某个软件的时候,来电话,来短信,电量不足提示等外部事件
操作类型:手势测试,横竖屏
网络测试:包含弱网和网络切换测试,重点要考虑回退和刷新是否会造成二次提交,弱网络的模拟,据说可以用360Wi-Fi实现设置。
升级测试:升级测试的提醒机制,升级取消是否影响原有功能的使用,升级后用户数据是否被清除了
六、启动
app端:需要制定desired_caps内容,因为里面包含了设备信息等
web端:通过启动webdriver不同的浏览器类,获取driver,如webdriver.Chrome(),也可以模拟手机端加载wap页面做wap页面测试
七、关于元素的属性
app端:查找到元素以后,查看元素对象,发现里边基本上只有元素的text属性,也没有相关方法修改,这个区别还是很大的,不过appium有set_value的方法,目前还没有尝试,用的还是send_keys().
web端:web端简直就是人间天堂,比起修改,读取元素属性,比如我要获取input标签的name,我可以用get_attribute方法,也可以自行写js代码改变这些属性。
八、使用JS
app端:似乎是支持了,但是执行任何命令server端都会提示404的错误。
web端:支持非常好,因为本身Js就是负责网页交互的,所以会很方便
九、关于滑动
app端:关于滑动是会用很多的,比如页面很长,或者打开通知栏,这种需要在屏幕上滑动的,用到的还比较多。
web端:用到的比较少,之前基本上没有用到过。
十、异常
app端:需要注意的是其他apk给你带来的影响,目前没有找到很好的方式去处理这些问题,因为其他apk给你做了弹窗,比如qq异地登陆,或者短信这种推送,会影响到目前的流程。办法肯定是解决的,我个人理解,可以在出错之后对比一下是否在当前apk,如果不再的话则进入当前apk再做一次相关操作。
web端:很少影响,可以边跑用例边聊QQ,当然我只是举个例子,总之个人体会就是影响比较小,因为浏览器的driver完全只是控制浏览器,别的地方和它无关。
制定测试策略
首先测试策略,当用户提出新的需求时,测试人员应该和开发人员一起做测试需求分析,一般我们都会通过会议的形式去进行讨论分析,这样测试人员会对测试需要有个大概的了解,需要是干什么的,包括哪些功能等等,而不至于什么都不清楚不了解。
制定测试计划
大概了解需求内容之后,要对整个测试进行预期评估,包括计划要测试哪些方面的功能,要计划分配哪些人员参与到测试中,哪些人负责哪个模块,以及按照交叉测试的方法,同时还要计划要测试的开始和结束时间,便于掌握这个测试进展等等。
编写测试用例
测试计划规范之后,则是进行测试用例的编写,测试用例的编写,主要围绕界面模块而展开,如界面包括哪些按钮,按钮操作是否可以正常进行,其次围绕功能来设计,然后根据不同的场景来设计,对于测试过程中,出现的缺陷问题,要在将缺陷问题记录到测试用例“测试结果”一列,便于查找测试项测试任务情况。
形成测试报告
测试用例执行之后,对于测试过程中发现的缺陷问题,要汇报自己的测试情况并且测试中的缺陷反馈到测试工具中,便于开发人员解决,对于安排的不同模块的负责人在测试自己对应模块任务时,也要及时汇报自己的测试工作进度,便于测试小组掌握测试的整个进度。
测试总结及文档编写
按照测试用例执行完所有的测试任务,且开发人员修复完来所有的bug问题(不包含一些难以修复但不紧急的问题)测试人员需要编写针对本次项目的测试总结,要在总结中说明,测试计划是否按照如期执行,总测试缺陷数据多少,测试覆盖了多少等等。
同时文档人员要针对本次项目开发新增加的功能进行项目“升级日志”和“帮助手册”任务的编写,便于用户了解并能够快速上手使用新增的功能。
下面从页面,页面元素,功能,提示信息,容错性,权限,键盘操作部分讲述常见的测试点。
参考答案:
性能测试:性能测试是和功能测试相对应的,根据用户场景进行的单个用户操作,是属于功能测试领域,主要是验证软件是否可以满足用户的功能需求,比如,单个用户使用系统,系统各项功能是否满足用户的需求。
如果把这一个用户的操作放大,变为100个,1000个,10000个用户同时操作软件,验证软件系统是否满足用户需求,那么这个就是软件性能测试。通常使用性能测试工具对软件开展并发的访问,同时监控系统各项指标,比如CPU,内存,网络,磁盘等关键部件的使用情况,性能测试是负载测试,压力测试,并发测试的统称。
负载测试: 通过逐步加压的方式类确定系统的处理能力,确定系统能承受的各项阀值。
压力测试: 逐步增加负载,使系统某些资源达到饱和、极限甚至失效的测试,目的是用来发现系统的软件业务处理能力,系统硬件的极限处理能力等。
网站作为一款web端软件,是测试小伙伴们测试产品的重要组成部分,拿到一个网站,不知道怎么测试?那么按照下面10大安全问题依次寻找。
性能测试这种测试方式在发生的过程中,其中一个过渡性的工作,就是对执行过程中的问题,进行定位,对功能的定位,对负载的定位,最重要的,当然是问题中说的“瓶颈”,接触性能测试不深,更非专家,自己的理解,瓶颈产生在以下几方面:
怀疑内存不足时:
方法一:
【监控指标】:Memory Available Mbytes, Memory的Pages/sec, page read/sec, Page Fault/sec
【参考值】:如果 Page Reads/Sec比率持续保持为5 ,表示可能内存不足。
Page/Sec推荐00-20(如果服务器没有足够的内存处理器工作负荷,此数值将一直很高,如果大于80,表示有问题)
方法二:
根据Physical Disk 值分析性能瓶颈
【监控指标】:Memory Available MBytes ,Pages read/sec,%Disk Time 和 Avg.Disk Queue Length
【参考值】:%Disk Time建议阈值90%
当内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。
怀疑内存泄漏时
【监控指标】:Memory Available MBytes ,Process\Private Bytes和Process\Working Set,PhysicalDisk/%Disk Time
【说明】:
Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏,内存泄漏应该通过一个长时间的,用来研究分析当所有内存耗尽时,应用程序反应情况的测试来检验。
它跟安卓APP与iOS App有什么样的区别呢?
&我们以往的app是使用原生态系统内核的,相当于直接在系统上操作,是我们传统意义上的软件,更加稳定
& H5的app先得调用系统的浏览器内核,相当于是在网页中进行操作,较原生app稳定性稍差,似乎还没有百万级用户量的H5app
&H5最大的优点是可以跨平台,开发容易,app的话需要用android的语言和iOS的语言各自写,H5只要开发一套
&简单来说:H5是基于web,native基于客户端