一、計算機系統(tǒng)
計算機歷史:四個階段
操作系統(tǒng)
移動端系統(tǒng):Android和IOS
PC端系統(tǒng):Windows、Linux、macOS、Unix
Linux
Linux分類:ubuntu、CentOs、Redhat
虛擬機的安裝:VMware,激活
虛擬機創(chuàng)建:
Linux命令
目錄切換:
切換到根目錄:cd /
切換到上一級目錄:cd ../
切換用戶主目錄:cd ~
切換到指定目錄:cd /usr
目錄
創(chuàng)建目錄:mkdir 目錄名稱
刪除目錄:rm -rf 目錄名稱
移動目錄:mv 被移動目錄 目標位置目錄
復(fù)制目錄:cp -r 被復(fù)制目錄 目標位置目錄
查看目錄:ls 、 ls -a 、 ls -l (ll)
修改目錄:mv 修改前名稱 修改后名稱
查找目錄:find 目錄,find / · 目錄名稱
Linux環(huán)境配置
ssh安裝
jdk
卸載
解壓jdk到/usr/local/jdk/
修改配置文件
重新加載配置文件
MySQL安裝
centos6:client、server,service mysql start
centos7:依賴、common、lib、client、server,service mysqld start
Tomcat
解壓、開放端口
Jenkins
持續(xù)化集成工具
二 、shell腳本
變量
定義變量 : 變量名=值
輸出:echo
雙引號:遇到$輸出變量值,但是有\(zhòng)被處理為字符串
單引號:遇到$默認字符串:'$a'
Linux命令:用反單引號`包裹
腳本輸出當前目錄
#!/bin/bash
dir=`pwd`
echo$dir
輸入、輸出、調(diào)用
echo
read
./sh
參數(shù)的傳遞
格式:sh a.sh 參數(shù)列表
$1:接收第一個參數(shù)~~$n
$n: 文件名稱
$@: 所有參數(shù) s
$#: 參數(shù)個數(shù)$0
運算符
邏輯????????-a????????-o????????!
比較? ? ? ? ? <? ? ? >? ? =
數(shù)字
-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 開始值 間隔 結(jié)束值`
注意:如果間隔為1,可以省略
while
while[ 條件 ]
do
語句
done
函數(shù)
先定義再調(diào)用:
參數(shù):
返回值:$?,0代表沒問題,1代表代碼有問題
三、 Jmeter
下載、配置、安裝
線程組
進程、線程、線程組
創(chuàng)建:測試計劃 → 添加→ 線程 → 線程組
三個參數(shù):線程數(shù)、準備時長、循環(huán)次數(shù)
取樣器
http請求:指定域名、路徑、端口、方法、指定參數(shù)、協(xié)議
監(jiān)聽器:
查看結(jié)果樹
聚合報告
用圖標看結(jié)果
邏輯控制器
循環(huán)控制器
事務(wù)控制器
斷言
預(yù)先判斷可能會出現(xiàn)字符串,如果匹配成功斷言成功,否則斷言失敗
響應(yīng)斷言
JSON斷言
處理器:前置和后置
定時器:控制兩個請求之間間隔
組件參數(shù)化
自定義變量
添加 → 配置元件 → 用戶定義變量
定義一個變量并賦值
在http請求中調(diào)用變量${變量}
引用文件中的變量
添加 → 配置元件 → CSV Data Set Config
設(shè)置線程組的線程數(shù)
文件路徑、編碼、變量、遇到文件結(jié)束符(true、false)
在http請求調(diào)用第二步中定義變量
數(shù)據(jù)庫導(dǎo)出TXT文件
jmeter函數(shù)助手
工具 → 函數(shù)助手 → 選擇CSVRead → 文件路徑(必須在bin)列名(0,1,2)→ 生成
把生成的碼復(fù)制到HTTP請求界面參數(shù)
腳本錄制
移動端錄制:
保證同一網(wǎng)絡(luò)
jmeter → 測試計劃 → 添加非測試元件 → Http服務(wù)代理 →? 設(shè)置端口
手機設(shè)置端口和IP
啟動
手機請求網(wǎng)絡(luò)
PC錄制:badboy
jmeter壓測
為什么做壓測
數(shù)據(jù)庫壓測
服務(wù)器壓測
四、 python
下載、安裝、第一個程序
變量
數(shù)據(jù)類型
標識符組成、規(guī)則
注釋
#單行注釋
'''
多行注釋
'''
關(guān)鍵字
全局變量:在方法中使用global修改
局部變量:就近原則
輸入和輸出
input
print:
自動換行
格式:%s
運算符
比較
賦值
邏輯
算術(shù)
判斷
if
if else
if elif else
循環(huán)
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]、拼接、大小寫轉(zhuǎn)換、endwith、startwith、in、not in
列表
格式:[]
新增:append、extend、insert
修改:
列表名[2] =""
刪除:
1.del
# 粉碎
dellist
# 指定刪除某個下標的元素
dellist[0]
2.pop
# 刪除最后一個
list.pop()
3.remove
list.remove(列表中元素,否則報錯)
查詢
index:某個元素的索引
count:某個元素出現(xiàn)個數(shù)
排序:
sort:升序
reverse:反轉(zhuǎn)
降序?
循環(huán)取值
for
while
列表嵌套
[[],[],[]]
案例大學(xué)掌握
元組(不能修改)
格式:()
訪問:索引
查詢個數(shù):count
查詢索引:
轉(zhuǎn)換
元組轉(zhuǎn)為列表:list(tuple)
列表轉(zhuǎn)為元組:tuple(list)
循環(huán)取值
for
while
字典
格式:變量名={key1:value,key2:value,,,}
訪問
##1. info[]
# 鍵存在
info[key]
# 鍵不存在報錯
##2. info.get(key)
## 存在返回
## 不存在返回none或者默認值
info.get(key,默認值)
修改元素
有key,修改key對應(yīng)的值
無key,在最后新增
刪除
del
deldir:粉碎
del dir[key]
clear
清除內(nèi)容
查詢長度:len
循環(huán)取值
info.keys()
info.values()
info.items()
集合
格式:set(),{}
add:set.add(元素)
updata:nums.update(nums2)
刪除
remove:nums.remove(元素),存在刪除,不存在報錯
pop:隨機刪除一個
discard:nums.discard(元素),存在刪除,不存在不做任何操作
交集:&
并集:|
函數(shù)
格式
# 定義函數(shù)
deffun():
語句
# 調(diào)用函數(shù)
fun()
參數(shù):參數(shù)默認值,如果傳值用傳過去的值,否則使用默認值
返回值:return
函數(shù)嵌套
文件
模式:6個(r,w, a,rb,wb,ab)
打開:open
寫入:f.write(路徑,'w')
讀?。篺.read(路徑,'r')
關(guān)閉:close
重命名:os.rename('舊的','新的‘)
刪除:os.remove('文件名')
創(chuàng)建:os.mkdir
獲取當前目錄:os.getcwd()
異常
什么是異常
解決
try except else
try finally
模塊
import:使用文件名調(diào)用里邊方法、變量等的
from 模塊 import:導(dǎo)入文件中具體東西
面向?qū)ο?/p>
類的組成:類名、方法、屬性
創(chuàng)建對象:對象名=類名()
屬性
實例屬性:創(chuàng)建完對象以后直接創(chuàng)建屬性
類屬性:
初始化屬性:構(gòu)造方法中
訪問限制:__,可以使用實例方法獲取私有值
方法
實例方法
類方法:@classmethod
繼承
概念
繼承特點:父類的方法和屬性都會被繼承
單繼承:只有一個父類
多繼承:有多個父類
多重繼承:一個繼承一個繼承一個
方法重寫:重寫父類方法,可以改良
多態(tài)
五、單元測試 - Unittest
UnitTest組成
testFixture
testCase:方法名必須是 test開頭
testSuite
testRunner
斷言
assertEqual()
生成測試報告
下載一個文件
使用
withopen("../report.html","wb")asf:
HTMLTestRunner(
stream=f,
? ? title="單元測試",
description="測試一期",
verbosity=2
).run(suite)
讀取csv數(shù)據(jù)
創(chuàng)建CSV文件并添加數(shù)據(jù)
創(chuàng)建讀取CSV文件的文件
importcsv
classReadCsv():
defreadCsv(self):
item= []
content=csv.reader(open("../data/cvs.csv","r"));
foriincontent:
item.append(i)
returnitem
r=ReadCsv()
print(r.readCsv())
在測試類中調(diào)用即可
xml讀取
創(chuàng)建xml文件
編寫讀取xml文件的文件
調(diào)用
六、單元測試 - 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:出現(xiàn)一條測試用例失敗就退出測試
-v:豐富信息模式, 輸出更詳細的用例執(zhí)行信息
-s:顯示print內(nèi)容
-q:簡化結(jié)果信息,不會顯示每個用例的文件名
pytest運行方式
.
F
E
文件讀取
讀取csv
創(chuàng)建csv文件
讀取csv文件:
importcsv
item= []
content=csv.reader(open("路徑","r"));
foriincontent:
item.append(i)
returnitem
讀取xml
創(chuàng)建xml文件
讀取
fromxml.domimportminidom
root=minidom.parse(路徑)
first=root.getElementsByTagName(節(jié)點名)[0]
second=first.getElementsByTagName(節(jié)點名)[0].firstChild.data
returnsecond
Allure
概念:生成測試報告框架
使用:配置環(huán)境變量、下載allure-pytest插件、四個特性
七、requests接口請求
概念、添加插件
get和psot請求
無參
有參
響應(yīng)
text
content
json
headers
cookies
encoding
擴充
超時
請求頭
文件
requests+pytest+allure
讀取cvs文件生成測試報告
讀取excel表格生成測試包好
八、自動化持續(xù)集成
配置ant軟件:ant環(huán)境變量、test文件的處理、build.xml文件編寫、修改jmeter的配置文件、jmeter的jar包復(fù)制到ant/lib
tomcat:配置環(huán)境變量
Jenkins
放到Tomcat的webapps
重啟Tomcat
下載插件、配置賬號密碼
創(chuàng)建一個項目
項目名稱和風格
構(gòu)建觸發(fā)器:5個參數(shù)的含義
構(gòu)建:高級→build.xml
項目git路徑填寫
構(gòu)建
查看日志
九、web自動化測試基礎(chǔ)階段
為什么要自動化測試
自動化測試好處、分類
自動化測試的使用前提和場景
web自動化常用的工具:selenium
元素定位
xpath:獲取元素
css_selector
十、web自動化測試高級
面試題
數(shù)據(jù)庫-查詢
Linux命令(25)、環(huán)境搭建
寫腳本
App與web測試的區(qū)別
能接受加班嗎
地址
http請求方法