1、軟硬件的體系結構:
一、硬件體系: IPO
Input Process 處理 Output
輸入設備 ----- 主機 ----- 輸出設備
(鍵盤、鼠標等) (顯示器、打印機等)
(CPU、內存、硬盤)php
二、軟件體系:主流的B/S、C/S架構爲例 三層架構
如何搭建一個測試環境?
根據需求,具體問題具體分析css
被測系統 SUT
___________________________________
Client -網絡- Application Server -網絡- DB Server
客戶端 應用服務器 數據庫服務器
1)硬件
PC、移動設備 服務器、工做站、 服務器、工做站、
小型機 小型機
2)操做系統(系統軟件)
PC:Windows/Linux/Mac Linux/Unix Linux/Unix
移動:Android/IOS/WP
3)中間件(提供特殊的公共服務的軟件)
無 Web/應用服務器軟件 DBMS數據庫管理系統
Tomcat/Weblogic容器 Mysql/Oracle/DB2
4)應用程序
B/S: 瀏覽器 部署Web App 搭建數據庫
C/S: 各類App 企業級應用 維護表、數據等
請求Request ---> 處理 ------> 增刪查改
響應Response <--- <------html
提示:多和開發方溝通,共同搭建整個測試環境;
包括系統架構、需求方、產品經理、項目經理、測試經理、SA、DBA等,搭建環境是整個團隊的任務。
系統管理員 數據庫管理員java
2、Linux/Unix系統基本層次結構
從外到內:
應用程序(用戶)<-> Linux操做系統 <-> 硬件
(Shell <-> Kernel 內核)sql
一、shell (直譯:外殼) 命令解釋器(翻譯、解釋命令)
介於用戶和內核之間,提供與系統的命令交互;
shell自己也是一個進程,具備啓動的命令
表現形式:終端、命令行窗口
常見的shell: bash csh sh ksh ... (都是命令 可執行文件)
相似於Windows: cmd 命令行窗口
C:\windows\system32\cmd.exe 可執行文件
查看當前是什麼shell,使用查看進程的命令:ps
不加選項 -ef 只能查看部分進程:
進程id 僞終端號 啓動該進程的命令名
PID TTY TIME CMD
2487 pts/0 00:00:00 bash 當前默認shell進程
2523 pts/0 00:00:00 ps
能夠切換shell:
csh
sh
bashshell
PID TTY TIME CMD
2487 pts/0 00:00:00 bash
2526 pts/0 00:00:00 csh
2547 pts/0 00:00:00 sh
2549 pts/0 00:00:00 bash
2570 pts/0 00:00:00 ps數據庫
不一樣shell,區別在於使用方式有差異,支持的命令基本一致
shell的切換的本質就是在當前shell進程中啓動子進程;
exit能夠結束當前進程,返回父進程;
最後一次exit表示退出登陸;
剛登陸成功後,系統會默認啓動一個shell進程,當前是bash
bash是目前經常使用的shell,符合大衆習慣。
shell環境下能夠寫腳本:shell編程 -- shell腳本
目的:對系統進行自動化管理、對測試進行輔助管理
將一些命令聯合編寫爲代碼,有邏輯的運行。
對命令的自動化的編程。編程
二、Kernel 內核:和硬件交互,比較底層,將硬件管理起來,將硬件屏蔽掉。好比:swap space 交換區(虛擬內存)、文件系統File System等。
Linux內核的五大功能:
1)進程/處理器管理
2)內存管理
3)接口管理
4)文件管理
5)設備管理
查看當前內核版本號:uname -r 2.4.20-8
格式:主版本號.次版本號.修訂次數
2.4
2.5
2.6 偶數相對穩定windows
三、File System 文件系統:對Linux中的文件進行管理
文件:包括文件、目錄、外部設備等都被系統當作文件來管理。 1.txt dir1 /dev/sda1
好處:一視同仁,便於管理
文件具備大量屬性
文件的內容:保存的數據
目錄的內容:管理子文件、子目錄的指向關係
(關係表)瀏覽器
3、Linux的通用特性
一、支持多用戶
二、支持多任務
三、支持用戶界面
四、硬件的支持
五、網絡鏈接
六、可安裝網絡服務
七、應用程序的支持
4、Linux/Unix經常使用命令
一、執行命令的原理:
執行命令,就會執行一個可執行文件,會啓動一個進程;
好比:ps pwd ls date ...
sleep 5 啓動sleep進程,等待5秒 單位:秒
結束當前進程:ctrl + c 馬上交回終端
# sleep 3000
掛起當前進程:ctrl + z 也會交回終端
查看後臺任務:jobs
[1]+ Stopped sleep 3000
# sleep 5000
# ctrl + z
# jobs
[1]- Stopped sleep 3000
[2]+ Stopped sleep 5000
將後臺任務前置繼續運行:fg 任務號
# fg 1
# ctrl + c
# fg 2
# ctrl + c
二、命令的幫助手冊:man 命令名
Linux/Unix中提供命令的幫助手冊 manual
提示:手冊中都是英文、專業術語較多,涉及系統知識
建議選擇的查看,好比關心某選項,重點查看。
daemon 精靈、精力充沛的人
系統爲精靈進程、守護進程,系統啓動後默默一直提供基礎服務。
好比:查看ls命令的用法
# man ls
控制方法: 空格 -- 翻頁
回車 -- 跳行
q -- 退出 quit
ls - list directory contents 顯示目錄內容
-l use a long listing format 使用長格式列表
顯示文件/目錄的詳細屬性列表
練習:查看man手冊,找出如何查看全部進程 ps命令
ps -ef
-e select all processes
-f does full listing 全格式
三、查看目錄下內容:ls 查看目錄下的內容
1)ls -l 以長格式顯示文件/目錄的詳細屬性
當前Linux中簡寫爲ll,不推薦使用,ls -l 更通用
文件類型 權限 屬主 屬組 文件大小 最後一次修改時間
-rw-r--r-- 1 root root 967 4月 25 19:19 1.txt
硬連接數 文件/目錄名
文件類型:- 文件 d 目錄
權限:rw-r--r--
屬主:該文件屬於哪一個用戶
屬組:該用戶屬於哪一個組
文件大小:單位 Byte
2)ls -a a就是all 全部的
顯示目錄下使有內容,包括隱藏的文件和目錄;
規律:凡是以 . 開頭命名的文件或目錄,具備隱藏屬性
好比:. .. 任何目錄下都有的隱藏目錄
.bash_profile bash環境下的配置文件
3)ls -al 或 -la 選項能夠組合搭配使用(功能的疊加)
既能查看全部內容,還能查看內容的詳細屬性
4)ls -R 將目錄層次展開
5)ls -t 按照時間前後排序(最後一次修改時間)
常常關注最近修改過的文件,好比日誌文件
6)ls -lt 組合使用
7)ls -F 查看文件類型
普通文件 無後綴顯示
目錄 /結尾
可執行文件 *結尾
分別到不一樣目錄下,查看文件類型:
cd /root
cd /
cd /bin
8)ls -ld 查看當前目錄的屬性
查看/root目錄屬性,目前就在/root下
以前作法:先回到上一層目錄,再查看 ls -l
cd ..
ls -l
drwxr-x--- 4 root root 4096 2月 28 11:45 root
目前作法:在當前目錄中直接查看
ls -ld
drwxr-x--- 4 root root 4096 2月 28 11:45 .
四、清屏:clear
Windows: cls Sqlplus: clear screen
Linux/Unix的發展和產品介紹:
Unix: 1969
廠商: 產品:
IBM AIX
SUN Solaris
HP UX
Linux: 1991 1994 Linux之父:Linus 規範、標準
(Linux is not Unix) 吉祥物:企鵝
廠商:Red Hat 紅帽
Red Flag 紅旗
SUSE
Ubuntu
IOE架構:IBM服務器、AIX + Oracle DB + EMC磁盤陣列
(主機)(Unix)中間件 數據庫 數據存儲
優勢:服務好、功能強大、全面 缺點:成本高
BAT推崇「去IOE」:
好比LAMP: 普通PC的集羣做爲服務器主機 + Linux
+ Apache 服務器軟件 + Mysql DB + PHP 開發語言
優勢:成本低、開源(二次開發)、可定製、靈活
缺點:技術成本高
五、磁盤分區
/dev/sda 硬盤分爲三個區:
分區設備名 掛載點 類型 大小
/dev/sda1 /boot ext3 100M
/dev/sda2 無 swap 2G 系統內核管理
/dev/sda3 / ext3 6G
分區設備名規律: /dev是設備目錄,下面有設備文件
device
Linux系統將全部設備,好比硬盤分區當作文件來管理
/dev/hda1
1) hd -- IDE硬盤,性能通常
2) a -- 第一塊硬盤
3) 1 -- 第1個分區
/dev/sdb3
1) sd -- SCSI硬盤,性能高
2) b -- 第二塊硬盤
3) 3 -- 第3個分區
請分析如下名稱的含義
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sdb1
/dev/sdb2
以上都是Linux系統中的設備文件,表示硬盤中的不一樣分區:
a b sd 1 2 3 1 2
一共有2塊SCSI硬盤,其中第一塊有3個分區,第二塊2個分區。
六、查看磁盤空間狀況:fdisk -l
應用場合:當系統出現運行忽然變慢等性能問題時,能夠查看Linux服務器的磁盤空間,肯定是否出現空間不足致使的性能瓶頸。好比:日誌文件、數據庫數據、文件上傳不斷佔據磁盤空間。
練習:查看磁盤空間的狀況
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 268 2048287+ 82 Linux swap
/dev/sda3 269 1044 6233220 83 Linux
Blocks:塊 數據塊 是爲了系統更好分配存儲範圍
Id:idle 空閒的磁盤空間 83%
補充:df -k -k表示 以KB爲單位
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/sda3 6135236 1064864 4758712 19% /
/dev/sda1 101089 9425 86445 10% /boot
none 515444 0 515444 0% /dev/shm
補充:mount 掛載、查看掛載狀況
mount 設備名 掛載點
mount /dev/sda1 /boot
執行mount:查看掛載狀況
/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
查看文件詳細屬性:ls -l 文件名
七、查看文件的內容:cat 文件路徑名 ...
適合看小文件,由於不能翻頁
# cd /root 技巧:cd /r Tab 自動補全 /root
# ls
# cat install.log cat ins Tab
# date
# cal
# cal 5 2018
平時命令執行的結果默認向 終端 輸出。(標準輸出)
技巧:> 輸出重定向 (Windows/Linux/Unix中通用)
將命令輸出的結果改變輸出到文件中,而不是終端
# date > 1.txt
自動新建一個文件1.txt,將date的結果寫入1.txt文件中
便於保存執行結果
# ls -l 1.txt 查看1.txt文件的屬性
-rw-r--r-- 1 root root 29 7月 11 14:30 1.txt
# cat 1.txt 查看1.txt文件的內容
二 7月 11 14:30:04 CST 2017
規律:OS認爲,文件有結束符 EOF 佔1個Byte
End Of File
文件底層存在文件指針,在讀取文件數據時能夠偏移位置;
文件存在開始指針、結束符
# cal > 1.txt 覆蓋
# cat 1.txt
> 輸出重定向,新的會覆蓋舊的
>> 輸出追加劇定向,向原有文件結尾追加內容
# date >> 1.txt
# cal 10 2017 >> 1.txt
# cat 1.txt
用途:在Windows/Linux系統中,咱們能夠將某些命令輸出的結果寫入到文件中保存,做爲後續分析的依據,好比日誌、測試結果等。
好比:adb shell monkey ... > 文件名
八、目錄路徑的常見概念
1)絕對路徑:從/開始表示的具體的路徑名
/root 目錄名
/etc
/root/1.txt 文件名
/etc/passwd
查看/etc/passwd文件 的詳細屬性
# ls -l /etc/passwd
-rw-r--r-- 1 root root 1283 7月 10 19:42 /etc/passwd
2)當前路徑:當前所在目錄的路徑名 pwd可查看
好比目前在 /root
3)相對路徑:至關於當前路徑表示的新路徑
1.txt
../etc/passwd ..回到/目錄下,進入ect中找到passwd
好比目前在/etc下 (當前路徑),須要表示/root/1.txt
1) 絕對路徑:/root/1.txt
2) 相對路徑:../root/1.txt
4)主目錄:用戶登陸系統後,默認所在的目錄
Home Directory(家目錄)
普通用戶在其主目錄下擁有大量權限,出了此目錄,將會到處受挫;
在建立新用戶時,會在/home目錄下新建該用戶的主目錄,其目錄名就是用戶名;
root用戶的主目錄很特殊,就是/root;
查看用戶帳戶文件:/etc/passwd
每一行對應每一個系統帳戶的記錄信息
每一列表示每一個帳戶的屬性
# cat /etc/passwd
用戶名:口令佔位符:uid:gid:描述:用戶主目錄:登陸shell
root:x:0:0:root:/root:/bin/bash
uid: 用戶id 用戶身份的惟一標識 root都是0
gid: 組id
登陸shell: bash 用戶剛登陸後默認使用的是bash
技巧:快速回到主目錄
cd 回車 或 cd ~ 回車
說明:~ 代替用戶的主目錄 /root
技巧:查看~的值 echo 名稱
# echo ~ echo 本意:回聲
# ehco Hello 原樣返回
# echo $PATH echo $系統環境變量名
查看系統環境變量PATH的值
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/bin/jdk1.6/bin
PATH的做用:命令的搜索路徑
咱們能夠將經常使用的命令所在的路徑名添加到PATH的值中(Windows經過分號分隔,Linux/Unix經過冒號分隔),越靠前的越優先找到,就能夠在命令行中使用相對路徑簡化對命令的表達,不然會提示命令找不到。
好比 ls 在 /bin下 /bin/ls
5)當前目錄: .
cd . 意義不大,還在當前目錄
1.txt 相對路徑
./1.txt 代替絕對路徑 /root/1.txt
6)上一層目錄: ..
cd .. 回上一層目錄
cd ../.. 連退兩層目錄
九、建立目錄:mkdir 目錄路徑名
# cd 回到root的主目錄 /root
# pwd
# mkdir test 建立一個test目錄
# ls -l
drwxr-xr-x 2 root root 4096 4月 26 15:44 test
# cd test
# ls 什麼都沒有
# ls -la 只有 . 和 ..
練習:在test目錄中繼續建立其它目錄層次
# pwd 在/root/test下
# mkdir dir1/dir2
mkdir: 沒法建立目錄‘dir1/dir2’: 沒有那個文件或目錄
注意:Linux/Unix中,須要加-p選項,才能一鼓作氣
# mkdir -p dir1/dir2
# ls -R 查看目錄下層次
# ls -aR 包括隱藏資源
# cd dir1 ls -al
cd dir2 ls -al
# pwd 在/root/test/dir1/dir2下
回到test下:
# cd ../..
或 cd ~/test ~就是/root /root/test
# mkdir dir3 dir4 dir5 依次建立多個目錄
在主目錄下新建一個game目錄:
# mkdir ~/game
# cd
# ls
結論:操做的關鍵在於--如何表達路徑名
技巧:經過startx 切換到圖形界面
# startx
在服務器中啓動圖形界面:
桌面: root主目錄
右鍵 -> 新建終端 shell 執行命令
放大: ctrl shift +
縮小: ctr -
返回字符界面:小紅帽 -> 註銷
十、新建文件:touch 文件路徑名
說明:若是文件不存在,建立一個新的、空的文件(0字節); 若是文件存在,只會修改文件的最後一次修改時間。
# cd ~/test
# date > 1.txt 經過重定向生成一個1.txt文件
# ls -l 1.txt 查看文件屬性
# cat 1.txt 查看文件內容
# touch 2.txt 建立一個空文件
# ls -l *.txt 查看全部.txt文件的屬性
# cat 2.txt
# touch 1.txt
# ls -l *.txt 1.txt最後一次修改時間 更新了
# cat 1.txt 文件內容不變
十一、Linux中命名規則、規範
1)區分大小寫 F1 f1
2)不能使用特殊字符: / * % " $ # 空格 ...
3)以.開頭的,具備隱藏屬性
4)若是無特殊要求,後綴沒有要求,後綴起到見名知意的做用:
特殊要求的: plus
.java .c .cpp .html .css .js .php .xml
.class .pdf .zip .jar ...
沒有特殊要求的:普通文本
1.txt f1 f1.abc f1.abc.hello
建議:好比shell腳本,建議使用.sh結尾 見名知意
Tomcat6/bin目錄下:管理命令、啓動項
startup.sh 啓動服務器的腳本
shutdown.sh 關閉服務器的腳本
十二、拷貝文件:cp 源文件路徑 新路徑
(copy)目的:備份
# cp 1.txt 11.txt 將1.txt備份爲11.txt
# ls -l 1*.txt 查看1開頭 .txt結尾文件屬性
# cat 1.txt 11.txt 依次顯示多個文件內容
1三、移動文件:mv 源文件路徑 新路徑
(move)本質:改變文件的絕對路徑名
# mv 11.txt 22.txt 重命名
源文件路徑:/root/test/11.txt
新路徑: /root/test/22.txt
綜合練習:在~/test下,新建d1和d2目錄;
d1目錄下新建1.txt文件,文本內容Hello;
對文件進行備份、重命名操做。
1)在~/test下,新建d1和d2目錄
# cd ~/test
# mkdir d1
# mkdir d2 或 mkdir d1 d2
2)d1目錄下新建1.txt文件,文本內容Hello
# cd d1
# pwd 在/root/test/d1下
# touch 1.txt
# ls -l 1.txt
# echo Hello >> 1.txt
3)將d1下的1.txt備份爲11.txt
# cp 1.txt 11.txt
4)將d1下的1.txt備份到d2下,也叫1.txt
# cp 1.txt ../d2
# cd ../d2
# pwd 在/root/test/d2下
# ls -l
# cat 1.txt
5)將d1下的11.txt備份到d2中,還叫11.txt
# cp ../d1/11.txt .
6)將d1下的1.txt備份到d2中,叫111.txt
# cp ../d1/1.txt ./111.txt
7)將d1下的11.txt移動到d2中,叫22.txt
# mv ../d1/11.txt ./22.txt
# ls -l
# cd ../d1
# ls -l
1四、刪除文件和目錄
1)刪除文件:rm 文件路徑名
(remove) rm -f 文件路徑名 關閉交互
# rm 22.txt 有交互 y 刪除 n 不刪除
# rm *.txt 刪除全部.txt文件 屢次交互
# rm -f *.txt 關閉交互,刪除全部.txt文件
如何強制刪除一些文件?
思路:rm 文件名
強制就是關閉交互,不用多問
2)刪除空目錄:rmdir 目錄名
# cd ~/test
# rmdir d2 非空,不能刪除
# rmdir d1 爲空,能夠刪除
3)刪除非空目錄: rm -r 目錄名 存在交互
rm -rf 目錄名 關閉交互
# rm -r d2 y n
# rm -rf d2
用戶登陸:
Username: jojo
Password: bean
Login
安全測試:也稱爲滲透測試
經過各類攻擊方式,對SUT進行安全方面的攻擊,測試SUT是否安全。
常見的攻擊方式:xxx注入
好比SQL注入攻擊 SQL Injection
用戶(攻擊者)填寫的信息極可能成爲業務邏輯的一部分,從而改變原有的邏輯。
用戶登陸:
Username: jojo hello
Password: bean 123' or '1'='1
Login
後臺SQL: 只要能查到結果 >0 說明存在,登陸成功
select count(id) from user
where username='jojo' and password='bean';
真 真
結果:針對
select count(id) from user 結果>0 where username='hello' and password='123' or '1'='1'; 假 假 假 永真式 真