App测试面试题_软件测试算法面试题汇总

2022-09-27 16:00:11 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

https://blog.csdn.net/weixin_45912307/article/details/109501092 1. 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外,还需监测流量、电量等
  • 相对于 Wed 项目,APP有专项测试
    • 干扰测试:中断,来电,短信,关机,重启等
    • 弱网络测试(模拟2g、3g、4g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g/wifi 等)
    • 安装、更新、卸载 安装: 需考虑安装时的中断、弱网、安装后删除安装文件等情况 卸载: 需考虑 卸载后是否删除 App 相关的文件 更新: 分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新
    • 界面操作: 关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换
    • 安全测试: 安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等
    • 边界测试: 可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等
    • 权限测试: 设置某个 App 是否可以获取该权限,例如是否可访问通讯录、相册、照相机等

2. WEB测试和APP测试的区别。

  • 他们在功能上测试是一样的。因为功能是基础,功能没过关其他的扯淡。 – web是B/S架构,app是C/S架构,
    • 所以web端的前端和后代代码都在服务器上,web端是不需要升级的,就是展示它请求返回来的数据。
    • 而app的前端代码是在手机上,需要安装,更新,后台代码是在服务器上。
  • app测试相比web测试更加注重专项测试。比如app的安装,卸载,升级或者更新,还有兼容性测试,性能,交互性,稳定性,弱网测试。
  • 兼容性方面:
    • web端主要测试五大浏览器的兼容性和操作系统的兼容性;
    • 而app的安卓测试得测试不同的机型测试,华为,小米,vivo等,还有不同的版本,比如华为的就有7.0,8.0,9.0等版本。也要考虑屏幕的大小,分辨率等;

3. adb命令用到哪些? Adb命令是监控手机资源在Android里使用 命令如下:

代码语言:javascript复制
查看设备号     								|							adb devices
安装            								|							adb -s  设备号 install 包名
卸载软件        								|							adb -s 设备名 uninstall 软件包名(以com开始的例如:com.qqmusic)
查看安装的软件包名  							|	 						adb shell pm list package 查看所有的手机软件包名
查看第三方的手机软件包名  						|							adb shell pm list -3 
查看手机当前使用的内存情况,各个线程的内存占用情况  |							adb shell dumpsys meminfo
查看手机的电池信息    							|							adb shell dumpsys batteryinfo
查看系统资源状态       						|							adb shell top

手机日志        															
产看手机日志									|							adb logcat 
清除手机日志 									|							adb logcat -c 
显示时间										|							adb logcat -v time 
将日志导入一个文件中 							|							adb logcat > mobile.log
将手机的图片导入到PC端    					  	|    						adb pull 手机文件的路径  电脑路径
例如:Adb pull /storage/emulated/legacy/Pictures/Screenshots/Screenshot_2019-02-21-17-48-55.png F:

adb 命令录屏									|							 adb shell screenrecord  --time-limit 10 /sdcard/demo.mp4  (10表示录制10秒,默认是180s)
获取当前页面元素(activity名) 					| 							 adb shell dumpsys activity top
获取任务列表									|							 adb shell dumpsys activity activities
查看app入口(activity)						|							 1)adb logcat |findstr -i displayed ;2)adb shell dumpsys window w | findsrt mCurrent ; 3)aapt dump badging 安装包名.apk | findstr launchable-activity
启动应用										|							 adb shell am start -W -n com.hundsun.winner.pazq/.ui.home.activity.MainContainerActivity -S

设置时间的比率  								|							--pct-touch(percent touch)
adb shell monkey -p app 安装包名 --throttle 25  --pct-touch 50 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v -s 种子数 执行事件次数 >保存在pc的路径日志名.log(一般不设置,都选择默认的事件处理事项)

4. 你用过哪些adb命令

  • 测试前如果没有搭建环境要我们自己搭建的话,会用 adb install 安装包,卸载的话用adb uninstall 包名。这个包名可以通过adb -s 设备ID uninstall com.taobao.taobao(包名)去查询到。平常用到最多的是adb devices,查到当前连接的设备,以防掉线了执行命令会报错。找到bug时,我会去分析查找bug的原因,要去查日志的话会用到adb logcat -d,或者用adb logcat <tag>:I *:S,通过信息错误等级去查找。查找到的结果为了方便查看我会导出到windows里查看会用adb logcat -d > 路径文件名

5. App是怎么测试?

  • 一般从界面,功能,兼容性,稳定性,交互性,安全性,易用性,性能,网络,异常情况,权限,等方面进行测试。
    • 界面测试: 主要测试界面展示是否与UI设计的原图一致,测试手机屏幕大小及分辨率对界面的影响
    • 功能测试: 除安装,卸载,更新 和web端差不多,都需要考虑人员与权限,场景与步骤,异常场景,用户补充场景,关联模块,但是app测试功能,在相关功能模块需要添加一项,就是web界面的变化,如你在手机上投资了一笔钱,你需要在web端查看投资情况是否一致。
    • 兼容性测试:就是用不同的厂商,型号,安卓系统版本进行测试,
      • 【华为 mate10 Android 8.0
      • 三星note5 Android6.0.1
      • 三星s6 Android6.0.1 红米1s Android5.1
      • 小米5 Android7.0 乐视2 Android6.0ios
      • 机型,iphone 5 ios 8.4.1 iphone 6splus ios 10.3.2,iphone x ios 11.0
    • 稳定性测试:一般我们是功能测试完成情况下,再进行稳定性测试,一般主要是检查软件长时间运行,会不会出现崩溃,crash,anr 超时不响应,exception异常, 原来我们测试稳定性是用的monkey工具,其实就是一条命令,一般我们再下班的时候运行,一般事件数100W次,大概10个小时左右,一般间隔是25毫秒,第二天早上看结果, 出现了bug,我们会提交bug,等开发修复完成,以后,我们会根据 上次运行种子数 -s ,进行回归测试。
    • 交互性测试: 跟手机固有的功能模块,进行交互使用,像音量的调节,锁屏,旋转,返回键,主菜单键,截图,闹钟,待机,插拔数据线,耳机,wifi、蓝牙,电话,短信,低电量,看功能是否正常使用,界面是否为原来界面,输入数据是否保存,还有跟其他app进行交互性测试,一般 跟应用排行榜前100 是否可以同时使用
    • 安生性测试:主要考虑的是sql语句的注入,xss脚本的攻击,数据加密还有就是权限测试;
      • sql语句的注入和xss脚本的攻击的检查因为手动操作比较麻烦与繁琐,app我们一般是通过腾讯优测来进行测试的,web界面我们一般是通过appscan进行扫描测试的,把扫描结果发给开发进行修复的数据加密主要是考虑在前端输入的时候进行加密,传输过程中进行加密,数据库进行加密,在服务日志文件中也是需要加密的
    • 易用性:主要是把控用户的体验问题,驾驭需求以外,用户使用是否方便,好用
    • 性能测试:我们通常使用Emmagee去测试APP的性能,去监测cpu、内存、fps等性能指标
    • 网络测试 :分 2,3,4G,移动,联通,电信,wifi 网络之间组合 网络之间的切换,还弱网,用fiddler 工具进行模拟
    • 权限: 1,前台不能访问后台 2,不能通过url连接支架访问 3,后台不能直接进入界面
    • 异常测试 :关机,重启,网络中断 服务器卡死 服务器重启

6. app怎么测试。

  • 当我拿到需求后就要进行需求分析,提炼测试点,设计测试用例,并进行评审
  • 然后如果没有搭建测试环境的话就要搭建测试环境
  • 开发人员把apk把发给我,我就先做一个冒烟测试。不通过就打回,通过了再进行执行测试用例
  • 先做功能测试,保证每一个功能都能过关。
  • 然后再做一些专项测试。主要的专项测试有安装,卸载,升级,交互性,稳定性,弱网,兼容性,性能测试。

31.app兼容性你是怎么测的?

  • 兼容性测试主要测试app在不同机型,不同手机系统版本上能不能正常启动,运行。不同屏幕分辨率和屏幕大小能不能正常显示,会不会出现拉伸,显示不全的情况。以前我们公司测试兼容性主要是通过真机和云测相结合的方法做测试的。公司会我们提供七八台真机,一般都是市场上主流的几款机型,比如华为P10,华为荣耀10,vivo x20,vivo y85,小米8等。我先用公司提供的真机一台一台测试。其他没有真机的手机就在云测上测试,生成测试报告,进行分析。云测上如果发现某些有问题的手机型号,就会拿真机进行再次测试,这里一般公司会租用手机,降低成本。

8. app性能你是怎么测的?

  • APP测试主要有了解性能需求,指定测试计划,编写测试用例,和准备测试数据。执行测试用例,提交bug,编写测试报告,这几个流程。
  • App的性能测试主要从两个方面入手,一个是app占用手机的性能,一个是app对服务器的性能测试。
    • 手机性能性能测试主要测的是cpu占用率,内存占用率,耗电量,流量以及流畅度。除此之外也要重点关注app的安装,启动,卸载时间,加载页面的响应时间,以及是否有内存泄漏的情况。测试之前,一般se会给我们提供指标。如果没有给的话,我会通过分析竞品,比如要测试京东,我会拿淘宝作为竞品,所测的京东性能要强于淘宝的才行。如果app之前有版本的话,可以拿上一个版本的数据作为对比对象,所测的性能要优于上一个版本的。通常来说,cpu平均占用率不超过10%,内存占用率不超过100M,平均安装时间50S,平均启动时间4S等,这都是一些比较普遍的app的性能,也可以作为一种参考。
    • 服务器性能是用jmeter进行测试。主要看并发数,响应时间,事务通过率,以及资源占用情况
      • 首先分析业务,这可以通过组内评审得出,然后准备数据,了解并发数。并发数可以通过需求了解,没有的话可以跟客户交谈总结,或者分析竞品得出。
      • 得到了并发数后,按各个场景的使用比例进行分配并发数。先测试单一场景,并发数在原来的基础上增加百分之十到二十,用linux监控资源,找出系统中隐藏的问题,比如通过查看内存前后对比看看有没有内存泄漏,通过查看日志内存溢出(OutOfMemoryError,StackOverflowError),死锁。
      • 必要时要考虑二八原则,测试一个场景一般15-30分钟。在测试混合场景,就是各个不同场景,一起压测,找出未满足的需求。测试时间一般为30-60分钟
      • 然后再进行一个负载测试,找出系统所能承受的最大的并发数。
      • 然后把所有的报告汇总,进行分析,最后写一个性能测试报告。

9. APP测试怎么测? 我们app测试有Android app 和ios app 两种。Android app主要是从以下几点进行测试

  • (1)界面测试 ,我们测试界面跟需求文档中界面原图是否一致,使用不同的手机界面分辨率,以及界面大小等方面进行测试。
  • (2)功能测试 ,功能测试和web测试差不多,主要测试app对其他相关功能模块的影响。
  • (3)兼容性测试,我们也会用真机来测试一下兼容性像用的三星Android版本6.0.1、红米Android版本5.1、小米5Android版本7.0,华为mate10Android版本8.0,IPhone5、IPhonex、IPhone6s puls对应的IOS为8.4.1-11,也可以借助阿里云测试;还要测试手机是否方便好用,以及跟手机自带的软件是否有冲突,和市场上排名前100的主流软件是否有冲突来进行交互性测试,防止被当成病毒不允许安装。
  • (4)网络测试,在不同的网络中进行测试,比如:2G,3G,4G,移动,电信,联通,还有网络之间切换,用fiddler进行弱网测试。
  • (5)交互性测试,
  • (6)易用性测试,
  • (7)异常测试,异常测试手机关机、重启以及断网的一些异常情况
  • (8)安全测试,安全测试的话,我们会使用xss脚本和sql注入来进行代码攻击,一般使用扫描工具Appscan来进行攻击,然后还会用fiddler进行抓包,查看关键信息有没有进行加密,查看日志中有没有加密,数据库有没有加密,以及界面上的展示和输入是否加密了,会在fiddler抓包的时候设置断点,篡改数据,看能不能篡改成功
  • (9)权限测试
  • (10)稳定性测试,还会使用monkey测试App的稳定性,一般运行100W次,大概八个小时,查看日志文件,如果出现crash,anr,exception这些单词,则是出现bug,我们会将bug提交给开发,开发修复之后,我们会用种子数来进行回归复测
  • (11)性能测试,是为了提高用户的体验感,我们一般是用emaggee来测试监控App的cpu、内存、fps等性能指标,监控完之后编写性能测试报告,然后再对比性能指标,看是否达标。

10. App 的兼容性怎么测,App 的接口测试怎么测?

  • 系统兼容(ios、安卓)、
  • 机型兼容(iPhone、华为、小米、三星、vivo、OPPO);
  • 分辨率兼容;
  • 软件本身向前向后兼容;
  • 接口测试:获取接口文档,使用fiddler抓包工具获取接口的请求方式、url、请求参数、返回参数,然后使用postman、jmeter进行测试 11. app闪退的可能原因?
  • 缓存的垃圾太多,长时间没有清理垃圾
  • 运行的程序太多,内存不足导致的闪退
  • 版本兼容的问题
  • 网络的原因:弱网、2G或3G环境下
  • app的sdk和系统不兼容
  • 系统升级之后,新版本和老版本不兼容导致的

12. 原生开发、H5开发、混合开发的区别

  • 原生开发(Native App开发): 是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发。比如Android是利用Java、Eclipse、Android studio;IOS是利用Objective-C 和Xcode进行开发
    • 优点
      • 可访问手机所有功能(如GPS、摄像头等)、可实现功能最齐全;
      • 运行速度快、性能高,绝佳的用户体验;
      • 支持大量图形和动画,不卡顿,反应快;
      • 兼容性好,每个代码都经过程序员精心设计,一般不会出现闪退的情况,还能防止病毒和漏洞的出现;
      • 比较快捷地使用设备端提供的接口,处理速度上有优势
    • 缺点
      • 开发周期长:快则3个月左右完成,慢则五个月左右;
      • 开发成本较高
      • 可移植性比较差:一款原生的App,Android和IOS都要各自开发,同样的逻辑、界面要写两套;
      • 内容限制(App Store限制);
      • 必须等下载完毕用户才可以打开,获得新版本时需重新下载应用更新。
      • 新需求迭代,上线慢
  • H5开发(web app开发): HTML5应用开发,是利用Web技术进行的App开发,可以在手机端浏览器里面打开的网站就称之为webapp。Web技术本身需要浏览器的支持才能进行展示和用户交互,因此主要用到的技术是HTML、CSS、Javascript以及jQuery、Vue、React等JS框架
    • 优点
      • 支持设备范围广:可以跨平台,编写的代码可以同时在Android、IOS、Windows上运行;
      • 开发成本低、周期短;
      • 无内容限制;
      • 适合展示有大段文字(如新闻、攻略等),且格式比较丰富(如加粗,字体多样)的页面;
      • 用户可以直接使用最新版本(自动更新,不需用户手动更新)
    • 缺点
      • 由于Web技术本身的限制,H5移动应用不能直接访问设备硬件和离线存储,所以在体验和性能上有很大的局限性;
      • 对联网要求高,离线不能做任何操作;
      • 功能有限;
      • APP反应速度慢,页面切换流畅性较差;
      • 图片和动画支持性不高;
      • 用户体验感较差;
      • 无法调用手机硬件(摄像头、麦克风等)
  • 混合开发(Hybrid App开发)
  • 指在开发一款App产品的时候,为了提高效率、节省成本而利用原生与H5的开发技术的混合应用。通常由“HTML5云网站 APP应用客户端”两部份构成。
  • 混合开发是一种取长补短的开发模式,原生代码部分利用WebView插件或者其它框架为H5提供容器,程序主要的业务实现、界面展示都是利用与H5相关的Web技术进行实现的。比如京东、淘宝、今日头条等APP都是利用混合开发模式而成的
  • 优点:
    • 开发效率高,节约时间:同一套代码Android和IOS基本上都可使用;
    • 更新和部署比较方便:每次升级版本只需要在服务器端升级即可,不再需要上传到App Store进行审核;
  • 代码维护方便、版本更新快,节省产品成本;
  • 比web版实现功能多;
  • 可离线运行
  • 缺点:
    • 功能/界面无法自定:所有内容都是固定的,不能换界面或增加功能;
    • 加载缓慢/网络要求高:混合APP数据需要全部从服务器调取,每个页面都需要重新下载,因此打开速度慢,网络占用高,缓冲时间长,容易让用户反感;
    • 安全性比较低:代码都是以前的老代码,不能很好地兼容最新手机系统,且安全性较低,网络发展这么快,病毒这么多,如果不实时更新,定期检查,容易产生漏洞,造成直接经济损失;
  • 如何辨别原生和H5
    • 看加载的方式:如果在打开新页面导航栏下面有一条加载的线的话,这个页面就是H5页面,如果没有就是原生的
    • 断网的情况:把手机的网络断掉。然后点开页面。可以正常显示页面内容就是原生写的。 显示404或者错误页面的是html页面。原生部分页面是可以正常打开的,打不开的原生和H5的报错也是有区别的

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/174490.html原文链接:https://javaforall.cn

0 人点赞