测试面试题+测试面试宝典(分类版)
測試面試寶典(分類+每周更新)
- 前言
- 一、基礎類
- 1.1 軟件測試定義
- 1.2 軟件測試分類:
- 1.3 黑盒測試方法
- 1.4 白盒測試方法
- 1.5 單元測試策略
- 1.6 集成測試策略
- 1.7 系統測試策略
- 1.8 驗收測試策略
- 1.9 α和β測試
- ------------分界線-------------以下是一些常用測試方法
- 1.10 兼容性測試策略
- 1.11 強度(健壯性)測試策略
- 1.12 壓力測試策略
- 1.13 性能測試(強度+壓力)
- 1.14 兼容性測試策略
- 1.15 測試用例設計方法
- 1.15 測試用例設計經典面試題——電梯,杯子,筆,桌子,洗衣機
- 1.16 冒煙測試用例
- 二、流程類
- 2.1 軟件和測試生命周期
- 2.2 軟件開發模型
- 2.3 測試模型
- 三、linux類
- 3.1列舉常用的20個命令
- 3.1.1、cd
- 3.1.2、ls
- 3.1.3、grep
- 3.1.4、find
- 3.1.5、cp
- 3.1.6、mv
- 3.1.7、rm
- 3.1.8、ps
- 3.1.9、kill命令
- 3.1.10、killall
- 3.1.11、file
- 3.1.12、tar命令
- 3.1.13、cat命令
- 3.1.14、chgrp命令
- 3.1.15、chown命令
- 3.1.16、chmod命令
- 3.1.18、vim命令
- 3.1.19、gcc命令
- 3.1.20、time命令
- 四、常用軟件和框架
- 五、計算機基礎類
- 六、持續集成、敏捷等新興類
- 總結
- 引用
每周出一篇以上內容有一定深度的文章!
前言
本文預計三個月更新完所有部分的初稿,大家可以提前收藏~
csdn中的面試寶典已經足夠多了,并且耐心看下來質量都挺不錯的,但是大部分的面試寶典都有以下幾個缺點:
1、沒有目錄且篇幅過長,很難讓人抓住重點。
2、思維跳躍,想到啥問題寫啥問題,不成體系。
3、不及時更新,看到好的問題應該記錄下來并更新自己的想法與理解。
因此,想寫一本屬于自己的面試寶典,寫完之后盡量以每兩周一次的頻次進行更新,期間看到大家分享出來的好的測試面試題也可以一并整理并寫出自己的一些理解供大家參考。
由于本文內容非常詳細,建議大家收藏后,在面試前進行系統的復習,并且可以根據目錄有選擇性地來進行查閱,一次性看完不太可取。
歡迎大家在評論中留言一些問題,會持續關注噠~
PS:很多理論都有參考各地方的博文,如果博主有意見可私信我~侵刪
引用在末尾。
一、基礎類
1.1 軟件測試定義
是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別,貫穿整個軟件開發生命周期。
簡單的說,軟件測試是以發現錯誤為目的而執行的一個程序或系統的過程。
1.2 軟件測試分類:
1)按照是否執行被測試軟件來分:
靜態測試:是指不運行軟件,測試包括代碼檢查、靜態結構分析、代碼質量度量等,主要對軟件需求說明書、設計說明書、軟件源代碼進行檢查與分析。
動態測試:指通過運行被測程序,檢查運行結果與預期結果的差異,分析差異原因,并分析軟件運行效率、健壯性等性能。
動態測試是目前公司主要的測試方式
2)按照測試技術分為黑盒測試和白盒測試:
黑盒測試:黑盒測試又叫功能測試或數據驅動測試,在完全不考慮程序內部結構和內部特性的情況下,通過軟件的外部表現來發現其缺陷和錯誤。
白盒測試:白盒測試也稱結構測試或邏輯驅動測試,它是按照程序內部的結構進行測試程序,通過測試來檢測產品內部邏輯是否按照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作。
3)按照測試手段來分,可以分為手工測試和自動化測試
自動化測試:在預先設定的條件下運行被測程序,并分析運行結果。這種測試方法就是將以人驅動的測試行為轉化為機器執行的一種過程
4)按照過程階段來分,可以分為單元測試、集成測試、系統測試和驗收測試
單元測試:通過模塊(類/方法/函數)測試,使代碼達到設計要求
主要目的是針對編碼過程中可能存在的各種錯誤,例如用戶輸入驗證過程中的邊界值的錯誤。
;
集成測試:將經過單元測試的模塊逐步組裝成完整的程序。 主要目的是檢查各單元與其它程序部分之間的接口是否存在問題,各模塊功能之間是否有影響。
;
系統測試:是將已經確認的軟件、計算機硬件、外設、網絡等其他元素結合在一起進行測試。
系統測試是針對整個產品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不符或與之矛盾的地方 ,進行改正。
;
驗收測試:驗收測試是在軟件產品完成了單元測試、集成測試和系統測試之后,產品發布之前所進行的最后一次軟件測試活動,也稱為交付測試。
通常由業務專家或用戶進行,以確認產品能真正符合用戶業務上的需要。
1.3 黑盒測試方法
1)等價類劃分
劃分等價類: 等價類是指某個輸入域的子集合.在該子集合中,各個輸入數據對于揭露程序中的錯誤都是等效的.并合理地假定:測試某等價類的代表值就等于對這一類其它值的測試.
因此,可以把全部輸入數據合理劃分為若干等價類,在每一個等價類中取一個數據作為測試的輸入條件,就可以用少量代表性的測試數據.取得較好的測試結果.等價類劃分可有兩種不 同的情況:有效等價類和無效等價類
2)邊界值分析法
邊界值分析方法是對等價類劃分方法的補充。測試工作經驗告訴我,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部.因此針對各種邊界情況設計測 試用例,可以查出更多的錯誤.
使用邊界值分析方法設計測試用例,首先應確定邊界情況.通常輸入和輸出等價類的邊界,就是應著重測試的邊界情況.應當選取正好等于,剛剛大于或剛剛小于邊界的值作為測試數據, 而不是選取等價類中的典型值或任意值作為測試數據.
3)錯誤猜測法
基于經驗和直覺推測程序中所有可能存在的各種錯誤, 從而有針對性的設計測試用例的方 法. 錯誤推測方法的基本思想:
列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據他們選擇測試用例. 例如, 在單元測試時曾列出的許多在模塊中常見的錯誤.以前產品測試中曾經發現的錯誤等, 這些就是經驗的總結. 還有, 輸入數據和輸出數據為 0 的情況. 輸入表格為空格或輸入表格只有一行.
這些都是容易發生錯誤的情況. 可選擇這些情況下 的例子作為測試用例.
4)因果圖方法
前面介紹的等價類劃分方法和邊界值分析方法,都是著重考慮輸入條件,但未考慮輸入條件 之間的聯系, 相互組合等.考慮輸入條件之間的相互組合,可能會產生一些新的情況. 但要 檢查輸入條件的組合不是一件容易的事情,
即使把所有輸入條件劃分成等價類,他們之間的 組合情況也相當多. 因此必須考慮采用一種適合于描述對于多種條件的組合,相應產生多個
動作的形式來考慮設計測試用例. 這就需要利用因果圖(邏輯模型). 因果圖方法最終生成 的就是判定表.
它適合于檢查程序輸入條件的各種組合情況.
5)正交表分析法
有時候,可能因為大量的參數的組合而引起測試用例數量上的激增,同時,這些測試用例并沒有明顯的優先級上的差距,而測試人員又無法完成這么多數量的測試,就可以通過正交表來進行縮減一些用例,從而達到盡量少的用例覆蓋盡量大的范圍的可能性。
對于基本的驗證功能,以及二次集成引起的缺陷,一般都能找出來;但是更深的缺陷,更復雜的缺陷,還是無能為力的;
6)場景分析方法
指根據用戶場景來模擬用戶的操作步驟,這個比較類似因果圖,但是可能執行的深度和可行性更好。
7)狀態圖法
通過輸入條件和系統需求說明得到被測系統的所有狀態,通過輸入條件和狀態得出輸出條 件;通過輸入條件、輸出條件和狀態得出被測系統的測試用例。
8)大綱法
大綱法是一種著眼于需求的方法,為了列出各種測試條件,就將需求轉換為大綱的形式。大綱表示為樹狀結構,在根和每個葉子結點之間存在唯一的路徑。大綱中的每條路徑定義了一個特定的輸入條件集合,用于定義測試用例。樹中葉子的數目或大綱中的路徑給出了測試所 有功能所需測試用例的大致數量。
1.4 白盒測試方法
白盒測試方法有 語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
1.語句覆蓋:每條語句至少執行一次。
2.判定覆蓋:每個判定的每個分支至少執行一次。
3.條件覆蓋:每個判定的每個條件應取到各種可能的值。
4.判定/條件覆蓋:同時滿足判定覆蓋條件覆蓋。
5.條件組合覆蓋:每個判定中各條件的每一種組合至少出現一次。
6.路徑覆蓋:使程序中每一條可能的路徑至少執行一次。
白盒測試關注重點:
1、單元接口。
2、局部數據結構。
3、獨立路徑。
4、出錯處理。
5、邊界條件
1.5 單元測試策略
單元測試這快目前還是開發自測和開發團隊之間互測的多,該部分有印象即可!。
單元的常見錯誤一般出現在以下五個方面,因此這五個方面是單元測試應該關注的重點。
(1)模塊接口測試:
模塊接口測試是單元測試的基礎。只有在數據能正確流入、流出模塊的前提下,其他測試才有意義。模塊接口測試也是集成測試的重點,這里進行的測試主要是為后面打好基礎。測試接口正確與否應該考慮下列因素:
-輸入的實際參數與形式參數的個數是否相同;
-輸入的實際參數與形式參數的屬性是否匹配;
-輸入的實際參數與形式參數的量綱是否一致;
-調用其他模塊時所給實際參數的個數是否與被調模塊的形參個數相同;
-調用其他模塊時所給實際參數的屬性是否與被調模塊的形參屬性匹配;
-調用其他模塊時所給實際參數的量綱是否與被調模塊的形參量綱一致;
-調用預定義函數時所用參數的個數、屬性和次序是否正確;
-是否存在與當前入口點無關的參數引用;
-是否修改了只讀型參數;
-對全程變量的定義各模塊是否一致;
-是否把某些約束作為參數傳遞。
如果模塊功能包括外部輸入輸出,還應該考慮下列因素:
-文件屬性是否正確;
-OPEN/CLOSE語句是否正確;
-格式說明與輸入輸出語句是否匹配;
-緩沖區大小與記錄長度是否匹配;
-文件使用前是否已經打開;
-是否處理了文件尾;
-是否處理了輸入/輸出錯誤;
-輸出信息中是否有文字性錯誤。
-局部數據結構測試;
-邊界條件測試;
-模塊中所有獨立執行通路測試;
(2)局部數據結構測試:
檢查局部數據結構是為了保證臨時存儲在模塊內的數據在程序執行過程中完整、正確,局部功能是整個功能運行的基礎。重點是一些函數是否正確執行,內部是否運行正確。局部數據結構往往是錯誤的根源,應仔細設計測試用例,力求發現下面幾類錯誤:
-不合適或不相容的類型說明;
-變量無初值;
-變量初始化或省缺值有錯;
-不正確的變量名(拼錯或不正確地截斷);
-出現上溢、下溢和地址異常。
(3)邊界條件測試:
邊界條件測試是單元測試中最重要的一項任務。眾所周知,軟件經常在邊界上失效,采用邊界值分析技術,針對邊界值及其左、右設計測試用例,很有可能發現新的錯誤。邊界條件測試是一項基礎測試,也是后面系統測試中的功能測試的重點,邊界測試執行的較好,可以大大提高程序健壯性。
(4)模塊中所有獨立路徑測試:
在模塊中應對每一條獨立執行路徑進行測試,單元測試的基本任務是保證模塊中每條語句至少執行一次。測試目的主要是為了發現因錯誤計算、不正確的比較和不適當的控制流造成的錯誤。具體做法就是程序員逐條調試語句。常見的錯誤包括:
-誤解或用錯了算符優先級;
-混合類型運算;
-變量初值錯;
-精度不夠;
-表達式符號錯。
-比較判斷與控制流常常緊密相關,測試時注意下列錯誤:
-不同數據類型的對象之間進行比較;
-錯誤地使用邏輯運算符或優先級;
-因計算機表示的局限性,期望理論上相等而實際上不相等的兩個量相等;
-比較運算或變量出錯;
-循環終止條件或不可能出現;
-迭代發散時不能退出;
-錯誤地修改了循環變量。
(5)模塊的各條錯誤處理通路測試:
程序在遇到異常情況時不應該退出,好的程序應能預見各種出錯條件,并預設各種出錯處理通路。如果用戶不按照正常操作,程序就退出或者停止工作,實際上也是一種缺陷,因此單元測試要測試各種錯誤處理路徑。一般這種測試著重檢查下列問題:
-輸出的出錯信息難以理解;
-記錄的錯誤與實際遇到的錯誤不相符;
-在程序自定義的出錯處理段運行之前,系統已介入;
-異常處理不當;
-錯誤陳述中未能提供足夠的定位出錯信息。
在單元測試時,由于單元本身不是一個獨立的程序,一個完整的可運行的軟件系統并沒有構成,所以需要設置一些輔助測試單元,輔助測試單元有兩種,一種是驅動單元,另外一種是樁單元。
1、驅動單元(Driver):
用來模擬被測單元的上層單元,相當于被測函數的主函數,如main函數。所以驅動單元主要完成以下4個步驟:
(1)接受測試數據,包含測試用例輸入和預期輸出;
(2)把測試用例輸入傳送給被測單元,驅動被測單元測試;
(3)將被測單元的實際輸出和預期輸出進行比較,得到測試結果;
(4)將測試結果輸出到指定位置。
2、樁單元(Stub):用來代替被測單元工作過程中調用的子單元。
樁單元模擬的單元可能是自定義函數:這些自定義函數可能尚未編寫完成,為了測試被測單元,需要構造樁單元來代替它們,可能存在錯誤,會影響測試結果,所以需要構造正確無誤的樁單元來達到隔離的目的。
驅動單元和樁單元都是額外的開銷,雖然在單元測試的時候必須寫,但是并不需要作為最終的產品提供給客戶。
單元測試策略
一般的單元執行策略有三種:孤立的單元測試策略(Isolation Unit Testing),自頂向下的單元測試策略(Top Down
Unit Testing)和自底向上的單元測試策略(Bottom Up Unit
Testing)。需要注意的是:在集成測試中也有自頂向下和自底向上的測試策略,但是測試對象不同。
1、孤立的單元測試策略(Isolation Unit Testing)
方法:
不考慮每個模塊與其它模塊之間的關系,為每個模塊設計樁模塊和驅動模塊,每個模塊進行獨立的單元測試。
優點:
這個方法比較簡單,最容易操作,可以達到很高的結構覆蓋率,可以并行開展,該方法是純粹的單元測試。
缺點:樁函數和驅動函數工作量很大,效率低。
2、自頂向下的單元測試策略(Top Down Unit Testing)
方法:
先對最頂層的單元進行測試,把頂層所調用的單元做成樁模塊,其次對第二層進行測試,使用上面已經測試過的單元做驅動模塊,以此類推,直到測試完所有模塊。
優點:
可以節省驅動函數的開發工作,效率高。
缺點:
隨著被測單元一個一個被加入,測試過程將變得越來越復雜,并且開發和維護的成本將增加。
3、自底向上的單元測試策略(Bottom Up Unit Testing)
方法:
先對最底層的模塊進行單元測試,將模擬調用該模塊的模塊設置為驅動模塊,然后再對上面一層做單元測試,用下面已經測試好的模塊做樁模塊,以此類推,直到測試完所有模塊。
優點:
可以節省樁函數的開發工作量,測試效率較高。
缺點:
不是純粹的單元測試,底層函數的測試質量對上層函數的測試將產生很大影響。
1.6 集成測試策略
集成測試有十種策略:
(1)大爆炸集成
(2)自頂向下集成
(3)自底向上集成
(4)三明治集成
(5)分層集成
(6)基干集成
(7)基于功能的集成
(8)基于消息的集成
(9)基于風險的集成
(10)基于進度的集成.
集成測試主要內容有五種
(1)在把各個模塊連接起來的時候,穿越模塊接口的數據是否會丟失;
(2)一個模塊的功能是否會對另一個模塊的功能產生不利的影響;
(3)各個子功能組合起來,能否達到預期要求的父功能;
(4)全局數據結構是否有問題;
(5)單個模塊的誤差累積起來,是否會放大,從而達到不能接受的程度。
1.7 系統測試策略
針對集成好的軟件系統,作為整個計算機系統的一個元素,與計算機硬件外設\某些支持軟件\數據和人員等其他系統元素結合在一起,要在實際的運行環境中,對計算機系統進行一系列的集成測試和確認測試.
在企業中,可以分為以下幾種
功能測試;性能評測;負載測試;強度測試;容量測試;安全性和訪問控制測試;故障轉移和恢復測試;配置測試;安裝測試;加密測試;可用性測試;版本驗證測試;文檔測試;數據和數據庫完整性測試;用戶界面測試;
1.8 驗收測試策略
驗收測試是最后一個階段的測試操作,在軟件產品投入正式運行前的所要進行的測試工作。和系統測試相比而言,驗收測試與之的區別就只是測試人員不同,驗收測試則是由用戶來執行這一操作的。
驗收測試的主要目標是為向用戶展示所開發出來的軟件符合預定的要求和有關標準,并驗證軟件實際工作的有效性和可靠性,確保用戶能用該軟件順利完成既定的任務和功能。通過了驗收測試,該產品就可進行發布。
1.9 α和β測試
作為驗收測試的補充。在實際交付給用戶之后,開發人員是無法預測該軟件用戶在實際運用過程中是如何使用該程序的,所以從用戶的角度出發,測試人員還應進行Alpha測試或Beta測試這兩種情形的測試。
Alpha測試是在軟件開發環境下由用戶進行的測試,或者模擬實際操作環境進而進行的測試。Alpha測試主要是對軟件產品的功能、局域化、界面、可使用性以及性能等等方面進行評價。
Beta測試是在實際環境中由多個用戶對其進行測試,并將在測試過程中發現的錯誤有效反饋給軟件開發者。所以在測試過程中用戶必須定期將所遇到的問題反饋給開發者
------------分界線-------------以下是一些常用測試方法
1.10 兼容性測試策略
兼容測試主要是檢查軟件在不同的硬件平臺、軟件平臺上是否可以正常的運行,即是通常說的軟件的可移植性。
兼容的類型,如果細分的話,有平臺的兼容,網絡兼容,數據庫兼容,以及數據格式的兼容。
兼容測試的重點是,對兼容環境的分析。通常,是在運行軟件的環境不是很確定的情況下,才需要做兼容。根據軟件運行的需要,或者根據需求文檔,一般都能夠得出用戶會在什么環境下使用該軟件,把這些環境整理成表單,就得出做兼容測試的兼容環境了。
1.11 強度(健壯性)測試策略
強度測試是為了確定系統在最差工作環境的工作能力,也可能是用于驗證在標準工作壓力下的各種資源的最下限指標。
它和壓力測試的目標恰好相反。壓力測試是在標準工作環境下,不斷增加系統負荷,最終測試出該系統能力達到的最大負荷(穩定和峰值),而強度測試則是在非標準工作環境下,甚至不斷人為降低系統工作環境所需要的資源,如網絡帶寬,系統內存,數據鎖等等,以測試系統在資源不足的情況下的工作狀態,通過強度測試,可以確定本系統正常工作的最差環境.
強度測試和壓力測試的測試指標相近,大多都是與時間相關的指標,如并發量(吞吐量),延遲(最大\最小\平均)以及順序指標等
強度測試需要對系統的結構熟悉,針對系統的特征設計強度測試的方法
1.12 壓力測試策略
壓力測試是通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級別的測試。通過不斷增加用戶數和訪問量,測試系統的極限以及在極限情況下系統的性能。
1.13 性能測試(強度+壓力)
常見指標:
吞吐量:每秒鐘系統能夠處理的請求數、任務數。
TPS:并發數/平均響應時間
并發數: 系統同時處理的request/事務數
響應時間:服務處理一個請求或一個任務的耗時。
錯誤率:一批請求中結果出錯的請求所占比例。
內部指標:CPU、內存、服務器負載、網絡、磁盤IO
性能測試這塊太大了,看了很多大家的討論,還是覺得這方面得有一個完整的團隊才可以實現有效的性能測試。
性能測試團隊中要有性能測試專家、性能測試工程師、數據庫專家、OS專家、全棧。
寫得很棒的性能測試文章
1.14 兼容性測試策略
(1)測試軟件是否能在不同的操作系統平臺上兼容;
(2)測試軟件是否能在同一操作系統平臺的不同版本上兼容;
(3)軟件本身能否向前或者向后兼容;
(4)測試軟件能否與其它相關的軟件兼容;
(5)數據兼容性測試,主要是指數據能否共享;
1.15 測試用例設計方法
白盒測試:
語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋
黑盒測試:
邊界值分析法 等價類劃分 錯誤猜測法 因果圖法 狀態圖法 測試大綱法 隨機測試 場景法
1.15 測試用例設計經典面試題——電梯,杯子,筆,桌子,洗衣機
測試用例設計經典面試題——電梯,杯子,筆,桌子,洗衣機
1.16 冒煙測試用例
冒煙測試的主要目的是保證整體流程的暢通,在每次大版本的提測前后都需要進行一遍,并且最終的驗收測試也可以參考著冒煙測試來進行。
因此冒煙測試用例的設計是非常重要的,主要的策略是對于整體流程的全覆蓋,并且主要由正常情況來組成;
對于一些有特殊要求和特殊功能的模塊,需要進行一些異常情況的覆蓋。
二、流程類
2.1 軟件和測試生命周期
軟件生命周期
計劃-》需求分析-》設計-》程序編寫-》測試-》運行/維護
測試生命周期
測試計劃-》需求分析-》測試用例-》測試用例執行-》提交bug-》回歸測試
缺陷生命周期
發現BUG–>提交BUG–>指派BUG–>研發確認BUG–>研發去修復BUG–>回歸驗證BUG–>是否通過驗證–>關閉BUG
2.2 軟件開發模型
瀑布模型中至關重要的一點是只有當一個階段的文檔已經編制好并獲得SQA小組的認可才可以進入下一個階段。這樣,瀑布模型通過強制性的要求提供規約文檔來確保每個階段都能很好的完成任務。
因此,瀑布模型是一個全流程的文檔驅動模型,非常復雜,需要簡化。
據客戶的需要在很短的時間內解決用戶最迫切需要,完成一個可以演示的產品。這個產品只是實現部分的功能(最重要的)
將瀑布模型和快速原型模型結合,適合大型系統。
螺旋模型沿著螺線進行若干次迭代,圖中的四個象限代表了以下活動:
(1) 制定計劃:確定軟件目標,選定實施方案,弄清項目開發的限制條件;
(2) 風險分析:分析評估所選方案,考慮如何識別和消除風險;
(3) 實施工程:實施軟件開發和驗證;
(4) 客戶評估:評價開發工作,提出修正建議,制定下一步計劃。
強調風險分析
更加適合內部超大系統開發
在迭代式生命周期中,您需要根據主要風險列表選擇要在迭代中開發的新的增量內容。每次迭代完成時都會生成一個經過測試的可執行文件,這樣就可以核實是否已經降低了目標風險。"
強調程序員團隊與業務專家之間的緊密協作、面對面的溝通(認為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的代碼編寫和團隊組織方法,也更注重做為軟件開發中人的作用。
2.3 測試模型
1.V模型
測試在開發之后,發現錯誤時間晚,出錯后回歸測試量大、修復代價大。
2.W模型
測試伴隨整個開發周期,測試與開發同步進行,有利于盡早發現問題
測試投入相對較大
三、linux類
3.1列舉常用的20個命令
3.1.1、cd
這是一個非常基本,也是大家經常需要使用的命令,它用于切換當前目錄,它的參數是要切換到的目錄的路徑,可以是絕對路徑,也可以是相對路徑。
3.1.2、ls
這是一個非常有用的查看文件與目錄的命令,list之意,它的參數非常多,下面就列出一些常用的參數吧,如下:
-l :列出長數據串,包含文件的屬性與權限數據等
-a :列出全部的文件,連同隱藏文件(開頭為.的文件)一起列出來(常用)
-d :僅列出目錄本身,而不是列出目錄的文件數據
-h :將文件容量以較易讀的方式(GB,kB等)列出來
-R :連同子目錄的內容一起列出(遞歸列出),等于該目錄下的所有文件都會顯示出來
注:這些參數也可以組合使用,下面舉兩個例子:
3.1.3、grep
該命令常用于分析一行的信息,若當中有我們所需要的信息,就將該行顯示出來,該命令通常與管道命令一起使用,用于對一些命令的輸出進行篩選加工等等,它的簡單語法為
grep [-acinv] [–color=auto] ‘查找字符串’ filename
它的常用參數如下:
-a :將binary文件以text文件的方式查找數據
-c :計算找到‘查找字符串’的次數
-i :忽略大小寫的區別,即把大小寫視為相同
-v :反向選擇,即顯示出沒有‘查找字符串’內容的那一行
例如:
取出文件/etc/man.config中包含MANPATH的行,并把找到的關鍵字加上顏色
grep --color=auto ‘MANPATH’ /etc/man.config
3.1.4、find
find是一個基于查找的功能非常強大的命令,相對而言,它的使用也相對較為復雜,參數也比較多,所以在這里將給把它們分類列出,它的基本語法如下:
find [PATH] [option] [action]
與時間有關的參數:
-mtime n : n為數字,意思為在n天之前的“一天內”被更改過的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改過的文件名;
-mtime -n : 列出在n天之內(含n天本身)被更改過的文件名;
-newer file : 列出比file還要新的文件名
例如:
find /root -mtime 0 # 在當前目錄下查找今天之內有改動的文件
與用戶或用戶組名有關的參數:
-user name : 列出文件所有者為name的文件
-group name : 列出文件所屬用戶組為name的文件
-uid n : 列出文件所有者為用戶ID為n的文件
-gid n : 列出文件所屬用戶組為用戶組ID為n的文件
例如:
find /home/ljianhui -user ljianhui # 在目錄/home/ljianhui中找出所有者為ljianhui的文件
與文件權限及名稱有關的參數:
-name filename :找出文件名為filename的文件
-size [±]SIZE :找出比SIZE還要大(+)或小(-)的文件
-tpye TYPE :查找文件的類型為TYPE的文件,TYPE的值主要有:一般文件(f)、設備文件(b、c)、
目錄(d)、連接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件權限剛好等于mode的文件,mode用數字表示,如0755;
-perm -mode :查找文件權限必須要全部包括mode權限的文件,mode用數字表示
-perm +mode :查找文件權限包含任一mode的權限的文件,mode用數字表示
例如:
find / -name passwd # 查找文件名為passwd的文件
find . -perm 0755 # 查找當前目錄中文件權限的0755的文件
find . -size +12k # 查找當前目錄中大于12KB的文件,注意c表示byte
3.1.5、cp
該命令用于復制文件,copy之意,它還可以把多個文件一次性地復制到一個目錄下, 它的常用參數如下:
-a :將文件的特性一起復制
-p :連同文件的屬性一起復制,而非使用默認方式,與-a相似,常用于備份
-i :若目標文件已經存在時,在覆蓋時會先詢問操作的進行
-r :遞歸持續復制,用于目錄的復制行為
-u :目標文件與源文件有差異時才會復制
例如 :
cp -a file1 file2 #連同文件的所有特性把文件file1復制成文件file2
cp file1 file2 file3 dir #把文件file1、file2、file3復制到目錄dir中
3.1.6、mv
該命令用于移動文件、目錄或更名,move之意,它的常用參數如下:
-f :force強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
-i :若目標文件已經存在,就會詢問是否覆蓋
-u :若目標文件已經存在,且比目標文件新,才會更新
注:該命令可以把一個文件或多個文件一次移動一個文件夾中,但是最后一個目標文件一定要是“目錄”。
例如:
mv file1 file2 file3 dir # 把文件file1、file2、file3移動到目錄dir中
mv file1 file2 # 把文件file1重命名為file2
3.1.7、rm
該命令用于刪除文件或目錄,remove之間,它的常用參數如下:
-f :就是force的意思,忽略不存在的文件,不會出現警告消息
-i :互動模式,在刪除前會詢問用戶是否操作
-r :遞歸刪除,最常用于目錄刪除,它是一個非常危險的參數
例如:
rm -i file # 刪除文件file,在刪除之前會詢問是否進行該操作
rm -fr dir # 強制刪除目錄dir中的所有文件
3.1.8、ps
該命令用于將某個時間點的進程運行情況選取下來并輸出,process之意,它的常用參數如下:
-A :所有的進程均顯示出來
-a :不與terminal有關的所有進程
-u :有效用戶的相關進程
-x :一般與a參數一起使用,可列出較完整的信息
-l :較長,較詳細地將PID的信息列出
其實我們只要記住ps一般使用的命令參數搭配即可,它們并不多,如下:
ps aux # 查看系統所有的進程數據
ps ax # 查看不與terminal有關的所有進程
ps -lA # 查看系統所有的進程數據
ps axjf # 查看連同一部分進程樹狀態
3.1.9、kill命令
該命令用于向某個工作(%jobnumber)或者是某個PID(數字)傳送一個信號,它通常與ps和jobs命令一起使用,它的基本語法如下:
kill -signal PID
signal的常用參數如下:
注:最前面的數字為信號的代號,使用時可以用代號代替相應的信號。
1:SIGHUP,啟動被終止的進程
2:SIGINT,相當于輸入ctrl+c,中斷一個程序的進行
9:SIGKILL,強制中斷一個進程的進行
15:SIGTERM,以正常的結束進程方式來終止進程
17:SIGSTOP,相當于輸入ctrl+z,暫停一個進程的進行
例如:
以正常的結束進程方式來終于第一個后臺工作,可用jobs命令查看后臺中的第一個工作進程
kill -SIGTERM %1
重新改動進程ID為PID的進程,PID可用ps命令通過管道命令加上grep命令進行篩選獲得
kill -SIGHUP PID
3.1.10、killall
該命令用于向一個命令啟動的進程發送一個信號,它的一般語法如下:
killall [-iIe] [command name]
它的參數如下:
[plain] view plain copy
-i :交互式的意思,若需要刪除時,會詢問用戶
-e :表示后面接的command name要一致,但command name不能超過15個字符
-I :命令名稱忽略大小寫
例如:
killall -SIGHUP syslogd # 重新啟動syslogd
3.1.11、file
該命令用于判斷接在file命令后的文件的基本數據,因為在Linux下文件的類型并不是以后綴為分的,所以這個命令對我們來說就很有用了,它的用法非常簡單,基本語法如下:
file filename
例如:
file ./test
3.1.12、tar命令
該命令用于對文件進行打包,默認情況并不會壓縮,如果指定了相應的參數,它還會調用相應的壓縮程序(如gzip和bzip等)進行壓縮和解壓。它的常用參數如下:
-c :新建打包文件
-t :查看打包文件的內容含有哪些文件名
-x :解打包或解壓縮的功能,可以搭配-C(大寫)指定解壓的目錄,注意-c,-t,-x不能同時出現在同一條命令中
-j :通過bzip2的支持進行壓縮/解壓縮
-z :通過gzip的支持進行壓縮/解壓縮
-v :在壓縮/解壓縮過程中,將正在處理的文件名顯示出來
-f filename :filename為要處理的文件
-C dir :指定壓縮/解壓縮的目錄dir
上面的解說可以已經讓你暈過去了,但是通常我們只需要記住下面三條命令即可:
壓縮:tar -jcv -f filename.tar.bz2 要被處理的文件或目錄名稱
查詢:tar -jtv -f filename.tar.bz2
解壓:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
注:文件名并不定要以后綴tar.bz2結尾,這里主要是為了說明使用的壓縮程序為bzip2
3.1.13、cat命令
該命令用于查看文本文件的內容,后接要查看的文件名,通常可用管道與more和less一起使用,從而可以一頁頁地查看數據。例如:
cat text | less # 查看text文件中的內容
注:這條命令也可以使用less(從后往前翻頁)或者more來代替
3.1.14、chgrp命令
該命令用于改變文件所屬用戶組,它的使用非常簡單,它的基本用法如下:
chgrp [-R] dirname/filename
-R :進行遞歸的持續對所有文件和子目錄更改
例如:
chgrp users -R ./dir # 遞歸地把dir目錄下中的所有文件和子目錄下所有文件的用戶組修改為users
3.1.15、chown命令
該命令用于改變文件的所有者,與chgrp命令的使用方法相同,只是修改的文件屬性不同,不再詳述。
3.1.16、chmod命令
該命令用于改變文件的權限,一般的用法如下:
chmod [-R] xyz 文件或目錄
-R:進行遞歸的持續更改,即連同子目錄下的所有文件都會更改
同時,chmod還可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(刪除)、=(設置)跟rwx搭配來對文件的權限進行更改。
權限分為寫,讀,可執行,對應權重421,所以7是代表所有權限
例如:
chmod 755 file # 把file的文件權限改變為-rxwr-xr-x
chmod g+w file # 向file的文件權限中加入用戶組可寫權限
3.1.18、vim命令
該命令主要用于文本編輯,它接一個或多個文件名作為參數,如果文件存在就打開,如果文件不存在就以該文件名創建一個文件。vim是一個非常好用的文本編輯器,它里面有很多非常好用的命令,在這里不再多說。你可以從這里下載 vim常用操作 的詳細說明。
3.1.19、gcc命令
對于一個用Linux開發C程序的人來說,這個命令就非常重要了,它用于把C語言的源程序文件,編譯成可執行程序,由于g++的很多參數跟它非常相似,所以這里只介紹gcc的參數,它的常用參數如下:
-o :output之意,用于指定生成一個可執行文件的文件名
-c :用于把源文件生成目標文件(.o),并阻止編譯器創建一個完整的程序
-I :增加編譯時搜索頭文件的路徑
-L :增加編譯時搜索靜態連接庫的路徑
-S :把源文件生成匯編代碼文件
-lm:表示標準庫的目錄中名為libm.a的函數庫
-lpthread :連接NPTL實現的線程庫
-std= :用于指定把使用的C語言的版本
3.1.20、time命令
該命令用于測算一個命令(即程序)的執行時間。它的使用非常簡單,就像平時輸入命令一樣,不過在命令的前面加入一個time即可,
例如:
time ./process
time ps aux
在程序或命令運行結束后,在最后輸出了三個時間,它們分別是:
user:用戶CPU時間,命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;
system:系統CPU時間,命令執行完成花費的系統CPU時間,即命令在核心態中執行時間總和;
real:實際時間,從command命令行開始執行到運行終止的消逝時間;
四、常用軟件和框架
postman,jmeter,docker,robotframework
五、計算機基礎類
這一塊內容非常多,需要的同學可以參考github上的內容,整理了面試常見的八股文,非常值得一看!
https://github.com/CyC2018
六、持續集成、敏捷等新興類
等待補充
總結
想把這篇文章寫得好一點全一點,因此寫這篇文章的周期會長一些,可能陸陸續續要寫上一個月左右~
引用
1、csdn部分
軟件測試筆試面試題目完全匯總-sunny王維
軟件測試常考面試題-軟件測試面試寶典-MJ813
20個linux常用命令
總結
以上是生活随笔為你收集整理的测试面试题+测试面试宝典(分类版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为基本法 读书笔记
- 下一篇: bpsk在瑞利信道matlab,请教BP