1.测试分为哪几个阶段?
①单元测试,集成测试------一般由开发人员完成
②系统测试和验收测试------一般由测试人员完成
2.如何编写测试计划
5w原则:
①What:测试的内容是什么
②Why:测试的目的是什么?---性能:得到的指标;功能:啥时候测完
③When:项目的开始截至日期
④How:明确测试方案(化,手工,兼容,性能)
⑤Where:明确资料位置---需求文档的存放地址,测试用例的存放地址,bug系统的地址等等
3.常用的测试用例设计方法有哪些?
①等价类划分
②边界值
③错误推测法:输入空格,或者什么都不输入
④正交表分析法:横坐标:浏览器的top;纵坐标:手机品牌,操作系统,分辨率;最终选择需要的手机
⑤场景分析法:
⑥因果图:
4.如何分层自动化测试?
①UI自动化回归
②接口自动化
③单元测试--白盒测试
5.如何保证脚本的有效性?
①保证定位有效性,封装处理异常
②保证流程的有效性,封装独立方法
③保证数据有效性,数据备份与恢复
6.UI自动化:针对不长变动的页面
②接口自动化:周期短,变动频繁---经常提测需要经常测试的
③框架分层:用例与框架分离
7.常见测试覆盖类型?---白盒测试
①语句覆盖
②判定/条件覆盖
③ 条件组合覆盖
④路径覆盖
8.B/S,C/S架构什么区别
CS架构:客户端软件
BS架构:网站
9.安全性测试包含哪些内容?
①用户访问认证
②传输数据加密
③安全防护策略:如日志安全,入侵检测,隔离防护,漏洞扫描
④数据的备份与恢复
⑤防病毒系统
⑥ Sql注入,JS注入
10.测试报告包含哪些内容呢?
①测试背景说明
②测试范围说明
③测试环境说明
④测试方法说明
⑤测试结果结论说明
⑥质量或风险说明
11.Alpha测试和Beta测试的区别?
Alpha测试:在开发环境进行测试
Beta测试:在真实环境测试,测试通过后进入发布阶段
12.bug的类型有哪些?
①Bug:由于代码编写错误导致的功能问题
②Defect即缺陷,实现与需求不一致
③Fault即故障,由于环境,系统问题引起运行失败
④Error即错误,语法错误,逻辑错误,不易被发现----不影响用户使用,但是会抛出异常
13.面向对象的概念?
简称OOP,是一种程序的设计思想
对象是一个类的实例,类是一系列事务的统称
主要包括:类,继承,多态,实例,属性,方法
14.进程,线程,协程
进程:有独立数据空间,进程间不共享数据,由系统调度
线程:执行程序的最小单元,进程内线程间资源共享,由系统调度
协程:程序员调度,分解一个线程成为多个“微线程”
15.如何使用python实现socket编程?
①Socket又称套接字,应用程序通过套接字向程序发送请求
②应用程序通过套接字应答网络请求
③主机间或者一台计算机上的进程间可以通讯
16.lambda函数,元组,列表
lambda匿名函数:
r = lambda x :x * 2
print r(10)
元组:里面的元素不可更改,但可更改整个元素内容
列表:元素可更改
17.range函数的用法
①返回一系列连续增加的整数
②工作方式类似于分片
③可以生成一个列表对象
ps: list = range (0 , 51) 输出0~50的数
print(list)
18.字符串的拆分方法?
① string 对象的split 方法,不允许有多个分隔符,
②函数 re.split(),允许为分隔符指定多个正则模式
19.单引号,双引号,三引号的区别
单双没区别,三引号可以换行
20.* args 、 *kwargs 有什么用?
* args :可变参数列表
*kwargs:键值对参数列表
21.python 中的PASS语句的作用
占位符,实现一个空函数
PS: def student():
pass
student() 一个空函数,不输入pass就会报错
22.re模块中match和search方法的不同?
import re
a1 = "sgksajglkasjg"
a2 = "kjgklsdjlgkjals"
a3 = "dglkjaslkgjasklg"
print(re.match(a1 , a2)) -----只从字符串的开始位置开始匹配
print(re.match(a1 , a2) .group())
print(re.search(a2 , a1)) -----查询整个字符串
print(re.search(a2 , a1).group)
23.WSGI、FastCGI的关系?
CGI:公共网关接口
HTTP服务器于机器与的程序进行交互的一种工具
程序必须运行在网络服务器上,和语言无关
WSGI:python web server gateway interface
python 服务器与web服务器之间的一种接口
FastCGI,像一个常驻型的CGI,可以一直执行着
24.python是如何操作文件的?
①打开文件
②写入或读取数据
③关闭文件
25.兼容性测试需要考虑哪些因素?
APP兼容性测试
①系统版本(Andorid Ios)不同版本
②分辨率:(小屏,大屏,全屏)
③android手机品牌(华为,小米,OPPO,VIVO)
Web兼容性测试
1.不同平台的不同浏览器(safari ,chrome)
2.分辨率(大屏,小屏,全屏),是不是折行
3.是否允许转发,比如转发到第三方软件,qq,微信,微博等,转发后打开是否可以正常展示
PC页面兼容性测试
1.操作系统:windows,mac,os 平板电脑
2.浏览器(IE系列,火狐,chrome)等等
3.分辨率(笔记本,台式机,窗口缩放等)
26.ADB相关问题
1)Android的四大组件是什么?
①Activity:用户和程序的交互窗口
②Service:在程序后台,完成用户操作
③ContentProvider:提供数据的统一访问格式
④BroadcastReceiver:应用程序之间传输信息的机制
1)Activity的生命周期是什么?
Actived:激活
Paused:暂停状态---弹出对话框,看是否进一步操作
stop:停止状态
killed:被杀掉的状态
---------------------------
2)如何重启adb服务?
adb start-server
adb kill-server
2)app的安装与卸载
adb - s 设备名称 install 文件路径-----安装
adb - s 设备名称 install - r文件路径---覆盖安装
adb -s 设备名称 uninstall 包名---卸载
adb devices ----获取当前连接设备的名称
adb logcat | findstr(grep ----linux) START ---获取安装apk的包名
3)adb push D:\test.apk / data /local /tmp/test.apk 把包导入手机系统
4)adb pull / data /local /tmp/test.txt D\: 把手机系统文件导入PC
adb shell 进入手机目录
cd /data /local /tmp /
ls 查看该目录下所有文件
5)如何静默安装app?
adb shell pm install -f /data /local/tmp /test.apk
6)如何使用adb启停一个app?
7)如何使用adb命令启动或者停止app
①adb shell am start -w-s package/activity
②adb shell am force-stop package
8)通过某个关键字查找已安装的包
①adb shell pm list package -f keyword
②abd shell pm list package -3 keyword ---第三方自带的包
③adb shell pm list package -i keyword ----查找已安装的包
④adb shell pm list package ---查询设备安装的所有包名
9)如何截屏,录屏
①adb shell screencap /data /local /tmp /scree.png
②adb shell screenrecord /data /local /tmp /demo.mp4
10)如何抓取locat日志
①adb locat
②adb shell locat
11)如何获取当前CPU,内存状态
①adb shell dumpsys meminfo package
②adb shell dumpsys cpuinfo | findstt package
27.monkey相关
1)如何让monkey执行指定事件
①触摸事件:pct- touch
②动作事件:pct-motion
③轨迹球事件:pct-trackball
④基本导航事件:pct-nav
⑤主要导航事件:pct-majornav
⑥系统导航事件:pct-syskeys
⑦应用启动事件:pct-appswitch
⑧其他类型事件:pct-anyevent
2)monkey测试命令总结
and shell monkey -v -v -v -s 6789 --throttle 300(设置执行的频率为多少毫秒) --ignore-crashes --ignore-timeouts --pct-touch 100 -p 包名 100(随机数)
获取日志 重定向 > monkey.log
cat monkey.log
Linux基本命令
mv 移动或重命名
rm -r 递归删除
rm-f 强制删除
wc 统计文本中行数,字数,字符数
28.fiddler工具
1)如何使用fiddler抓取手机上的数据包?
️pc端设置,设置端口号
️手机端设置,设置Wi-Fi,设置代理
2)数据包中都包含哪些内容?
️状态码、协议类型
️request(header:user-agent,cookies,referer)
️response(header,data)
3)如何设置Autoresponder?
️抓取请求
️制作数据
️设置规则
4)如何使用fiddler发送get/post请求?
️构造url(get&post)
️构造参数(get&post)
5)如何使用fiddler构造慢网络?
️rules-performances-simulate modem speeds
️修改代码,配置需要的配速
6)如何使用fiddler抓取https包?
️fiddler https相关设置
️在浏览器中安装证书
29.postman工具
1)如何使用postman发送get/post请求?
2)如何为postMan用例填写检查点?
3)如何使用postman批量运行测试用例? ·
30.基于python常见算法有哪些?
1)排序
①从小到大排序:sorted(list)
list = [0,3,6,2,5,1,9]
print(sorted(list))t
②从大到小排序:sorted(list,reverse = ture)
list = [0,3,6,2,5,1,9]
print(sorted(list,reverse = ture))
③改变列表原有顺序并按排序后样式展示
list = [0,3,6,2,5,1,9]
list.sort()
print(list)
2)冒泡
①比较相邻得元素,如果第一个比第二个大就交换
②一轮遍历,每两相邻元素,重复1,最大放在队尾
③不包括已经排队尾的,重复2
3)快排
①从列表中挑出一个元素,作为基准值key
②所有小于key的元素放在左边,所有大于key的元素放在右边
③分别递归左侧列表,右侧列表
4)堆排序
5)二分查找
6)素数
31.Linux相关
1)基础命令
①cd切换目录
②ls -l 列出文件详细信息 ls - a 列出当前目录下所有文件
③touch 创建文件 mkdir 创建目录
④echo 创建带有内容的文件
⑤cat 查看文件内容
echo "hello world" > mookhello
cat mookhello ---展示“hello world”
⑥cp 拷贝
⑦mv 移动或重命名
⑧rm -r 递归删除 ;rm -f 强制删除
⑨wc 统计文本中行数,字数,字符数
⑩grep 在文本文件中查找某个字符串
tree 显示目录结构
ln 创建软链
more 、 less 分页显示文本内容
head 、 tail 显示文件头尾内容
2)网络命令
①curl 利用 UIL 规则在命令行下工作的文件传输工具
curl http://www.baidu.com
②netstat 显示网络状态信息
telnet 127.0.0.1
③telnet 用于远程登录主机
netstat 所有的网络链接状态
3)系统命令思
① ping 测试网络连通
ping www.baidu.com
② man 查看帮助
man ping -----ping的常用命令
③ kill 杀死进程
kill pid(38970)
④当前正在运行的进程
top
⑤ps显示瞬间进程状态
⑥ df 查看磁盘大小 df -h 带有单位显示磁盘信息
2.计算机网络相关的问题
1)OSI 七层模型的具体内容
物理层:建立,维护,断开物理连接
数据链路层:逻辑连接,硬件地址寻址,差错校验
网络层:逻辑地址寻址,不用网络之间的路径选择,IP
传输层:传输数据的协议,TCP(确定地址已经连接),UDP(只确定目的地进行传输,可能出现丢包,无法传输)
会话层:建立,管理,终止会话,本地与远程主机的会话
表示层:数据的标示,安全,压缩,JPEG,ASCII等
应用层:与最终用户的连接,HTTP ,HTTPS ,SMTP
2)http 协议中get 和 post的区别
①功能差异
get 是客户端去服务端取东西
post 客户端提交东西至服务端
②数据传输
get:在Url 里带参数传输给服务端,服务端根据传输的内容返回值
post:把数据放在body里传输给服务端
③安全性
get不安全,参数存在url里
post安全,传输参数在url不可见
3)tcp 和 udp 的区别
4)tcp 连接三次握手具体过程
5)socket 建立连接的过程
①服务器建立监听,socket,bind,listen
②客户端发送请求,connect,send
③连接确认,accept,response