51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 880|回复: 0
打印 上一主题 下一主题

[资料] 测试工程师福音(面试题总结)

[复制链接]
  • TA的每日心情
    无聊
    2024-7-29 11:15
  • 签到天数: 32 天

    连续签到: 1 天

    [LV.5]测试团长

    跳转到指定楼层
    1#
    发表于 2022-8-15 10:59:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    软件的生命周期(基础)
    计划阶段-〉需求分析-〉设计阶段-〉编码->测试->运行与维护

    测试流程有啥(还是基础)
    1)、测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点,参与需求评审会议。
    2)、测试计划阶段:主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
    3)、测试设计阶段:主要是编写测试用例,会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。
    4)、测试执行阶段:搭建环境,执行冒烟测试(预测试)-然后进入正式测试,bug管理直到测试结束。
    5)、测试评估阶段:出测试报告,确认是否可以上线。

    项目中的测试流程(项目经历)
    需求评审(开发人员,产品经理,测试人员,项目经理进行)---需求确定(需求文档及原型图版本确定);
    开发设计文档(开发人员在开始写代码前就能输出设计文档:开发计划、架构设计、数据库设计、接口文档);
    测试计划、策略确定,编写测试用例---测试计划、用例评审;
    接到测试版本后执行测试用例(补充维护用例);
    提交bug---开发人员修改;
    回归测试(可能又会发现新问题,再按流程开始跑)
    验收测试后编写各项报告。
    测试用例设计方法(写没写过用例)
    白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖
    黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法(老司机靠脑补大法)
    软件测试分为几个阶段 各阶段的测试策略和要求(又是基础)
    测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段
    单元测试:是针对软件设计的最小单位(对于功能测试就是模块)
    集成测试:是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。
    系统测试:是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。
    验收测试:以需求阶段的《需求规格说明书》为验收标准,测试时模拟实际用户的运行环境
    bug描述与周期(对--基础)

    1、bug标题要简洁明了,重心明确
    2、要写明问题出现的前提条件
    3、操作过程要按步骤写清楚
    4、要写实际效果和预期效果
    5、要标明bug出现的概率
    6、提供必要的截图和日志,比较复杂的操作步骤提供视频
    7、bug等级要分好类,致命性bug、严重bug、一般性bug、建设性意见
    8、出现bug的软件版本号
    9、bug出现的模块
    发现》提交》指派》研发确认》研发修复》回归验证》是否通过验证》关闭

    测试结束的标准(emmmm)
    1、用例全部测试。
    2、覆盖率达到标准。
    3、缺陷率达到标准。
    4、其他指标达到质量标准

    你在测试中发现了一个bug,但是开发认为这不是一个bug,你应该怎样解决(坑爹的沟通能力)

    1、将问题提交到缺陷管理库里面进行备案。
    2、要获取判断的依据和标准:
    3、根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
    4、如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
    5、与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
    最后、抛给领导等结果~

    快速区分bug来源以及常见状态码(12345)
    哥,咱们一起看报文,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对;请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题,状态码如下:
    状态码 原因短语
    1XX Informational (信息性状态码) 接收的请求正在处理  
    2XX    Success (成功状态码) 请求正常处理完毕
    3XX    Redirection (重定向状态码) 需要进行附加操作以完成请求
    4XX    Client Error(客户端错误状态码) 服务器无法处理请求
    5XX    Server Error (服务器错误状态码) 服务器处理请求出错  

    http与https区别(加密传输)
    http协议和https协议的区别:传输信息安全性不同、连接方式不同、端口不同、证书zhuan申请方式不同、传输信息安全性不同
    1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息;
    2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。


    二、连接方式不同


    1、http协议:http的连接很简单,是无状态的;
    2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。


    三、端口不同
    http协议:使用的端口是80;       https协议:使用的端口是443。


    四、证书申请方式不同
    http协议:免费申请            https协议:需要到ca申请证书,一般免费证书很少,需要交费
    get和post的区别(更详细的在后面的文章中,其实问put更好)
    a、GET请求在URL中传送的参数是有长度限制的,而POST没有
    b、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
    c、GET参数通过URL传递,POST放在Request body中。
    d、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
    e、GET请求只能进行url编码,而POST支持多种编码方式。
    f、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
    g、GET产生的URL地址可以被Bookmark,而POST不可以。
    h、GET在浏览器回退时是无害的,而POST会再次提交请求。


    Alpha测试与beta的区别(基础++)
    Alpha测试在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。由一个或多个用户在开发环境下进行测试。
    Beta测试当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。由一个或多个用户在用户实际环境下进行而是。


    常用的测试工具(可以学学~)
    (fiddle、jmeter、postman、roadrunner、selenium、appium、jenkins、git、svn、禅道、xss平台、mysql、monkey等)
    fiddle:常用抓包工具,使用方式都是万变不离其宗和jmeter代理服务器一样(详细在下面)
    jmeter:比较强大的压测工具
    postman:最简单的接口测试工具,个人觉得很一般...推荐jmeter-.-
    monkey:瞎几把点系列
    工具这东西不是一两句说的清的,后面我会慢慢完善编辑专栏进行分析哈~~~


    接口测试常见问题(emmm基础)
    1、通过性验证,说白了就是传递正确的参数,是否返回正常的结果
    2、参数组合,因为参数有必传和非必传,参数的类型和长度,以及传递时可能业务上的一些限制,所以在设计用例时,就要排列组合这些情况,保证所有情况都能覆盖到
    3、接口的安全性,这个又分为几种情况:
    1)绕过验证,比如提交订单时,在传递商品价格参数时,修改商品价格,就要看后端有没有验证了。或者我支付时,抓个包将订单金额一改,如果能以我改后的金额支付,那这个借口就有问题了。
    2)绕过身份验证,就是某个功能只有有特殊权限的用户才能操作,那我传递一个普通的用户,是不是也能操作呢
    3)参数是否加密,这个关系到一些账户的安全,比如我们在登录一些网站时,它要将我们的登录信息进行加密,如果不加密我们的信息就会暴露,危害性极大。
    4) 密码安全规则,设置密码时复杂程度的校验。


    依赖性接口测试:上下游接口依赖性(+++1)
    用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数
    依赖于第三方数据的接口如何进行测试最正确的回答是mock,当然我们简单点去搞也一
    1、获取上一个接口的返回值
    2、将返回值设置成环境变量或者全局变量
    3、设置下一个接口的参数形式


    依赖于登录的接口如何处理?
    登录接口依赖token的,可以先登录后,token存到一个yaml或者json或者ini的配置文件里面
    后面所有的请求去拿这个数据就可以全局使用了,如果是cookies的参数,可以用session自动关联


    接口测试用例的举例:登录
    参数是否必填、参数间是否存在关联、参数取值范围 业务规则
    phoneNumber和password参数正确,登陆成功
    phoneNumber参数正确,password类型不为String, 登陆失败
    phoneNumber参数正确,password参数缺失, 登陆失败
    password参数正确,phoneNumber超过11位,登陆失败
    password参数正确,phoneNumber不为String,登陆失败
    password参数正确,phoneNumber参数缺失,登陆失败
    用户未注册,返回登陆失败 / 密码错误,返回登陆失败
    参数故意传入空字符串或null, 可看是否有进行处理


    常见面试中坑爹用例设计:如何测试一个纸杯=.=(有时候是花盆、桌子)
    功能度:用水杯装水看漏不漏;水能不能被喝到


    安全性:杯子有没有毒或细菌
    可靠性:杯子从不同高度落下的损坏程度
    可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
    兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
    易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
    用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
    疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等
    压力测试:用根针并在针上面不断加重量,看压强多大时会穿透


    APP测试哪些方面(对没错还是基础)
    权限测试、安装、运行、卸载测试、UI测试、功能测试、性能测试、中断测试、兼容测试、安全测试、回归测试、升级更新测试、用户体验测试


    fiddler抓包使用(没错,有幸被一个步骤一个步骤的问过)
    web:打开fiddler工具后,再去浏览器打开网页,fiddler会自动抓包,抓取请求响应数据。他会自动设置为本地代理,还可以设置抓取https协议的包。【亲~浏览器F12了解下】


    手机:在手机上的网络设置里,设置代理服务器。就是把fiddler作为代理服务器(fiddler自身要设置为支持远程连接),手机连接fiddler工具,所以手机代理服务器设置页面要输入打开fiddler工具的电脑的ip地址和fiddler的端口号8888,好让手机能连接fiddler,通过fiddler来访问互联网。


    什么是性能测试=.=(千言万语emmm)
    系统在一定的压力情况下,查看cpu,内存,磁盘,网络带宽,TPS、响应时间、并发用户数、等各项指标,通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求,就是在特定的运行条件下验证系统的能力状况。


    什么是负载测试(无力反驳)
    负载测试主要是考察软件系统在既定负载下的性能表现。就是站在用户的角度去观察一定条件下软件系统的性能表现。期望结果是用户的性能指标需求得到满足。性能指标一般体现为响应时间、并发量等。


    测试环境搭建(我怕麻烦简单bb下)
    1、通过winscp上传tomcat,MySQL安装包,JDK(Java开发环境工具包)到linux下
    2、利用tar -zxvf解压缩包命令对jdk,tomcat,mysql进行解包、安装,再配置jdk环境变量。
    3、把war包(web程序)放到tomcate指定目录webapps下,再启动服务器即可。(输入startup.sh的路径,直接回车即可运行)


    常用的Linux命令
    常用操作命令
    1. shutdown -h now 立刻关机
    2. shutdown -h 5   5分钟后关
    3. poweroff        立刻关机
    4. shutdown -r now 立刻重启
    5. shutdown -r 5   5分钟后重启
    6. reboot 立刻重启
    7. cd / 切换到根目录cd
    8. /usr 切换到根目录下的usr目录
    9. cd …/ 切换到上一级目录 或  cd … cd ~ 切换到home目录
    10. cd - 切换到上次访问的目录
    11. ls 查看当前目录下的所有目录和文件
    12. ls -a查看当前目录下的所有目录和文件(包括隐藏的文件)
    13. ls -l 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
    14. ls / 查看指定目录下的所有目录和文件
    15. 查找命令
    16. grep    命令是一种强大的文本搜索工具
    17. find    命令在目录结构中搜索文件,并对搜索结果执行指定的作。
    18. locate  让使用者可以很快速的搜寻某个路径。
    19. whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。
    20. which   命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
    21. 命令格式
    22. crontab [-u user] file
    23. crontab [-u user] [ -e | -l | -r ]
    24. 参数说明:
    25. -u user:用来设定某个用户的crontab服务
    26. file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
    27. -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
    28. -l:显示某个用户的crontab文件内容。如果不指定用户,则表示显示当前用户的crontab文件内容。
    29. -r:删除定时任务配置,从/var/spool/cron目录中删除某个用的crontab
    30. 文件,如果不指定用户,则默认删除当前用户的crontab文件。
    31. 命令:pwd 查看当前目录路径
    32. 命令:ps -ef 查看所有正在运行的进程
    33. 命令:kill pid 或者 kill -9 pid(强制杀死进程) pid:进程号
    34. ifconfig:查看网卡信息
    35. 命令:ifconfig 或 ifconfig | more
    36. ping:查看与某台机器的连接情况
    37. 命令:ping ip
    38. netstat -an:查看当前系统端口
    39. 命令:netstat -an
    40. 搜索指定端口
    41. 命令:netstat -an | grep 8080
    复制代码
    目录操作【增,删,改,查】
    1. 【增】 mkdir
    2. mkdir aaa      在当前目录下创建一个名为aaa的目录
    3. mkdir /usr/aaa 在指定目录下创建一个名为aaa的目录
    4. 【删】rm
    5. 删除文件:
    6. rm 文件    删除当前目录下的文件
    7. rm -f 文件 删除当前目录的的文件(不询问)
    8. 删除目录:
    9. rm -r aaa  递归删除当前目录下的aaa目录
    10. rm -rf aaa 递归删除当前目录下的aaa目录(不询问)
    11. 全部删除:
    12. rm -rf *   将当前目录下的所有目录和文件全部删除
    13. rm -rf /* 【慎用!慎用!慎用!】将根目录下的所有文件全部删除
    14. 注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包
    15. 【改】mv 和 cp
    16. 重命名目录
    17. 命令:mv 当前目录 新目录
    18. 例如:mv aaa bbb 将目录aaa改为bbb
    19. 剪切目录
    20. 命令:mv 目录名称 目录的新位置(将/usr/tmp目录下的aaa目录剪切到/usr目录下面 mv/usr/tmp/aaa/usr)
    21. 拷贝目录
    22. 命令:cp -r 目录名称 目录拷贝的目标位置 -r代表递归
    23. (将/usr/tmp目录下的aaa目录复制到 /usr目录下面 cp /usr/tmp/aaa /usr)
    24. 【查】find
    25. 命令:find 目录 参数 文件名称
    26. 示例:find /usr/tmp -name ‘a*’ 查找/usr/tmp目录下的所有以a开头的目录或文件
    复制代码
    文件操作【增,删,改,查】
    1. 【增】touch
    2. touch 文件名(示例:在当前目录创建一个名为aa.txt的文件 touch aa.txt)
    3. 【删】 rm
    4. rm -rf 文件名
    5. 【改】 vi或vim
    6. vi编辑器的3种模式
    7. 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
    8. 1、command mode 命令行模式下的常用命令:
    9. 【1】控制光标移动: ↑,↓,j
    10. 【2】删除当前行: dd
    11. 【3】查找:/字符
    12. 【4】进入编辑模式: i o a
    13. 【5】进入底行模式: :

    14. 2、Insert mode编辑模式
    15. 编辑模式下常用命令:
    16. 【1】ESC 退出编辑模式到命令行模式;

    17. 3、last line mode底行模式下常用命令:
    18. 【1】退出编辑: :q
    19. 【2】强制退出: :q!
    20. 【3】保存并退出: :wq

    21. 【查】文件的查看命令:cat/more/less/tail
    22. cat:看最后一屏 cat sudo.conf(使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容)

    23. more:百分比显示more sudo.conf(使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看)

    24. less:翻页查看less sudo.conf(使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看)

    25. tail:指定行数或者动态查看tail -10 sudo.conf(使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束)


    26. 打包和压缩
    27. Windows的压缩文件的扩展名 .zip/.rar
    28. linux中的打包文件:aa.tar
    29. linux中的压缩文件:bb.gz
    30. linux中打包并压缩的文件:.tar.gz
    31. Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
    32. 命令:tar -zcvf 打包压缩后的文件名 要打包的文件,其中:z:调用gzip压缩命令进行压缩
    33. c:打包文件
    34. v:显示运行过程
    35. f:指定文件名
    36. 示例:打包并压缩/usr/tmp 下的所有文件 压缩后的压缩包指定名称为xxx.tar
    37. tar -zcvf ab.tar aa.txt bb.txt
    38. 或:tar -zcvf ab.tar *
    39. 解压
    40. 命令:tar [-zxvf] 压缩文件
    41. 其中:x:代表解压
    42. 示例:将/usr/tmp 下的ab.tar解压到当前目录下
    43. tar -zxvf ab.tar
    44. 示例:将/usr/tmp 下的ab.tar解压到根目录/usr下
    45. tar -zxvf ab.tar -C /usr------C代表指定解压的位置
    复制代码
    常用的mysql命令
    1. 【增】insert
    2. insert into 表名 values(值1,值2,…);
    3. insert into 表名(字段1,字段2…) values(值1,值2,…);(较常用)
    4. insert into 表名(字段1,字段2…) values(值1,值2,…),(值1,值2,…),(值1,值2,…);

    5. 【删】delete
    6. delete from 表名 where 条件

    7. 【改(更新)】update
    8. update 表名 set字段1 = 值1, 字段2 = 值2 where 条件

    9. 重要*【查】select
    10. select * from 表名               查询表中的所有数据
    11. select 字段 from 表名            指定数据查询
    12. select 字段 from 表名 where 条件  根据条件查询出来的数据

    13. where 条件后面跟的条件
    14. 关系:>,<,>=,<=,!=
    15. 逻辑:or, and
    16. 区间:id between 4 and 6 ;闭区间,包含边界

    17. 【排序】
    18. select 字段 from 表 order by 字段 排序关键词(desc | asc)
    19. 排序关键词 desc 降序 asc 升序(默认)
    20. 通过字段来排序 :select * from star orser by money desc, age asc;
    21. 多字段排序 :select 字段 from 表 order by 字段1 desc |asc,…字段n desc| asc;

    22. 【常用的统计函数】 sum,avg,count,max,min
    复制代码
    多表联合查询

    1. 1.内连接
    2. 隐式内连接 select username,name from user,goods where user,gid=gods,gid;
    3. 显示内连接 select username,from user inner join goods on user.gid=goods.gid;
    4.           select * from user left join goods on user.gid=goods.gid;
    5. 2.外链接 左/右连接
    6. select * from user where gid in(select gid from goods);
    7. select * from user right jOin goods on user.gid=goods.gid;

    8. 3.数据联合查询
    9. select * from user left join goods on user.gid=goods.gid union select * from user right join goods on user.gid=goods.gid;

    10. 4.两个表同时更新
    11. update user u, goods g set u.gid=12,g.price=1 where u.id=2 and u.gid=g.gid;
    复制代码
    子句 说明 是否必须使用
    select 要返回的列或表示式
    form 从中检索数据的表 仅在从表选择数据时使用
    where 行级过滤
    group by 分组说明 仅在按组计算聚集时使用
    having 组级过滤
    order by 输出排序顺序
    limit 要检索的行数


    monkey
    1. 命令:adb shell monkey +命令参数
    2. 所有的参数都需要放在monkey和设置的次数之间;参数的顺序可以调整,若带了-p ,-p必须放在monkey之后,参数必须在-p和次数之间

    3. 2.monkey基础命令
    4. adb shell monkey -p 包名 -v -s seed值 压测次数

    5. 参数-p:
    6. 此命令用于指定要测试的包,若不指定则在整个系统中执行

    7. a)指定一个包执行10次:adb shell monkey -p 包名 10

    8. 如下出现事件执行次数和所耗时间,则算是执行成功;

    9. b)指定多个包执行10次:adb shell monkey -p 包名 –p 包名 10

    10. 参数 -v:
    11. 用于指定反馈日志的详细程度级别(共3个级别)

    12. 1.Level 0: adb shell monkey -p 包名 -v 10

    13. 默认级别,仅提供启动、测试完成和最终结果等少量信息

    14. 2.Level 1: adb shell monkey -p 包名 -v -v 10

    15. 提供较为详细的日志,包括每个发送到Activity的事件信息

    16. 3.Level 2: adb shell monkey -p 包名 -v -v -v 10

    17. 提供最详细的日志,包括了测试中选中/未选中的Activity信息

    18. 参数 -s:
    19. 用于指定伪随机数生成器的seed值

    20. 命令:adb shell monkey -p 包名 –s seed值 执行次数

    21. 作用:如果seed值相同,则两次Monkey测试所产生的事件序列也相同的。

    22. 示例:

    23. 测试1:adb shell monkey -p com.qq –s 15888 100

    24. 测试2:adb shell monkey -p com.qq –s 15888 100

    25. 说明:

    26. 两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。(也就是说,重复执行上次的随机操作)

    27. 操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

    28. 运行:
    29. >>不间断操作500次              adb shell monkey -p 包名 -v 500  

    30. >>每个操作间隔500ms,共执行100次             adb shell  monkey -p 包名  -v-v --throttle  500 100

    31. >>每个操作间隔100ms,共执行1000次 ,其中点击事件占比50%,轨迹50%                 adb shell monkey  -p  包名  -v-v --pct-touch  50  --pct-trackball 50 --throttle 100 1000

    32. >>日志重定向到桌面文件夹                               adb shell monkey  -p  包名  -v-v --pct-touch  50  --pct-trackball 50 --throttle 100 1000>C:\Users\xyp\Desktop\Android脚本\1.log

    33. >>每个操作间隔500ms、崩溃、超时、许可错误继续执行                       adb shell  monkey -p  包名   --throttle  500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v-v-v  1000000>C:\Users\xyp\Desktop\Android脚本\1.log

    34. 停止monkey测试           
    35. 重新打开一个cmd窗口>>进入adb shell>>ps | grep monkey查找monkey进程>>kill  进程号结束monkey

    36. 日志分析
    37. 1. 查找出差步骤:
    38. a)找到monkey里哪个地方出错

    39. 查看Monkey执行的是哪一个Activity,在switch后面找,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。

    40. b)查看Monkey里面出错前的一些事件动作,手动执行该动作

    41. >>Sleeping for XX milliseconds这是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件

    42. >>Sending XX 就是代表一个操作,如下图的两个操作 应该就是一个点击事件。

    43. c)若以上步骤还不能找出,则可以使用之前一样的seed,再执行monkey命令一遍,便于复现

    44. 2.测试结果分析:
    45. >>程序无响应,ANR问题:在日志中搜索“ANR”

    46. >>崩溃问题:在日志中搜索“CRASH”

    47. >>其他问题:在日志中搜索”Exception”

    48. monkey说明
    49. --throttle   时间间隔

    50. --ignore-crashes    忽略崩溃

    51. --ignore-timeouts  忽略超时

    52. --ignore-security-exceptions   忽略许可错误

    53. --ignore-native-crashes  忽略本地崩溃

    54. --monitor-native-crashes   监控本地崩溃

    55. --pct-touch  触摸、点击

    56. --pct-motion 调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)

    57. --pct-trackball  调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

    58. --pct-nav 调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

    59. --pct-majornav 调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    60. --pct-syskeys 调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

    61. --pct-appswitch 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

    62. --pct-flip 调整“键盘翻转”事件的百分比。

    63. --pct-anyevent 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

    64. 注意:各事件类型的百分比总数不能超过100%
    复制代码




    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 15:40 , Processed in 0.066342 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表