一、web测试和APP测试的区别?
-
架构差异
-
Web测试:基于B/S(Browser/Server,浏览器/服务器)架构,测试主要关注浏览器端和服务器端之间的交互。Web应用通过浏览器访问,因此测试时无需考虑客户端的一致性,只要服务器更新,客户端就会同步更新。
-
APP测试:基于C/S(Client/Server,客户端/服务器)架构,测试需要关注客户端与服务器之间的交互,同时还需要考虑客户端(如手机、平板等)的一致性。由于APP需要用户主动更新,因此存在多个版本并存的情况,测试时需要确保新功能在不影响老版本用户的前提下进行。
-
性能测试
-
Web测试:主要关注响应时间、CPU使用率、内存占用以及系统能支持的最大用户同时在线数等指标。此外,还需要考虑网页打印功能、链接的可用性和正确性等方面的测试。
-
APP测试:除了响应时间、CPU使用率、内存占用等指标外,还需要特别关注流量消耗、电量消耗以及GPU使用情况等指标。此外,由于APP存在多个网络场景(如Wi-Fi、5G、4G、3G、2G等),因此还需要进行弱网络测试、网络切换测试等。
-
兼容性测试
-
Web测试:主要关注不同浏览器(如IE、Chrome、Firefox等)和不同操作系统(如Windows、Linux、Mac等)之间的兼容性。此外,还需要考虑不同分辨率下的显示效果。
-
APP测试:主要关注不同手机品牌、型号、操作系统版本以及屏幕分辨率之间的兼容性。由于APP需要在多种设备上运行,因此测试时需要覆盖尽可能多的设备和场景。
-
界面操作测试
-
Web测试:主要关注布局是否合理、整体风格是否一致、各个控件的放置位置是否符合用户使用习惯等方面。此外,还需要测试网页的导航是否简单易懂、页面元素的可用性是否良好等。
-
APP测试:由于APP通常使用触摸屏进行操作,因此需要特别关注手势操作(如点击、滑动、缩放等)、横竖屏切换、多点触控等方面的测试。此外,还需要测试前后台切换时应用的状态是否保持一致等。
-
安全测试
-
Web测试:主要关注SQL注入、CSRF攻击、XSS攻击等安全漏洞的测试。这些漏洞可能导致数据泄露或系统被非法访问。
-
APP测试:主要关注安装包是否可反编译、是否签名、是否加固以及数据传输和存储过程中的安全性等方面。此外,还需要测试APP在用户未授权的情况下是否访问了用户的敏感信息等。
-
测试工具
-
Web测试:常用的自动化测试工具包括QTP、Selenium等;性能测试工具包括Jmeter、LoadRunner等。
-
APP测试:常用的自动化测试工具包括MonkeyRunner、Appium等;性能测试工具包括Monkey、Jmeter(也可用于APP测试)等。
二
APP端兼容性测试方法
一、确定测试目标
-
操作系统:确定APP需要兼容的操作系统及其版本,如iOS的不同版本、Android的不同版本以及各厂商在安卓系统上定制的各种版本。
-
设备:覆盖市面上主流的手机厂家和产品,可以在统计类的大数据平台获取最新的市场占有率排行,根据厂家型号组合挑选测试设备。
-
分辨率:测试APP在不同屏幕分辨率和尺寸下的显示效果,确保UI显示正常、排版无误。
-
网络环境:测试APP在不同网络制式(如Wi-Fi、5G、4G、3G等)和不同网络运营商提供的网络下的运行情况。
二、测试内容
-
功能兼容性:
-
测试APP在安装、使用、卸载过程中是否影响终端上其他软件的正常运行。
-
测试APP运行时是否影响终端的基本功能,如拨打接听电话、收发信息、浏览网站等。
-
测试APP的核心功能在不同设备和平台上的完整性和一致性。
-
-
硬件兼容性:
-
使用真机或云真机服务测试APP在不同硬件设备和配置上的运行情况。
-
测试APP与外部设备(如蓝牙耳机、打印机等)的兼容性。
-
-
操作系统兼容性:
-
测试APP在不同操作系统版本上的安装、启动和运行情况。
-
对核心功能进行回归测试,确保在不同操作系统版本上功能一致。
-
-
分辨率兼容性:
-
测试APP在不同分辨率和尺寸的设备上的显示效果。
-
确保APP在不同分辨率下的UI布局和元素显示正常。
-
-
网络兼容性:
-
使用真机测试APP在不同网络制式下的运行情况。
-
对包含网络请求的核心功能进行重点测试。
-
三、选择合适的测试工具
-
自动化测试工具:如Appium、Calabash、Robot Framework、Selendroid等,支持iOS和Android平台的自动化测试。
-
云测试平台:如BrowserStack/App Live、Total Control等,提供在真实设备和浏览器上测试Web和移动应用程序的云服务。
-
模拟器:虽然模拟器可以提供一定程度上的兼容性测试,但由于性能、硬件特性等方面的差异,不能完全代替真机测试。
三
push消息如何测试?
一、测试准备
-
了解推送通知类型:
-
文本通知
-
声音通知
-
图像通知
-
其他多媒体通知
-
-
准备测试环境:
-
测试设备:iOS或Android手机等
-
测试账号
-
安装测试版本的应用程序,以便使用开发者工具模拟推送通知
-
-
使用开发者工具或第三方工具:
-
Xcode(iOS)、Android Studio(Android)等开发者工具可以模拟推送通知
-
第三方工具如Postman、Pusher、Firebase Cloud Messaging (FCM)等也可以用于发送测试通知
-
二、测试内容
-
基本功能测试:
-
检查Push消息是否按照指定的业务规则发送
-
检查不接收推送消息时,用户是否不再接收到Push消息
-
当Push消息是针对登录用户时,检查收到的Push消息与用户身份是否相符
-
-
时间相关测试:
-
检查在免打扰时间段内,用户是否接收不到Push消息
-
检查在非免打扰时间段内,用户是否能正常接收到Push消息
-
-
状态相关测试:
-
测试在开关机、待机状态下执行推送,消息及其推送跳转的正确性
-
检查应用在不同状态(开发、未打开、启动且在后台运行)下Push显示和跳转的正确性
-
-
显示和跳转测试:
-
检查Push消息是否有红点展示,推送消息阅读前后数字的变化是否正确
-
验证Push消息点击后是否导航到正确的页面或执行正确的操作
-
-
合集测试:
-
检查多条推送的合集的显示和跳转是否正确
-
-
参数测试:
-
如果Push消息包含自定义参数,确保这些参数正确传递并在应用程序内正确处理
-
-
性能稳定性测试:
-
在推送消息的大规模使用情况下,测试应用程序的性能和稳定性,以确保它能够处理大量推送通知
-
四
测试过程中遇到 app 出现 crash 或者 ANR,你会怎么处理?
一、收集日志信息
如果App已经集成了第三方统计SDK(如友盟统计等),可以登录相应的后台系统查看报错的日志信息。
-
查看本地日志:
-
如果App在debug版本中已经配置了错误日志保存功能,可以直接从设备的SD卡或指定目录中获取错误日志文件。
-
使用开发者工具(如Xcode、Android Studio)连接设备,通过logcat或相应的日志查看工具实时抓取日志信息。
-
-
使用第三方SDK统计工具:
二、分析日志信息
区分问题是由于代码逻辑错误、资源泄露、内存不足、第三方库冲突还是系统环境问题导致的。
-
定位问题:
-
根据日志信息中的异常堆栈、错误代码、错误描述等信息,定位导致Crash或ANR的具体原因。
-
对于ANR问题,还需要关注主线程是否被阻塞、是否存在死锁等情况。
-
-
判断问题类型:
三、复现与验证
-
尝试复现问题:
-
根据日志信息中提供的线索,尝试在测试环境中复现问题。
-
如果无法直接复现,可以分析用户的使用场景和操作步骤,尝试模拟用户行为。
-
-
验证问题:
-
在复现问题后,验证问题的表现是否与日志信息中描述的一致。
-
确认问题是否在不同设备和操作系统版本上都存在。
-
四、修复与测试
修复后,询问开发产生问题的原因及后续规避措施。
-
修复问题:
-
回归测试:
-
在修复问题后,进行回归测试以确保问题已经被解决。
-
验证修复后的App在不同设备和操作系统版本上的稳定性和兼容性。
-
五
APP 性能测试关注点及常见 APP 性能测试工具?
一、APP性能测试关注点
用户操作的响应时间直接影响用户体验。
CPU占用率过高会导致设备发热、耗电增加,甚至引发ANR(应用无响应)等问题。需要关注应用在不同状态下的CPU占用情况,如空闲状态、中等规格运行状态以及满规格长时间运行状态。
内存使用不当会导致应用卡顿、闪退等问题。需要测试应用在运行过程中的内存占用情况,确保应用能够及时释放内存,避免内存泄漏。
帧率是指画面每秒传输帧数,直接影响动画或视频的流畅度。对于移动应用来说,保持60帧/s的刷新率是流畅运行的基本要求。
GPU渲染是指在一个像素点上绘制多次。过度绘制会影响动画性能,需要关注并优化GPU的渲染效率。
电量消耗是衡量应用性能的重要指标之一。需要测试应用在运行过程中的电量消耗情况,确保应用不会过度消耗电量。
在不同的网络类型(如2G、3G、4G、5G、WiFi)下,应用需要加快请求的响应速度并控制流量使用。需要测试应用在不同网络环境下的网络请求速度、流量消耗以及网络连接的稳定性。
测试应用在不同设备和操作系统版本上的稳定性和兼容性,确保应用能够在各种环境下稳定运行。
-
响应时间:
-
CPU占用率:
-
内存使用:
-
帧率(FPS):
-
GPU渲染:
-
电量消耗:
-
网络性能:
-
稳定性与兼容性:
二、常见APP性能测试工具
苹果官方提供的性能分析工具,功能强大,可以对CPU、内存、网络、图形渲染等方面进行深入分析。
Android Studio内置的性能分析工具,可以对CPU、内存、网络、GPU等方面进行分析。
一款商业化的性能测试工具,支持iOS和Android平台,提供直观的性能数据可视化。能够实时监测APP的CPU使用率、内存占用、帧率、电量消耗等关键指标,并生成详细的测试报告。
一款商业化的自动化测试工具,支持多种平台和编程语言,包括Web应用程序、桌面应用程序和移动应用程序等。提供丰富的自动化测试功能和强大的数据分析功能。
功能强大的性能测试工具,可以模拟大量用户并发访问,适用于大规模的性能测试。
Apache开源的性能测试工具,可以用于测试静态和动态资源的性能。
Google提供的移动应用性能监控平台,可以跟踪应用的启动时间、网络请求、帧速率等指标。
-
Xcode Instruments:
-
Android Profiler:
-
PerfDog:
-
Shark:
主要用于分析CPU性能,可以生成详细的性能报告。
-
TestComplete:
-
LoadRunner:
-
JMeter:
-
Firebase Performance Monitoring:
六
如何对 app 进行弱网测试
一、测试内容
确保APP在正常网络环境下(如WiFi、4G、5G等)功能正常,页面元素和数据显示无误。
-
正常网络环境下测试:
-
无网络环境下测试:
-
关闭网络连接,测试APP在无网络环境下的表现。
-
关注APP各个功能在无网络情况下是否可用,页面切换是否正常,是否会导致闪退、卡死等异常情况。
-
检查APP在无网络情况下是否丢失数据,以及无网络提示信息是否友好。
-
-
弱网环境下测试:
-
使用网络模拟工具设置不同的弱网条件(如高延迟、高丢包率等)。
-
测试APP在弱网环境下是否针对请求做了超时处理,以及在网络延迟的情况下进行数据同步、OTA升级等操作是否会发生Crash、ANR等严重错误。
-
检查APP在弱网情况下请求回调未完成时执行其他动作及交互是否会出现闪退等异常。
-
验证弱网环境下原始数据是否丢失,以及是否会出现请求堆积的情况。
-
关注弱网环境下APP各个页面是否显示完整,系统超时提示信息是否清晰明确。
-
-
网络状态切换测试:
-
测试在不同网络状态之间切换时(如WiFi切换到4G、4G切换到无网络等)APP的表现。
-
关注页面显示与交互是否异常,以及同步数据过程中断开网络连接时APP是否出现崩溃等异常情况。
-
二、测试工具与方法
-
网络模拟工具:使用Charles、Fiddler等工具模拟弱网环境,设置不同的网络速度、延迟和丢包率。
-
日志抓取工具:使用Logcat(Android)或Xcode Console(iOS)等工具抓取APP在弱网环境下的日志信息,以便进行问题分析和定位。
-
性能监控工具:使用PerfDog、Firebase Performance Monitoring等工具监控APP在弱网环境下的性能表现,如帧率、CPU占用率、内存使用等。
七
阐述app测试点总结
一、功能测试
-
基本功能测试:验证APP的核心功能是否正常运行,如注册、登录、浏览、搜索、购买等。
-
边界功能测试:测试APP在极端或边界条件下的功能表现,如输入最大或最小字符长度的用户名和密码,检查APP是否能正确处理。
-
异常功能测试:模拟用户操作中的异常情况,如网络中断、电量不足等,检查APP的容错能力和异常提示信息。
二、兼容性测试
-
设备兼容性:测试APP在不同品牌、型号的手机、平板等设备上的表现,确保功能正常、界面适配。
-
操作系统兼容性:测试APP在不同版本的Android、iOS等操作系统上的表现,确保兼容性良好。
-
分辨率兼容性:测试APP在不同分辨率的屏幕上是否显示正常,确保界面布局合理、元素清晰。
三、性能测试
-
响应时间测试:测试APP在各种操作下的响应时间,确保用户能够流畅使用。
-
加载速度测试:测试APP在启动、页面切换、数据加载等场景下的速度,确保用户等待时间合理。
-
压力测试:模拟大量用户同时使用APP的场景,测试APP的负载能力和稳定性
四、用户体验测试
-
界面美观性:检查APP的界面设计是否美观、简洁,是否符合用户审美。
-
交互逻辑:测试APP的交互逻辑是否合理、直观,用户能否轻松上手。
-
易用性:评估APP的易用性,如操作流程是否简便、提示信息是否清晰等。
五、安全测试
-
数据安全:测试APP的数据存储、传输过程中是否安全,是否存在泄露风险。
-
通信安全:测试APP与服务器之间的通信是否加密,防止数据被窃取或篡改。
-
权限管理:检查APP的权限管理是否合理,是否存在滥用权限的情况。
六、安装与卸载测试
-
安装测试:测试APP在不同操作系统、设备上的安装过程,确保安装顺利、无错误。
-
卸载测试:测试APP的卸载过程,确保卸载后无残留数据、无异常提示。
七、网络测试
-
网络稳定性:测试APP在网络不稳定情况下的表现,如网络中断、延迟等。
-
网络兼容性:测试APP在不同网络环境下的兼容性,确保功能正常、数据传输无误。
八、其他测试
-
推送测试:测试APP的推送功能是否正常,如消息推送、通知提醒等。
-
升级测试:测试APP的升级过程是否顺畅,升级后功能是否正常。
-
交叉测试:测试APP在与其他应用同时运行时的表现,如电话、短信等应用的干扰情况。
八
阐述APP 冷启动、暖启动、热启动、首屏启动?
一、冷启动
-
定义:当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就叫做冷启动。
-
场景:
-
程序安装后的第一次启动。
-
应用程序被系统完全终止后再打开,如用户主动杀进程或系统因内存不足杀进程。
-
-
特点:由于需要创建新的进程并初始化应用,冷启动的启动时间最长,资源消耗最多。
二、暖启动
-
定义:介于冷启动和热启动之间的一种启动方式,包含了冷启动和热启动的部分操作。
-
场景:当应用已经启动过,但由于某些原因(如用户主动退出应用但进程仍在内存中)需要重新启动时,可能会发生暖启动。
-
特点:与冷启动相比,暖启动不需要重新创建和初始化Application类,因此启动时间较短,资源消耗较少。但与热启动相比,暖启动仍然需要执行一些额外的操作,如重新创建活动等。
三、热启动
-
定义:当应用已经被打开,但是被按下返回键、Home键等按键时回到桌面或其他程序,再重新打开该应用时,这种启动方式叫做热启动。此时程序仍然驻留在内存中,只是被系统从后台带到前台。
-
场景:
-
用户使用返回键退出应用后,马上又重新启动。
-
用户切换到其他应用后,再返回到该应用。
-
-
特点:由于热启动不需要重新创建进程和初始化应用,因此启动时间最短,资源消耗最少。但需要注意的是,如果应用的某些内存被系统清除,则需要重新创建这些对象以响应启动事件。
四、首屏启动
-
定义:首屏启动是指应用程序在启动后显示其主屏幕或用户首次看到的屏幕(即首屏)所需的时间
-
场景:
-
-
新用户首次使用:当用户首次下载并安装应用程序时,他们会看到应用程序的首屏启动。这是用户了解应用程序、形成第一印象的重要时刻。
-
老用户重新打开:对于已经使用过应用程序的用户来说,他们可能会在某个时间点重新打开应用程序。此时,首屏启动同样重要,因为它决定了用户能否快速进入应用程序并继续之前的操作或探索新的功能。
-
应用程序更新后:当应用程序进行更新或升级后,用户再次打开应用程序时也会看到首屏启动。这是应用程序向用户展示新版本特性或变化的机会。
-
-
特点:首屏启动是应用程序与用户进行交互的起点。如果首屏启动时间过长,用户可能会感到不耐烦或失去兴趣,从而导致用户流失或卸载应用程序。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。