目的:通过测试工作可以发现并修复软件当中存在的缺陷
执行monkey测试设备中所有app100次 adb shell monkey 100
将日志输出到文件中 adb shell monkey >D:/log/666.txt
测试monkey测试指定app adb shell monkey -p 包名 测试次数
显示日志详细程度
仅提供启动提示,测试完成和最终结果的少量信息 adb shell monkey -p 包名 测试次数 -v
较为详细,包括每个发送到activity的事件信息adb shell monkey -p 包名 测试次数 -v-v
最详细的日志,包括测试中选中/未选中的activity adb shell monkey -p 包名 测试次数 -v-v-v
忽略奔溃或异常(--ignore-crashes ) adb shell monkey --ignore-crashes 1000 >D:/log/666.txt
忽略超时(--ignore-timeouts) adb shell monkey --ignore-timeouts 1000 >D:/log/666.txt
随机数种子(-s) adb shell monkey -s 26 。
测试间隔时延毫秒(--throttle) adb shell monkey -p 包名 --throttle 300 -v 1000
屏幕旋转事件(--pct-rotation) adb shell monkey --pct-rotation
*触摸事件(--pct-touch 占比数) adb shell monkey --pct-touch 80 -v 1000 >D:/log/666.txt
*手势事件(--pct-motion) adb shell monkey --pct-motion 80 -v 1000 >D:/log/666.txt
*轨迹事件百分比(--pct-trackball) adb shell monkey--pct-trackball <percent>
*指定系统按键事件百分比(--pct-syskeys) adb shell monkey--pct-syskeys <percent>
*指定基本导航事件百分比 (--pct-nav) adb shell monkey--pct-nav <percent>
*指定其他类型事件百分比 (--pct-anyevent) adb shell monkey--pct-anyevent <percent>
指定主要导航事件百分比 adb shell monkey--pct-majornav <percent>
指定应用启动事件百分比 adb shell monkey--pct-appswitch <percent>
指定flip(弹)事件的百分比 adb shell monkey--pct-flip <percent>
指定缩放(捏)事件百分比 adb shell monkey--pct-pinchzoom <percent>
指定 adb shell monkey--pct-permission <percent>
忽略程序发生许可异常 adb shell monkey --ignore-security-exceptions
插入固定延迟 adb shell monkey --throttle 500 -v 500 (随机执行 500 个事件,每个事件之间延迟 500 毫秒被执行)
adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts --throttle 300 -s 26 -v-v-v >D:/log/666.txt
--ignore-crashes
--ignore-timeouts
--throttl
-s 300 随机种子数
红包的测试用例
功能
1.在红包钱数,和红包个数的输入框中只能输入数字
2.红包里最多和最少可以输入的钱数 200 0.01
3.拼手气红包最多可以发多少个红包 100
3.1超过最大拼手气红包的个数是否有提醒
4.当红包钱数超过最大范围是不是有对应的提示
5.当发送的红包个数超过最大范围是不是有提示
6.当余额不足时,红包发送失败
7.在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,
7.1是否可以输入它们的混合搭配
8.输入红包钱数是不是只能输入数字
9.红包描述里许多能有多少个字符 10个
10.红包描述,金额,红包个数框里是否支持复制粘贴操作
12.红包描述里的表情可以删除
13.发送的红包别人是否可以领取
13.1发的红包自己可不可以领取 2人
14. 24小时内没有领取的红包是否可以退回到原来的账户
14.1 超过24小时没有领取的红包,是否还可以领取
15.用户是否可以多次抢一个红包
16.发红包的人是否还可以抢红包 多人
17.红包的金额里的小数位数是否有限制
18.可以按返回键,取消发红包
19. 断网时,无法抢红包
20.可不可以自己选择支付方式
21.余额不足时,会不会自动匹配支付方式
22.在发红包界面能否看到以前的收发红包的记录
23.红包记录里的信息与实际收发红包记录是否匹配
24.支付时可以密码支付也可以指纹支付
25.如果直接输入小数点,那么小数点之前应该有个0
26.支付成功后,退回聊天界面
27.发红包金额和收到的红包金额应该匹配
28.是否可以连续多次发红包
29.输入钱数为0,"塞钱进红包"置灰
性能
1.弱网时抢红包,发红包时间
2.不同网速时抢红包,发红包的时间
3.发红包和收红包成功后的跳转时间
4.收发红包的耗电量
5.退款到账的时间
兼容
1.苹果,安卓是否都可以发送红包
2.电脑端可以抢微信红包
界面
1.发红包界面没有错别字
2.抢完红包界面没有错别字
3.发红包和收红包界面排版合理,
4.发红包和收到红包界面颜色搭配合理
安全
1.对方微信号异地登录,是否会有提醒 2人
2.红包被领取以后,发送红包人的金额会减少,收红包金额会增加
3.发送红包失败,余额和银行卡里的钱数不会少
4.红包发送成功,是否会收到微信支付的通知
易用性(有点重复)
1.红包描述,可以通过语音输入
2.可以指纹支付也可以密码支付
切换目录
切换到该目录下usr目录 cd /usr/
切换到上一层目录 cd ../
切换到系统根目录 cd /
目录操作
创建目录 mkdir 目录名称
查看该目录下的所有目录和文件 ls
查看隐藏目录 ls -a
查看目录和文件的详细信息 ls -l 或者ll
查找目录 find 目录 参数 find / -name 'test*'
修改目录 mv 旧名称 新名称
移动目录 mv 文件 路径
拷贝目录 cp -r 文件 路径
删除目录 rm -rf 目录
文件操作
创建文件 touch 文件名
查看文件(日志) cat/more/less/tail/head 文件
实时/动态查看日志 tail -f 日志
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
修改文件vim/vi(进入命令模式)>>>i/o/a(进入编辑模式)>>esc(提出编辑模式进入命令模式)>>> shift : 输入 wq保存并退出/q!强制退出不保存修改的数据
删除文件 rm -rf 文件名
打包或者压缩文件
打包 tar -zcvf 文件名.tar 要打包的文件
压缩 tar -zcvf 文件名.gz 要压缩的文件
打包并压缩 tar -zcvf 文件名.tar.gz 要打包并压缩的文件
解压文件++ m
解压tar包 tar -zxvf 文件.tar
解压zip包 unzip 文件.zip
解压到某个目录下 tar -xvf 文件.tar -C /路径
查询文件或者目录的位置 pwd
搜索命令(多用于查日志中的错误信息) grep 关键字(exception) 日志名(文件名)
| 管道符 :把前面的命令传到后面命令中grep 过滤的作用(同时执行)
查看进程 ps -ef | grep 名称
查看tomcat进程是否开启 ps -ef | grep tomcat
杀死进程 kill -9 pid(对应进程的pid)
查看端口信息 netstat -an |grep 端口号
查看3306端口是否被占用 netstat -an | grep 3306
查看网络命令 ifconfig (查看ip信息)
查看网络是否联通 查看外网:ping www.baidu.com
查看内网 ping 内网ip
查看内存信息 free
查看磁盘信息 df -h
权限 chmod 777 文件名 (赋权可读可写可执行)
查看当前应用的apk包名和actiyity名称 adb shell dumpsys | findstr mCurretFocus
链接设备 adb connect 设备名
查看当前连接的设备 adb devices
开启服务 adb start-server
关闭服务 adb kill-server
安装软件 adb install apk路径
覆盖安装 adb install -r apk路径 (重新安装apk并保留数据和缓存文件)
系统应用 adb shell pm list package -s
第三方应用 adb shell pm list package -3
列出装的所有app包名 adb shell pm list packages
根据包名卸载软件 adb uninstall 包名
卸载保留配置和缓存文件 adb shell pm uninstall -k 包名
电脑文件传输到移动端 adb push 电脑路径 移动端路径
移动端文件传输到电脑 adb pull 移动端路径 电脑路径
查看adb命令帮助信息 adb help
截屏 adb shell screencap -p 截图文件路径
查看手机CPU情况 adb shell dumpsys cpuinfo
查看全部应用内存使用情况 adb shell dumpsys meminfo
查看某个应用内存使用情况 adb shell dumpsys meminfo 包名
显示磁盘使用情况 adb shell dumpsys diskstats
清除应用缓存信息 adb shell pm clear 包名
查看电池状态 adb shell dumpsys battery
查看电池信息 adb shell dumpsys batteryproperties
手机日志输出本地 adb logcat >D:/log.txt
日志级别
V —— Verbose(最低,输出得最多)c
D —— Debug
I —— Info
W —— Warning (警告)
E —— Error (错误)
F —— Fatal (致命的)
S —— Silent(最高,啥也不输出)
输出显示所有优先级大于等于Warning的日志
adb logcat * : w >D:/log/999.txt
将日志实时的输出到本地文件
adb logcat -v time >D:/log/333.txt
2.测试计划
测试背景 测试目的 测试资源安排 测试时间安排 测试人员分配 确定测试范围 制定测试策略(功能测试/业务测试..)风险评估
3.缺陷报告
缺陷标题 所属模块 当前指派 重现步骤 严重程度 bug类型 操作系统 优先级 附件
一、功能测试
1、朋友圈发送
1)、只发送文本(长按相机图标进入)
字符长度限制(以实际微信需求为准),纯数字、纯英文、纯字符、纯中文、纯表情(手机自带表情、微信表情)、数字+英文+字符+中文+表情、包含URL链接、文本是否支持复制粘贴。
发送文本超出字符限制
为空验证
2)、只发送图片(点击相机图标)
1.本地相册选择、拍摄
2.图片数量验证(1-9张,10张)
3.图片格式验证,常见图片格式JPG、png(以实际需求为准);动态gif图片;不支持的图片格式。
4.图片尺寸验证:最大像素限制;超出限制是否进行压缩处理。
5.图片大小验证:图片大小限制;超出限制后的处理方式。
6.图片的预览验证:支持预览大图(屏幕自适应功能),多张图片支持左右滑动
7.为空验证。
8.图片的增删改操作
3)、只发送视频(点击相机图标)
本地相册选择、拍摄
视频时长验证
视频个数验证
视频大小验证
视频为空验证
视频预览增删改操作
4)、发送文本+图片 输入满足要求的文本,图片进行验证
5)、发送文本+视频 输入满足要求的文本,视频进行验证
6)、发送图片+视频 不支持发送
7)、朋友圈发送内容是否有限制,例如黄赌毒等敏感内容
8)、所在位置验证
不显示位置,发送到朋友圈动态不显示位置
选择对应位置,搜索支持、自动定位、手动编辑
点击取消,返回上一级页面
9)、谁可以看(朋友圈权限设置)
设置公开,所有朋友可见
设置私密(仅自己可见):自己查看朋友圈可见,好友查看朋友圈不可见。
设置部分可见(部分朋友可见):选择部分好友可见;不选择的好友不可见;是否有人数限制;
设置不给谁看(选中的朋友不可见):不选择的朋友可见;选中的朋友不可见;是否有人数限制;
取消操作后,返回发送页面
10)、提醒谁看
提醒单人、提醒多人,是否有人数上限;被提醒的朋友,收到提醒消息;未被提醒,未有消息提醒。
点击取消,返回发送页面。
11)、同步QQ空间
默认不同步
同步到QQ空间
12)、取消操作
1、选择相机,点击取消,返回朋友圈页面
2、进入朋友圈发送页面,选择文本图片等,点击取消
13、朋友圈当天发送次数是否有上限限制
14、朋友圈显示设置
2、朋友圈浏览
(1)、文本查看
1)、过长文本内容是否隐藏,并支持查看全文和收起全文。
2)、右键选择复制、收藏、翻译
3)、URL链接是否支持点击跳转网页
(2)、图片查看
1)、小图右键支持收藏、编辑
2)、点击支持大图浏览
选择发送给朋友
选择收藏
选择保存图片
选择编辑
3)、多张图片支持左右滑动浏览
(3)、视频查看
1)、右键视频支持播放和收藏
2)、点击视频播放按键支持播放视频
选择发送给朋友
选择收藏
选择保存视频
选择编辑视频
(4)、分享动态浏览
1)、QQ空间、公众号文章、非腾讯产品分享后朋友圈是否正常显示
(5)、点赞
1)、点赞
2)、取消点赞
(6)、评论
1)、发表评论(评论字数限制)
纯数字
纯英文
纯字符
纯中文
纯表情(手机自带表情、微信表情)
数字+英文+字符+中文+表情
包含URL链接
文本是否支持复制粘贴
2)、评论超过字数限制
3)、为空验证
4)、发表评论后删除
5)、评论回复操作
(7)、删除朋友圈动态
(8)、更换相册封面
(9)、判断是否正常获取新动态
(10)上滑是否加载更多
二、界面/易用性测试
1、技术人员角度,页面布局设计是否跟产品原型图/UI效果图一致
2、用户角度,功能操作是否简单,页面布局排版风格是否美观合理,提示语相关信息是否易于理解。
三、中断测试
1、主要考虑:
a)核心功能
b)当前功能存在实时数据交换,例发朋友圈、浏览朋友圈进行中断,是否容易出现崩溃
2、中断包括:前后台切换、锁屏解锁、断网重连、app切换、来电话/来短信中断、插拔耳机线/数据线
四、网络测试
1、三大运营商不同网络制式测试
2、网络切换测试:WIFI/4G/3G/2G
3、无网测试:对于缓存在本地的数据,部分朋友圈信息是否支持浏览
4、弱网测试:
a、延时:页面响应时间是否可接受、不同网络制式是否区分超时时长、出现请求超时,是否给予相应的提示
b、丢包:有无超时重连机制、如果未响应,是否给予相应提示
c、页面呈现的完整性验证
五、兼容性测试
1、Android手机端、苹果手机端、pad版(主流)功能界面显示是否正常
2、各平台朋友圈展示数据是否一致
六、安全测试
发送朋友圈时,文本输入脚本代码,是否出现异常
七、性能测试
1、服务器性能测试
可通过loadrunner/jmeter工具实现,主要关注TPS、响应时间、吞吐量、CPU、内存等
2、app客户端性能测试
可通过GT工具实现,运行时关注cpu、内存、流量、电量等占用率
3、app压力稳定性测试
通过monkey工具实现,频繁发送朋友圈,浏览朋友圈请求,是否容易发生崩溃
1.功能测试
(1)选择符合要求的视频,上传--------上传成功;
(2)上传成功的视频、名称显示----------显示正常(根据需求)
(3)查看,下载上传成功的视频--------上传的图片可查看或下载(根据需求)
(4)删除上传成功的视频-------------可删除(根据需求)
(5)替换上传成功的视频-------------可替换(根据需求)
(6)上传视频是否支持中文名称--------根据需求而定
(7)视频路径检查是否可手动输入----------根据需求而定
可手动输入:
手动输入正确且不存在的视频路径,上传-----上传成功
手动输入正确且存在的视频路径,上传-----上传成功
手动输入错误的视频路径,上传-----提示,不能上传
不可手动输入:
选择自动带出的视频路径,上传-----上传成功
按F12篡改正确的视频路径,上传-----上传成功
按F12篡改错误的视频路径,上传-----上传失败
2.视频大小测试
(1)符合格式,总大小稍小于限制大小的视频------上传成功
(2)符合图片,总大小等于限制大小的视频--------上传成功
(3)符合图片总大小稍大于限制大小的视频--------在上传初提示附件过大
(4)视频大小超过存储剩余空间
(5)视频上传时,存储空间已满
3.视频名称测试
(0)视频名称命名符合要求与命名不符合要求。
(1)视频名称过长。
(2)视频名称达到最大长度(中文,英文或混在一起)上传后名称显示,页面排版-----------页面显示正常
(3)视频名称中包含特殊字符-------------根据需求而定
(4)视频名全为中文--------------------根据需求而定
(5)视频名全为英文--------------------根据需求而定
(6)视频名为中、英混合-----------------根据需求而定
4.视频类型测试
(1)上传正确格式-----------------上传成功
(2)上传不允许的格式--------------提示不能上传
5.视频内容测试
(1)视频内容相同,名称相同,上传-----------------上传成功
(2)视频内容不同,名称不同,上传--------------上传成功
(3)视频内容不同,名称相同--------------根据需求而定
(4)视频内容相同,名称不同--------------根据需求而定
6.安全性测试
(1)上传时服务器空间已满----------------------有提示
(2)上传时服务器验证--------------------------所有的验证都在服务端,不能在客户断验证
(3)上传时绕过验证,替换j_sessionid-----------验证失败 【抓包--修改数据--发送回服务器】
(4)上传时绕过验证,删除j_sessionid-----------验证失败 【抓包--删除数据--提交给服务器】
7.性能测试
(1)上传时网速很慢(限速)-----------------当超过一定时间,提示
(2)上传过程断网--------------------------有提示是否上传成功
(3)上传过程服务器停止工资------------------有提示是否上传成功
(4)上传过程服务器的资源利用率---------------在正常范围
(5)发送多个上传请求
(6)对接口进行压力测试
(7)响应时间、吞吐量、并发数记录
8.接口测试
(1)接口参数化:特殊字符、参数类型、参数有、无、null、必选参数、组合参数、边界值
(2)接口功能测试: 业务流程---------正常场景、异常场景
(3)接口性能:响应时间、吞吐量、并发数
(4)接口安全:敏感信息加密、必要参数后端验证、接口防恶意修改
9.界面测试
(1)界面美观性、易用性(键盘和鼠标的操作、tab跳转的顺序是否正确)----------显示正常(根据需求)
(2)按钮文字是否正确--------------正确
(3)正确/错误提示的文字是否正确---------------正确
(4)说明性文字是否正确-----------------------正确
(5)上传响应时间检查
(6)上传页面显示和控制检查
10.其他测试
(1)有多个上传框时,上传相同名称的视频---------------根据需求而定
(2)上传一个正在打开的视频-------------------------可以上传
1)强制升级是否可以升级成功
从老版本的包升级到新版版的包是否可以升级成功。
2)升级后的数据是否正常
查看老账户升级后是否可以正常使用
查看老账户升级后的老数据是否丢失或异常
检查新功能替换老功能 是否按最新的逻辑执行
检查旧版本上去掉或者隐藏的功能 对新版本有没有影响
3)强制升级的弹窗是否可以关闭
检查强制更新窗口有没有其他可以关闭的按钮或功能,比如弹框右上方的关闭按钮没有影藏,点击背景阴影弹框消失等。
4)提示强制更新的提示
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
一、GET和POST的区别:
1. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。 2. Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。 3. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。 4. Get执行效率却比Post方法好。Get是form提交的默认方法。
五、TCP和UDP的区别?
①UDP是数据包协议,不需要建立连接,不可靠协议,速度快,效率高
②TCP传输控制协议,需要建立连接,可靠协议,效率会稍低
六、线程的生命周期?
线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。
新建:就是刚使用new方法,new出来的线程;
就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;
运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;
阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调用notify或者notifyAll()方法。唤醒的线程不会立刻执行run方法,它们要再次等待CPU分配资源进入运行状态
销毁:如果线程正常执行完毕后或线程被提前强制性的终止或出现异常导致结束,那么线程就要被销毁,释放资源;
B/S 和 C/S的 区别:
B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢C/S响应速度快,安全性强,一般应用于局域网中,因为要针对不同的操作系统,需要针对性的开发,并且维护成本高
app和web区别
,App的安装卸载:全新安装,升级安装,第三方工具安装,第三方工具卸载,直接卸载删除,消息推送测试,手机授权测试,前后台切换,网络环境(wifi/2G/3G/4G/无网络)。
3,App的中断测试:来电中断,短信中断,蓝牙,闹钟,拔插数据线,手机锁定,手机断电,手机问题(系统死机重启)。
4,兼容性测试:Web项目考虑不同浏览器的兼容,app需要考虑手机不同的操作系统,不同机型,不同屏幕等。
5,网路测试:不同网络与运营商,目前我国有三大运营商如:电信,移动,联通,不同的网络制式,如:GSM,CDMA,3G等,在不好或无网络的情况下的APP行为。
6,操作系统:大量的设备,各种的操作系统,目前使用最多的操作系统有:
Android,ios,windows,blackberry等,它们之间的应用软件互不兼容。
如设备不同:触摸式与非触摸式设备,有限的内存容量,电池耗电量,屏幕尺寸,分辨率等。
区分前后端bug
软件测试过程中经常被问到怎么判断是前端问题还是后端问题,主要是通过抓包查看请求响应是否与接口文档一致。
1.如果请求数据与接口文档不一致,则是前端问题
2.如果请求数据与接口文档一致,响应数据与接口文档也一致,则是前端问题
3.如果请求数据与接口文档一致,响应数据与接口文档不一致,则是后端问题
状态异常根据返回的状态码区分是哪端的bug
1.500后端接口异常,一般是后端bug
2.502/504一般为服务器异常,所以既不是前端也不是后端,是服务器出问题了
3.404有可能是服务器异常,也有可能是后端异常,首先排查url地址是否正确,再排查服务其运行是否正常,如果以上都正常,则大概率为后端bug
4.400一般为前端bug
5.前端有数据但不符合预期结果,查看调用接口返回数据,对照api文档验证对应字段的值是否正确,如果正确,确定为前端bug,如果不符合,排查数据库对应字段是否与后端返回数据一致,例:前端要求传0作为无效参数,前端传null就是前端bug,前端可能说后端可以banull处理为0,技术上也没问题,但是不符合规定
登录页面测试点
一、基本功能测试点:
输入正确的用户名和密码登录成功
输入错误的用户名密码登录失败
用户名正确,密码错误,是否提示输入密码错误?
用户名错误,密码正常,是否提示输入用户名错误?
用户名和密码都错误,是否有相应提示?
用户名密码为空时,是否有相应提示?
如果用户未注册,提示请先注册,然后进行登录
已经注销的用户登录失败,提示信息友好?
密码框是否加密显示?
用户名是否支持中文、特殊字符?
用户名是否有长度限制?
密码是否支持中文,特殊字符?
密码是否有长度限制?
密码是否区分大小写?
密码为一些简单常用字符串时,是否提示修改?如:123456
密码存储方式?是否加密?
登录功能是否需要输入验证码?
验证码有效时间?
验证码输入错误,登录失败,提示信息是否友好?
输入过期的验证能否登录成功?
验证码是否容易识别?
验证码换一张功能是否可用?点击验证码图片是否可以更换验证码?
用户体系:比如系统分普通用户、高级用户,不同用户登录系统后可的权限不同。
如果使用第三方账号(QQ,微博账号)登录,那么第三方账号与本系统的账号体系对应关系如何保存?首次登录需要极权等
二、页面测试:
登录页面显示是否正常?文字和图片能否正常显示,相应的提示信息是否正确,按钮的设置和排列是否正常,页面是否简洁壮观等。
页面默认焦点是否定位在用户名的输入框中
首次登录时相应的输入框是否为空?或者如果有默认文案,当点击输入框时默认方案是否消失?
相应的按钮如登录、重置等,是否可用;页面的前进、后退、刷新按钮是否可用?
快捷键Tab,Esc,Enter 等,能否控制使用
兼容性测试:不同浏览器,不同操作系统,不同分辨率下界面是否正常
三 、安全测试:
不登录:浏览器中直接输入登录后的地址,看是否可以直接进入
登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)
用户名和密码是否通过加密的方式,发送给Web服务器
用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证
用户名和密码的输入框,应该屏蔽SQL 注入攻击
用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
错误登陆的次数限制(防止暴力破解)
考虑是否支持多用户在同一机器上登录;
考虑一用户在多台机器上登录
四、性能测试:
单用户登录系统的响应时间是否符合"3-5-8"原则
用户数在临界点时并发登录是否还能符合"3-5-8"原则
压力:大量并发用户登录,系统的响应时间是多少?系统会出现宕机、内存泄露、cpu饱和、无法登录吗?
稳定性: 系统能否处理并发用户数在临界点以内连续登录N个时的场景?
五、其它测试:
连续输入3次或以上错误密码,用记是否被锁一定时间(如:15分钟)?时间内不允许登录,超出时间点是否可以继续登录。
用户session过期后,重新登录是否还能重新返回这前session过期的页面?
用户名和密码输入框是事支持键盘快捷键?如:撤销、复制、粘贴等等
是否允许同名用户同时登录进行操作?考虑web和app同时登录
手机登录时,是否先判断网络可用?
手机登录时,是否先判断app存在新版本?
是否支持单点登录?
41,请说几个常见的状态码?
答:
200:请求发送成功。
302:代表重定向。
400:客户端发送的请求语法错误。
401:请问的页面没有授权。
403:没有权限访问这个页面。
404:没有这个页面。
500:服务器内部异常。
501:当前不能处理客户端的请求。
504:服务器端超时,没返回结果。
性能关注指标
QPS:Queries Per Second,意思是每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数),显然,这个不够全面,不能描述增删改,所以,不建议用qps来作为系统性能指标
并发数: 系统同时处理的request/事务数
响应时间: 一般取平均响应时间
吞吐量
TPS:Transactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可以一个接口、多个接口、一个业务流程等等。一个事务是指事务内第一个请求发送到接收到最后一个请求的响应的过程,以此来计算使用的时间和完成的事务个数。
错误率
安卓和ios的测试区别
1、安卓手机针对每一款手机有不一样的操作;苹果手机操作习惯单一。
2、多分辨率测试,Android端20多种,ios较少;
3、操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);
4、操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等;
5、push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);
6、安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载;
7、升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)
left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
订单的状态
1、订单提交成功 此时的订单状态默认为未确认;
那么它的生命周期正如上图中提交订单,它是单线操作,当支付成功,平台通过异步处理,回调机制获取到已支付成功。此生命周期结束;
2、支付成功 此时订单状态为已确认;
这个时候买家已付款,同步处理为客户显示订单号码,订单信息等。查看客户订单是否需要拆单(可能是多家的商品,不同的商品),安排发货,当客户确认收货,此生命周期结束
3、当订单提交成功以后24小时未支付 此时订单状态为无效;
这个时候卖家未付款,可能在继续选购其他商品,也可能在找同类商品进行对比,导致最后没有付款,当时下订单的我们使用cookie存储订单创建时间,这个时候我们在后台可以设置消息模板,提醒用户是否付款,如果24小时未付款,则取消其的订单状态,生命周期结束。
4、当在订单列表页面 点击取消订单并执行成功以后 此时订单状态为已取消(京东此处的做法是判断此订单是否支付,如果此订单已支付,此处有退款流程);
注:特殊订单状态:
订单锁定:用户对售前订单进行取消时
等待审核:用户对售前订单进行取消后
订单解锁:用户对售前订单进行取消后客服审核未通过时
已取消:用户对售前订单进行取消后客服审核通过时或拒收、售后退款完成后
软件生命周期
需求设计->需求分析->软件设计->程序编码->软件测试->运行维护
pytest和unittest的区别
unittest用例格式复杂,兼容性无,插件少,二次开发方便。pytest更加方便快捷,用例格式简单,可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。
列表,元组,字典,集合的区别
1.列表,元组,字典是有顺序的,而集合是没顺序的
2.列表是以方括号形式表示,元组是以圆括号表示,字典以花括号表示,集合则是以[()]的形式表示
3.列表是可变对象,它支持在原处修改的操作.也可以通过指定的索引和分片获取元素。区别于元组,可动态增加,删除,更新。
4.元组和列表在结构上没有什么区别,唯一的差异在于元组是只读的,不能修改。元组用“()”表示。元组一旦定义其长度和内容都是固定的。一旦创建元组,则这个元组就不能被修改,即不能对元组进行更新、增加、删除操作。若想创建包含一个元素的元组,则必须在该元素后面加逗号“,”,否则创建的不是一个元组,而是一个字符串。
5.集合没有特殊的表示方法,而是通过一个set函数转换成集合。集合是一个无序不重复元素集,基本功能包括关系测试和消除重复元素.。
6.字典最大的价值是查询,通过键,查找值。