1软件验收测试不包括 (B) 不包括白盒测试
2下面描述测试工具功能不正确的是(B)Junit黑盒测试工具
3使用语句覆盖对下列代码进行测试用例设计时,需要设计(B)2个测试用例
5关于常用性能指标的说法,错误的是(B)吞吐量,是指单位时间内系统处理的请求数量,直接提醒软件系统的i性能承载
6 对设计软件的压力测试通常不包括(ABC)
7 关于linux常用的命令说法错误的是(C)
9 关于HTTP响应内容的划分是否正确(正确)
10 测试人员发现一个问题,如果问题影响不大,而自己可以简单修改下,可以在修改后验证下没有问题,而不再报bug(错误)
11.说一下自己的软件测试的理解
即软件测试的目的和原则
12.软件测试有哪些不同的类型
即软件测试阶段的分类
3.什么是软件开发生命周期
软件生命周期 同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生命周期(软件生存周期)[1] 。软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考
<meta charset="utf-8">
5.如何编写测试报告
1、什么时候写?
测试报告一般是在项目测试结束或一个迭代完成之后由测试负责人编写。若不是项目,只有一二个测试人员,那就是由该项目主导人来写,若只有你一个来测试,那就是由你来写。
2、测试报告内容
测试报告主要内容大致可以分为测试范围、测试进度、缺陷管理、测试结论四大部分,在实际编写过程中,我们根据企业的要求输出这四个部分或包含这四个部分以上的内容即可。
(1)测试范围
测试范围主要是写本次项目或本次迭代需要测试的功能,一般来说是以新增功能和修改功能为主,以回归测试内容为辅,测试报告中的测试范围可以摘取测试计划中的测试范围,再根据本轮测试活动中实际测试的功能进行补充。
测试报告中测试范围与测试计划中的测试范围区别:
1、内容:测试计划中的测试范围是根据需求文档梳理出来的,而测试报告中的测试范围以实际测试内容整理出来的
2、结果:测试计划中的测试范围没有测试结果,测试报告中的测试范围需要标明测试结果
(2)测试进度
测试报告中的测试进度由二部分组成:一个是时间进度安排(展示),另一个是人员测试时间花费。
1、时间进度安排
测试报告中的测试时间比测试计划中的测试时间多了每个阶段中实际开始时间和实际结束时间。
2、测试时间花费
测试时间花费的输出是测试计划中所没有的,测试报告中输出测试时间花费主要是反映本轮测试所花费总的单位人力时间,也从侧方面反映本轮软件质量。
我是一个例子:
执行测试人:X人(XXX、XXX、XXX等)—》本轮测试中参与了多少人测试人员
总花费时间:XXX人/天 —》总的单位人力时间
(3)缺陷管理
缺陷管理是测试报告中的核心内容,而测试报告中需要对本轮测试缺陷从不同维度进行输出,目的就是为了从缺陷分析中得出软件质量、修改bug的效率、开发质量等。
一般测试报告中需要输出:
缺陷汇总
统计本轮所有缺陷,可以根据提测版本来汇总
按bug等级分
根据bug等级统计本轮缺陷的分布情况
按模块分
根据测试系统/模块来统计本轮缺陷的分布情况
缺陷收敛情况
缺陷收敛情况就统计测试过程中每天新增bug数、解决bug数、关闭bug数,来检查bug的收敛是否健康,一般来说第一个测试版本bug数量会增加,后面慢慢bug会降低,关闭bug数量会慢慢增加,这里主要检查一个bug开启的数量、测试后期bug数量有没有增多等情况。
缺陷收敛情况除了用表格展示之外,还可以以图表的形式展示,更出看出缺陷的健康度。
缺陷管理中不仅限于包含以上内容,还会根据实际的项目情况包含其他bug分析内容,比如缺陷状态、缺陷遗留等。
(4)测试结论
测试报告中的测试结论绝对是占C位的,也有企业写测试报告只需要测试结论就行。
测试结论中包含对本轮测试过程的总结,主要是得出本轮测试之后项目是否达到了上线标准,所以测试结论有测试通过,可以上线,或者是测试不通过,建议不上线。
1、测试通过,可以上线
总结性语言写出本轮测试从哪些维度进行了哪些功能/业务方面的测试,满足需求文档和上线标准。
我是一个简单的例子:
XX项目在测试环境进行了功能、可靠性、安全性、可用性、性能五个方面进行了全面、严格、规范的测试,测试结果表明,XX项目实现了XXX业务,项目测试质量符合需求及上线标准。
测试结论:通过
2、测试不通过,建议不上线
一般来说软件测试结论中很少会包含测试不通过的情况,但软件测试人员还是要根据实际的测试情况给出实际的结论,若是软件质量不理想,不要迫于压力而建议上线。
测试报告包含了软件测试人员对于这次软件质量的评估,所以在写测报报告的时候需要客观地分析这次测试活动,虽说很多企业在项目都没有要求输出测试报告,但王豆豆还是建议每个测试项目都尽量输出测试报告,可以不用word文档来来,直接在邮件中写,不需要太详细,包括主要内容即可,然后通过发送邮件的方式来知会到项目组成员。
7.代码题(用熟悉的代码写出来)
三角形的三条边分别为a,b,c
要求: 1.要构成三角形,必须要任意两边和大于第三边
2.输出结果,能否构成三角形,三角形的类型是什么。
代码块
public class Triangle {
public boolean isTriangle(int a,int b, int c){
boolean flag=false;
//Java Math.abs() 方法返回参数的绝对值
//参数可以是 int, float, long, double, short, byte 类型
if ((a+b>c&&a+c>b&&c+b>a)&&(Math.abs(a-b)<c&&Math.abs(a-c)<b&&Math.abs(c-b)<a)){
flag=true;
shape(a,b,c);
}else {
System.out.println("这不能构成三角形。");
}
return flag;
}
public String shape(int a,int b, int c){
String shape=null;
if (a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b){
shape="直角三角形";
System.out.println("这是"+shape);
}else if (a*a>b*b+c*c||b*b>a*a+c*c||c*c>a*a+b*b){
shape="钝角三角形";
System.out.println("这是"+shape);
}else if (a*a<b*b+c*c||b*b<a*a+c*c||c*c<a*a+b*b){
shape="锐角三角形";
System.out.println("这是"+shape);
}
return shape;
}
}
wep 和app 测试的相同点和区别
相同点
不管是传统行业的web测试,还是新兴的手机app测试,都离不开测试的基础知识,即是不管怎么变,测试的原理依然会融入在这两者当中。
1)设计测试用例时,依然都是依据边界值分析法、等价类划分等;
2)多数采用黑盒的测试方法,来验证业务功能是否得到正确的应用;
3)需要检查界面的布局、风格和按钮等是否简洁美观、是否统一等;
4)测试页面载入和翻页的速度、登录时长、内存是否溢出等;
5)测试应用系统的稳定性等。
区别:
系统架构方面:
web项目,一般都是b/s架构,基于浏览器的
app项目,则是c/s的,必须要有客户端,用户需要安装客户端。
web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。
性能方面:
web页面主要会关注响应时间
而app则还需要关心流量、电量、CPU、GPU、Memory这些。
它们服务端的性能没区别,都是一台服务器。
兼容方面:
web是基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容
app测试则要看分辨率,屏幕尺寸,还要看设备系统。
web测试是基于浏览器的所以不必考虑安装卸载。
而app是客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件 。
此外APP还有一些专项测试:如网络、适配性。
如何测试一个app的登录功能
具体要求:有一个账号,一个密码输入框,一个提交按钮,考察目的
1.了解需求
2.是否具有设计用例的能力
3.是否熟悉各种测试方法
4.是否有丰富的web测试经验
1.了解需求:
测试需求分析过程,可以从质量要求出发,来展开测试需求分析,从功能,性能,安全性,兼容性等各个质量要求出发,不断细化其内容,挖掘对应的测试需求,覆盖质量要求,也可从开发需求出发,把每一条开发需求分解为测试项,结合质量要求,这些测试项再分解成测试任务,则包括功能性测试任务和非功能性测试任务,在整理测试需求时,需要分类,细化,合并,并按照优先级进行排列,形成测试需求列表
1> 登录界面应该是弹出框,还是直接显示在网页里面
2>账号和密码的长度(eg:长度,大小写敏感,特殊字符混搭)
3>界面美观是否有特殊需求(UI测试)
2.用例设计:
功能测试:
1>输入正确的用户名密码,点击提交按钮,验证能否正确登录
2> 输入错误的用户名或者密码,点击提交按钮,验证登录失败,提示相应的错误信息
3 >登录成功后能否跳转到正确的页面
4>账号名或者密码长度过长或者过短,应该怎么处理(安全性,密码太短是否有提示)
5>账号和密码有特殊字符(空格),是否做了过滤
6>密码是否加密显示
7>输入密码 ,大写键盘开启的时候要有提示信息
8>什么都不输入,直接点击提交(非空检查)
9>登录失败后,不能记住密码的功能
10>登录页面中忘记密码等等链接跳转是否正确
11>牵扯到验证码,还要考虑文字是否扭曲过度导致辨认难度大
UI测试:
1>布局是否合理,两个textbox和一个按钮是否对齐
2>textbox的长度和高度是否符合要求
3>界面设计风格和UI设计风格是否一致
4>界面中的文字简洁易懂,没有错别字
性能测试:
1>打开登录界面,需要几秒
2>输入正确的用户名和密码,登录成功跳转到新页面,需要几秒
安全性测试:
1>登录成功后的cookie是否有HttpOnly(降低脚本风险)
2>账号和密码是否通过加密的方式,发送给web服务器
3>账号和密码的验证,应该是用服务器验证,而不单单是在客户端用javaScript验证
4>账号和密码的输入框,应该屏蔽SQL注入攻击
5>账号和密码的输入框,应该禁止输入脚本(防止XSS攻击)
6>错误登录的次数限制(防止暴力破解)
7>是否支持多用户在同一台机器上登录
8>一用户在多台机器上登录
可用性测试:
1>输入框是否可以用tab键切换
2>输入账号,密码后按回车,是否可以登录
3>是否可用全用键盘操作,是否有快捷键
兼容性测试:
1>主流的浏览器下能否显示正常已经功能正常
2>不同的平台是否能正常工作,eg:windows,mac
3>移动设备上是否正常工作,比如iphone,android
4>不同的分辨率
推送消息如何测试
-消息推送对象
消息推送一般可以自定义推送对象,有全部推送,精确推送,及安卓和IOS渠道推送,注意推送对象是否正确,推送之前确认自己是否在测试环境操作,以免造成生产问题。
-消息简介
客户端收到消息推送有两种形式,客户端后台运行一般推送显示在通知栏,客户端前台运行一般弹出弹框,简介内容注意字数过多溢出情况。
-消息详情
注意详情所支持的内容,包括文字、图片、表情包、换行以及链接跳转。
-消息推送场景(支持定时推送)
(1)消息推送时间:
a)设置过去时间
b)未推送之前修改消息内容
c)删除消息,查看是否还会推送
(2)客户端运行状态
a)前台运行
b)后台运行
c)进程关闭状态
(3)特殊场景
a)多个提醒冲突
b)当天设置当天推送
c)当天设置隔几天起效
app闪退是有那些原因造成的
1.缓存垃圾过多
由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.
- 运行的程序过多,导致内存不足
3.应用版本兼容问题
如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中,也会造成应用闪退。
4.. 检查APP中访问网络的地方,组件中的ImageView是否可以正常的下载并显示到app 页面上。
5.检查APP的sdk和手机的系统是否兼容。
6.在一些特定情况下的闪退,比如播放视频,在Android5.0 升级到Android6.0的时候,有些系统API老版本有,新版本没有,到时回去对象的时候失败,报空,系统就会出现闪退问题.
二.常见的解决方案
1.缓存垃圾过多
可通过“设置”中清除应用缓存的方式解决
2.内存不足
可尝试关闭其他暂时不用的软件
3.兼容性问题
3.1应用版本兼容性问题
如果是版本太低,可升级版本即可:如果是新版本闪退,可能还在调式,需卸载安装旧的版本使用
3.2APP中的SDK和手机的兼容性问题
需要原生端相关人员,设置SDK的最低兼容系统版本
测试过程中遇到app出现anr的时候你会怎么处理
可以先把日志过滤出来: adb logcat | findstr xxxxx(过滤日志信息) ,然后再搜索其中的关键字,比如:exception、crash,看看是那些方法或者异常导致了问题的发送,初步定位问题原因后,可以交给开发人员去具体查找深层原因并修复。
如何查看移动端的日志以及会出现哪些异常(点击题目跳转链接)
app测试哪些以及如何展开测试工作
一、APP要做哪些测试?
1、功能测试:对具体功能点一一测试,验证确认每个点都实现满足需求的相应功能。
2、APP兼容性测试:根据屏幕尺寸、系统进行适配测试;对市场上主流的设备安装应用执行测试(如果有特定针对群体,应该根据实际用户数据接入设备进行分析,对靠前的机型进行适配测试),确保都能正常运行。
3、压力测试:用户量大,交互性高的应用需对接口执行压力测试,确应用在海量的用户使用的情况下能正常运行。
4、UI/UE测试:主要是一些适配,用户体验方面,交互方面的测试。
5、用户行为统计测试:确保手头的行为统计分析定义文档为最新版本,且与开发人员手中的文档一致;确保产品经理在文档中所定义的页面在该产品中都是存在的;尽可能真实地模拟用户行为;核对统计日志,确保各项操作所对应的页面ID以及操作ID都是正确的。
6、安全测试 :软件权限、数据安全性、通讯安全性、人机接口安全性。
7、安装卸载测试:确保应用都能正确安装、卸载,且能正确运行(注意应用的升级测试:升级前后的状态)。
8、交叉测试:对于正在运行的应用,若进入短信、电话等其它软件响应的情况,不会影响被测试应用,且会保证应用能正确运行;杀掉进程时再重新打开APP;多个APP切换数据的保存等。
9、协议测试:模拟客户端直接发送协议包给服务器,看服务器是否有一定的校验,认不认客户端发过来的数据。协议测试主要是为了处理用户发送恶意协议到服务器,骗过服务器的校验。
10、异常测试:多次快速点击切换页面的响应情况?横屏竖屏的快速操作:切换菜单,播放,下载等;服务器宕机或出现404、502等情况下的测试。
11、弱网测试:APP在2G/3G/4G/wifi下的表现情况,网络环境变化时,APP的应对情况:是否有适当提示?从有网环境到无网环境时,APP的反馈如何?从无网络环境回到有网络环境时,是否能自动加载数据,且多久才能开始加载数据?
12、电量测试:设备在不同电量时(低于10%,50%,95%),APP的响应以及操作流畅度;设备在充电时,APP的响应以及操作流畅度;设备意外断电时,APP数据丢失情况等。
app的性能测试的关注点有哪些
app性能测试分类:
1、响应
2、内存
3、cpu
4、FPS (app使用的流畅度)
5、GPU过度渲染
6、耗电
7、耗流
(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等,后续会持续更新… 流量测试同这些一起更新,这里就不在说明了 )
App性能测试响应点:
主要测试点:
1、冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)
2、热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)
3、完全启动:从启动到首页完全加载出来的时间间隔
4、有网启动:从发起跳转,到页面完全加载出来的时间间隔
5、无网启动:从发起跳转,到页面完全加载出来的时间间隔
(在项目中,主要测试关注点是冷启动,热启动)
测试标准:冷启动时间不超过1.5s, 热启动不超过1s.
内存:
测试点:
1、空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
2、中强度状态:时间偏长的操作应用。
3、高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。
** 内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少 **
CPU:
CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。
测试点:
1).在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
2).在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
3).在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)
FPS (应用的使用流畅度)
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。
´一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。
GPU渲染
GPU渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同一个像素点绘制了四次,这是一定要优化的。过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。
耗电量
测试应用对电量的消耗前需要对手机本身的电量消耗有个大概了解,测试前先看规定时间内手机正常待机下(重启后待机)电量消耗为多少。然后再启动待测试APP看看消耗的电量增加了多少取差值。
测试点:
测试手机安装目标APK前后待机功耗无明显差异;
常见使用场景中能够正常进入待机,待机电流在正常范围内;
长时间连续使用应用无异常耗电现象。
如何对app进行弱网测试(找的博客里面写的详细点,点击题目跳转)
弱网测试
常见的ADB命令(找的博客里面写的详细点,点击题目跳转)
查看当前连接设备:
代码块
adb devices
如果发现多个设备:
adb -s 设备号 其他指令
举例:
adb -s devicel install xxx.apk
查看顶部Activity:
windows环境下:
adb shell dumpsys activity | findstr "mFocusedActivity"
Linux、Mac环境下:
adb shell dumpsys activity | grep "mFocusedActivity"
查看日志:
adb logcat
安装apk文件:
adb install xxx.apk
此安装方式,如果已经存在,无法安装;
推荐使用覆盖安装:
adb install -r xxx.apk
比分直接RUN出来的包是test-onlu的无法安装,推荐使用**-t**
adb install -r -t xxx.apk
卸载App:
adb uninstall com.zhy.app
如果想要保留数据,则:
adb uninstall -k com.zhy.app
传递文件:
往手机SDCard传递文件:
adb push 文件名 手机端SDCard路径
例如:
adb push 帅照.jpg /sdcard/
从手机端下载文件:
adb pull /sdcard/xxx.txt
查看手机端安装的所有app包名:
adb shell pm list packages
启动Activity:
adb shell am start 包名/完整Activity路径
例如:
adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity
如果需要携带参数(携带一个Intent,Key 为name):
adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity -e name zhy
启动一个隐式的Intent:
adb shell am start -a "android.intent.action,VIEW" -d "https://www.google.com"
发送广播:
adb shell am broadcast -a "broadcastactionfilter"
-如果需要携带参数(携带一个Intent,key为name):
adb shell am broadcast -a "broadcastactionfilter" -e name zhy
启动服务:
adb shell am startservice "com.zhy.aaa/com.zhy.aaa.MyService"
屏幕截图:
可以使用screencap命令来进行手机屏幕截图,例如:
adb shell screencap /sdcard/screen.png
录制视频:
可以使用screenrecord[options] filename命令来录制屏幕视频,例如:
adb shell screenrecord /sdcard/demo.mp4
> ##### 常见的monkey 命令( 找的博客里面写的详细点,点击题目跳转 )
Monkey 是什么?
Monkey 就是SDK中附带的一个工具。
Monkey 测试的目的?
:该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。
Monkey 测试的特点?
Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。
Monkey 命令
标准的monkey 命令
[adb shell] monkey [options] <eventcount>
, 例如:adb shell monkey -v 500 --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含 Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。
上面只是一个简单的例子,实际情况中通常会有很多的options 选项
四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项
一:常用选项
--help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。
二:事件选项
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:
--pct-motion <percent> (滑动事件)、 --pct-trackball <percent> (轨迹球事件) 、 --pct-nav <percent> (导航事件 up/down/left/right)、 --pct-majornav <percent> (主要导航事件 back key 、 menu key)、 --pct-syskeys <percent> (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、 --pct-appswitch <percent> (activity之间的切换)、 --pct-anyevent <percent>(任意事件)
三:约束选项
-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了
四:调试选项
--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。
一个简单的monkey命令:
adb shell monkey -p com.xy.android.junit -s 500 -v 10000
但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下
adb shell monkey -p com.xy.android.junit -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt
monkey作用的包:com.ckt.android.junit
产生时间序列的种子值:500
忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃 、 详细信息级别为2 , 产生 10000个事件 。
安卓的四大组件
Android四大基本组件:Activity、BroadcastReceiver广播接收器、ContentProvider内容提供者、Service服务。