一、计算机系统
计算机历史:四个阶段
操作系统
移动端系统:Android和IOS
PC端系统:Windows、Linux、macOS、Unix
Linux
Linux分类:ubuntu、CentOs、Redhat
虚拟机的安装:VMware,激活
虚拟机创建:
Linux命令
目录切换:
切换到根目录:cd /
切换到上一级目录:cd ../
切换用户主目录:cd ~
切换到指定目录:cd /usr
目录
创建目录:mkdir 目录名称
删除目录:rm -rf 目录名称
移动目录:mv 被移动目录 目标位置目录
复制目录:cp -r 被复制目录 目标位置目录
查看目录:ls 、 ls -a 、 ls -l (ll)
修改目录:mv 修改前名称 修改后名称
查找目录:find 目录,find / · 目录名称
Linux环境配置
ssh安装
jdk
卸载
解压jdk到/usr/local/jdk/
修改配置文件
重新加载配置文件
MySQL安装
centos6:client、server,service mysql start
centos7:依赖、common、lib、client、server,service mysqld start
Tomcat
解压、开放端口
Jenkins
持续化集成工具
二 、shell脚本
变量
定义变量 : 变量名=值
输出:echo
双引号:遇到$输出变量值,但是有\被处理为字符串
单引号:遇到$默认字符串:'$a'
Linux命令:用反单引号`包裹
脚本输出当前目录
#!/bin/bash
dir=`pwd`
echo$dir
输入、输出、调用
echo
read
./sh
参数的传递
格式:sh a.sh 参数列表
$1:接收第一个参数~~$n
$n: 文件名称
$@: 所有参数 s
$#: 参数个数$0
运算符
逻辑 -a -o !
比较 < > =
数字
-eq
-ne
-gt
-ge
-lt
-le
字符串
==
!=
if
单条件语句
if[ 条件 ]
then
操作语句
else
操作语句
fi
多条件语句
if[ 条件 ]
then
语句
elif[ 条件 ]
then
语句
.
.
.
else
语句
fi
case
case"$变量名"in
"A")
语句;;
.
.
.
esac
for
foriin124
foriin`seq 开始值 间隔 结束值`
注意:如果间隔为1,可以省略
while
while[ 条件 ]
do
语句
done
函数
先定义再调用:
参数:
返回值:$?,0代表没问题,1代表代码有问题
三、 Jmeter
下载、配置、安装
线程组
进程、线程、线程组
创建:测试计划 → 添加→ 线程 → 线程组
三个参数:线程数、准备时长、循环次数
取样器
http请求:指定域名、路径、端口、方法、指定参数、协议
监听器:
查看结果树
聚合报告
用图标看结果
逻辑控制器
循环控制器
事务控制器
断言
预先判断可能会出现字符串,如果匹配成功断言成功,否则断言失败
响应断言
JSON断言
处理器:前置和后置
定时器:控制两个请求之间间隔
组件参数化
自定义变量
添加 → 配置元件 → 用户定义变量
定义一个变量并赋值
在http请求中调用变量${变量}
引用文件中的变量
添加 → 配置元件 → CSV Data Set Config
设置线程组的线程数
文件路径、编码、变量、遇到文件结束符(true、false)
在http请求调用第二步中定义变量
数据库导出TXT文件
jmeter函数助手
工具 → 函数助手 → 选择CSVRead → 文件路径(必须在bin)列名(0,1,2)→ 生成
把生成的码复制到HTTP请求界面参数
脚本录制
移动端录制:
保证同一网络
jmeter → 测试计划 → 添加非测试元件 → Http服务代理 → 设置端口
手机设置端口和IP
启动
手机请求网络
PC录制:badboy
jmeter压测
为什么做压测
数据库压测
服务器压测
四、 python
下载、安装、第一个程序
变量
数据类型
标识符组成、规则
注释
#单行注释
'''
多行注释
'''
关键字
全局变量:在方法中使用global修改
局部变量:就近原则
输入和输出
input
print:
自动换行
格式:%s
运算符
比较
赋值
逻辑
算术
判断
if
if else
if elif else
循环
while
i=1
whilei<=9:
j=1
whilej<=i:
print("%d*%d=%d"%(j,i,i*j),end=" ")
j+=1
print("")
i+=1
for
字符串
表示:‘’ 和“”
方法:replace、[1,3]、拼接、大小写转换、endwith、startwith、in、not in
列表
格式:[]
新增:append、extend、insert
修改:
列表名[2] =""
删除:
1.del
# 粉碎
dellist
# 指定删除某个下标的元素
dellist[0]
2.pop
# 删除最后一个
list.pop()
3.remove
list.remove(列表中元素,否则报错)
查询
index:某个元素的索引
count:某个元素出现个数
排序:
sort:升序
reverse:反转
降序?
循环取值
for
while
列表嵌套
[[],[],[]]
案例大学掌握
元组(不能修改)
格式:()
访问:索引
查询个数:count
查询索引:
转换
元组转为列表:list(tuple)
列表转为元组:tuple(list)
循环取值
for
while
字典
格式:变量名={key1:value,key2:value,,,}
访问
##1. info[]
# 键存在
info[key]
# 键不存在报错
##2. info.get(key)
## 存在返回
## 不存在返回none或者默认值
info.get(key,默认值)
修改元素
有key,修改key对应的值
无key,在最后新增
删除
del
deldir:粉碎
del dir[key]
clear
清除内容
查询长度:len
循环取值
info.keys()
info.values()
info.items()
集合
格式:set(),{}
add:set.add(元素)
updata:nums.update(nums2)
删除
remove:nums.remove(元素),存在删除,不存在报错
pop:随机删除一个
discard:nums.discard(元素),存在删除,不存在不做任何操作
交集:&
并集:|
函数
格式
# 定义函数
deffun():
语句
# 调用函数
fun()
参数:参数默认值,如果传值用传过去的值,否则使用默认值
返回值:return
函数嵌套
文件
模式:6个(r,w, a,rb,wb,ab)
打开:open
写入:f.write(路径,'w')
读取:f.read(路径,'r')
关闭:close
重命名:os.rename('旧的','新的‘)
删除:os.remove('文件名')
创建:os.mkdir
获取当前目录:os.getcwd()
异常
什么是异常
解决
try except else
try finally
模块
import:使用文件名调用里边方法、变量等的
from 模块 import:导入文件中具体东西
面向对象
类的组成:类名、方法、属性
创建对象:对象名=类名()
属性
实例属性:创建完对象以后直接创建属性
类属性:
初始化属性:构造方法中
访问限制:__,可以使用实例方法获取私有值
方法
实例方法
类方法:@classmethod
继承
概念
继承特点:父类的方法和属性都会被继承
单继承:只有一个父类
多继承:有多个父类
多重继承:一个继承一个继承一个
方法重写:重写父类方法,可以改良
多态
五、单元测试 - Unittest
UnitTest组成
testFixture
testCase:方法名必须是 test开头
testSuite
testRunner
断言
assertEqual()
生成测试报告
下载一个文件
使用
withopen("../report.html","wb")asf:
HTMLTestRunner(
stream=f,
title="单元测试",
description="测试一期",
verbosity=2
).run(suite)
读取csv数据
创建CSV文件并添加数据
创建读取CSV文件的文件
importcsv
classReadCsv():
defreadCsv(self):
item= []
content=csv.reader(open("../data/cvs.csv","r"));
foriincontent:
item.append(i)
returnitem
r=ReadCsv()
print(r.readCsv())
在测试类中调用即可
xml读取
创建xml文件
编写读取xml文件的文件
调用
六、单元测试 - Pytest
概念
命名:类名和方法名必须以test开头
自动生成测试报告
方式一
pytest.main(["--html=./report.html","模块.py"])
方式二
pytest.main([‘--html=./report.html’,‘模块.py::类::test_a_001'])
方式三
pytst.main(['-x','--html=./report.html','t12est000.py'])
-x:出现一条测试用例失败就退出测试
-v:丰富信息模式, 输出更详细的用例执行信息
-s:显示print内容
-q:简化结果信息,不会显示每个用例的文件名
pytest运行方式
.
F
E
文件读取
读取csv
创建csv文件
读取csv文件:
importcsv
item= []
content=csv.reader(open("路径","r"));
foriincontent:
item.append(i)
returnitem
读取xml
创建xml文件
读取
fromxml.domimportminidom
root=minidom.parse(路径)
first=root.getElementsByTagName(节点名)[0]
second=first.getElementsByTagName(节点名)[0].firstChild.data
returnsecond
Allure
概念:生成测试报告框架
使用:配置环境变量、下载allure-pytest插件、四个特性
七、requests接口请求
概念、添加插件
get和psot请求
无参
有参
响应
text
content
json
headers
cookies
encoding
扩充
超时
请求头
文件
requests+pytest+allure
读取cvs文件生成测试报告
读取excel表格生成测试包好
八、自动化持续集成
配置ant软件:ant环境变量、test文件的处理、build.xml文件编写、修改jmeter的配置文件、jmeter的jar包复制到ant/lib
tomcat:配置环境变量
Jenkins
放到Tomcat的webapps
重启Tomcat
下载插件、配置账号密码
创建一个项目
项目名称和风格
构建触发器:5个参数的含义
构建:高级→build.xml
项目git路径填写
构建
查看日志
九、web自动化测试基础阶段
为什么要自动化测试
自动化测试好处、分类
自动化测试的使用前提和场景
web自动化常用的工具:selenium
元素定位
xpath:获取元素
css_selector
十、web自动化测试高级
面试题
数据库-查询
Linux命令(25)、环境搭建
写脚本
App与web测试的区别
能接受加班吗
地址
http请求方法