天天看點

軟體測試面試題及答案

作者:一個愛寫文章的人兒

今天抽空整理下軟體測試面試中的那點事兒吧,希望可以幫助正在找工作或想跳槽的家人們,可以找到高薪工作

1、什麼是軟體測試?

為了發現程式中的錯誤而執行程式的過程

2、軟體測試的目的?

增強軟體使用可靠性,發現軟體存在的不足和差異,提高軟體品質。簡單地說,就是替使用者受過,測試的最終目的是確定最終交給使用者的産品的功能符合使用者的需求,把盡可能多的問題在産品交給使用者之前發現并改正

3、軟體測試的目标

發現盡可能多的錯誤

測試是一個為了尋找錯誤而運作程式的過程

一個好的測試案例是指很可能找到迄今為止尚未發現的錯誤的用例

一個成功的測試是指揭示了迄今為止尚未發現的錯誤的測試

4、需求人員需要何時參加需求分析

如果條件允許,原則上來說,是越早介入需求分析越好,因為測試人員對需求了解越深刻,對測試工作的開展越有利,可以盡早的确定測試思路,減少與開發人員的互動,減少對需求了解上的偏差原則上,測試人員對需求了解得越深入對測試工作越有利,是以最好一開始就應該參加需求分析工作,這樣做可以帶來如下好處:

測試人員全程參與需求分析,對需求了解得很深入,減少了很多與開發人員的互動,節省了時間

早期确定測試用例的編寫思路,為測試打好基礎

可以擷取一些測試資料,為測試用例設計提供幫助

可以發現需求不合理的地方,降低了測試成本

測試人員主要的工作之一就是确認系統是否正确實作了需求

5、一個有廣告的紙杯子,請設計測試用例

測試項目:杯子

需求測試:檢視杯子使用說明書界面測試:檢視杯子外觀

功能度:用水杯裝水看漏不漏;水能不能被喝到安全性:杯子有沒有毒或細菌

可靠性:杯子從不同高度落下的損壞程度

可移植性:杯子在不同的地方、溫度等環境下是否都可以正常使用

相容性:杯子是否能夠容納果汁、白水、酒精、汽油等

易用性:杯子是否燙手、是否有防滑措施、是否友善飲用

使用者文檔:使用手冊是否對杯子的用法、限制、使用條件等有較長的描述

疲勞測試:将杯子盛上水(案例一)放 24 小時檢查洩漏時間和情況

壓力測試:用根針并在針上面不斷加重量,看壓強多大時會穿透

跌落測試: 杯子加包裝(有填充物),在多高的情況摔下不破損

震動測試: 杯子加包裝(有填充物),六面震動,檢查産品是否能應對惡劣的鐵路\公路\航空運輸

基本功能測試(邏輯功能測試)

(1)硬度:是否達到設計标準

裝載能力:在杯子内分别裝入少量的、半杯的、滿杯的,看其裝載量是否達到設計标準

裝載種類:開水(是否産生異味)、溫水、冷水、冰水、咖啡

(2)界面測試(UI 測試)。

看其形狀、大小設計是否适合人友善拿起

外觀是否吸引人(廣告嘛),賞心悅目

帶廣告的圖案沾水受是否掉色、模糊

(3)易用性測試

看其形狀、大小設計是否适合人友善拿起

殘障人士士用此杯去喝水的容程度

杯子設計是否上大下小,在運輸過程中可以套在一起有效利用空間,在使用時也容易拿開

(4)穩定性測試(24 X 7 測試)。裝入液體後記錄其多少以後漏水

(5)安全性測試。杯子所用的材料(包括紙基、塗層和廣告顔料)是否符合食品衛生标準,在内外溫

度等環境因素下是否會與所盛各種飲料相反應,而産生對人體有害的物質

6、linux檢視檔案用什麼指令,檢視程序用什麼指令

檢視檔案内容的指令有 more less head tail cat

檢視程序:ps -ef | grep 程序号

檢視日志檔案常用:less、view

7、寫出表的增删改查SQL文法

表的建立:create table 表名 (列名1 類型 限制,列2 類型 限制…)

表的删除:drop table 表名

插入記錄:insert into 表名…values…

更新記錄:update 表名 set 列名=值 where 條件

删除記錄:delete from 表名 where 條件

8、什麼是資料的完整性?

資料完整性指的是存儲在資料庫中的資料的一緻性和準确性

完整性分類:

(1)實體完整性:主鍵值必須唯一且非空。(主鍵限制)

(2) 引用完整性(也叫參照完整性):外鍵要麼為空,要麼引用主表中存在的記錄。(外鍵限制)

(3)使用者自定義完整性:針對某一具體關系資料庫中的限制條件

9、nginx,tomcat,apache 都是什麼?

Nginx (engine x) 是一個高性能的HTTP 和反向代理伺服器,也是一個 IMAP/POP3/SMTP 伺服器

Apache HTTP Server 是一個子產品化的伺服器,源于 NCSAhttpd 伺服器

Tomcat 伺服器是一個免費的開放源代碼的 Web 應用伺服器,屬于輕量級應用伺服器,是開發和調試JSP 程式的首選

10、常用 HTTP 協定調試代理工具有什麼?詳細說明抓取 HTTPS 協定的設定過程?

Fiddler 是一個 http 協定調試代理工具

打開Fiddler,進入 Tools-Options-HTTPS,配置允許抓取 HTTPS 連接配接和解析 HTTPS 流量,然後選擇要解析的來源,設定是否忽略服務證書錯誤(這些操作做完之後,在浏覽器方位 IP:8888,安裝證書就可以在浏覽器抓取 HTTPS 協定了)

11、接口測試的步驟有哪些?

1)發送接口請求

2)測試接口擷取傳回值

3)斷言:判斷實際結果是否符合預期

12、性能測試的類型都有哪些?

1)負載測試(Load Test)

通過逐漸增加系統負載,測試系統性能的變化,并最終确定在滿足性能名額的情況下,系統所能承受的最大負載量的測試

2)壓力測試(Stress Test)

通過逐漸增加系統負載,測試系統性能的變化,并最終确定在什麼負載條件下系統性能處于失效狀态,并以此來獲得系統能夠提供的最大服務級别的測試

壓力測試是一種特定類型的負載測試

3)疲勞強度測試

通常是采用系統穩定運作情況下能夠支援的最大并發使用者數或者日常運作使用者數,持續執行一段時間業務,通過綜合分析交易執行名額和資源監控名額來确定系統處理最大工作量強度性能的過程

疲勞強度測試可以反映出系統的性能問題,例如記憶體洩漏等

4)大容量測試(Volume Test)

對特定存儲、傳輸、統計、查詢業務的測試

13、appium 怎麼定位toast彈框

appium1.6以後回答需要更新u2進行定位

14、什麼是事務,知道事務送出、復原

事務是并發控制機關,使用者定義的一個操作序列。這些操作要麼都做,要麼都不做,是不可分割的的工作機關。通過事務,sql server能将邏輯相關的一組操作綁定在一起,以便伺服器保持資料的完整性,主要用于一些對操作過程的完整性比較高的程式。(事務的特性:原子性、一緻性、隔離性、持久性)

事務送出是送出事務的所有操作:具體來說就是将所有對資料庫的更新寫回到磁盤上的實體資料庫中,事務正常結束。

事務復原是資料庫傳回到事務開始的狀态;事務在運作過程中發生某種故障,事務不能繼續執行,系統将事務中對資料庫的所有已完成的更新操作全部撤銷,使資料復原到事務開始時的狀态。

15、怎麼進行資料庫優化

大緻是有8種方法:

a、選取最試用字段屬性

b、使用連接配接(join)代替子查詢

c、使用聯合(union)來代替手動建立的臨時表

d、使用事務

e、鎖定表

f、使用外鍵

g、使用索引

h、優化查詢語句

16、什麼是分布式系統架構

分布式架構系統簡單的說是運作在多個處理器上的軟體架構設計,分布式系統是建立在網絡之上的軟體系統、正是因為軟體的特性,是以具有高度的内聚性和透明性

17、資料庫中有使用過if等函數嗎?

if既可以作為表達式用,也可在存儲過程中作為流程控制語句使用

18、什麼是髒資料?

髒資料是在臨時更新(髒讀)中産生,比如事務A更新了某個資料項x,但是由于某種原因,事務A出現了問題,于是要把A復原。但是復原之前,另一個事務讀取了資料X的值(A更新後),A復原了事務,資料項恢複了原值。事務B讀取的就是資料項X的就是一個“臨時”值,這就是髒資料。=

19、現在有個程式,在Windows上運作得很慢,怎麼判别是程式存在問題還是軟硬體系統存在問題?

1、檢查系統是否有中毒的特征

2、檢查軟體/硬體的配置是否符合軟體的推薦标準

3、确認目前的系統是否是獨立,即沒有對外提供什麼消耗CPU資源的服務

4、如果是C/S或者B/S結構的軟體,需要檢查是不是因為與伺服器的連接配接有問題,或者通路有問題造成的

5、在系統沒有任何負載的情況下,檢視性能螢幕,确認應用程式對CPU/記憶體的通路情況

20、什麼是多線程

線程是程式中一個單一的順序控制流程,在單個程式中同時運作多個線程完成不同的工作,稱為多線程

21、linux中vim模式有

1、指令模式,2、編輯模式,3、末行模式

22、計算機網絡模型

七層模型(應用層、表示層、會話層、傳輸層、網絡層、資料鍊層、實體層)五層模型(應用層、傳輸層、網絡層、資料鍊層、實體層)

23、如果測試時間不夠,你會怎麼辦?

測試目前主要是産品測試和項目測試。做自己公司的産品測試,如果碰到不能按原計劃完成,本着為品質負責,一般都可以申請延期

如果是做項目,迫于合同和客戶驗收的壓力,碰到不能按原計劃完成的情況,就是項目風險了。而處理的方式基本都是“先測客戶比較關心的,比較常用的功能”,保證通過客戶驗收,拿到項目款。分析客戶驗收所關心的功能點(比如客戶最近幾天提過什麼需求,肯定要測試,因為時間短,他肯定記得),分析系統最脆弱的地方,走通所有業務流程等。而客戶驗收時候,不關心和不可能想到得地方可以不測試(比如系統中很多同步功能)

24、性能名額有哪些?

注冊使用者數、線上使用者數、并發使用者數、請求響應時間、事務響應時間、每秒點選數、吞吐率、業務成功率、tps(每秒事務處理數)、資源使用率,cpu、記憶體、帶寬等

25、測試的基本6大法則

功能性、可靠性、效率性、可移植性、可維護性、易用性

26、怎麼保證軟體測試品質

測試人員需要做的工作

測試政策的設計: 品質是多元度的,功能測試、性能測試、相容性測試等多種測試類型的結合

用例品質: 采用合适的用例方法、如何進行需求分析、用例評審

執行品質: 保證執行深度(界面、關聯子產品、資料庫、日志)與廣度(系統測試類型)

缺陷品質:bug評審,引入合适的bug流程

過程品質:合理的軟體測試流程,測試過程監控

27、android和ios系統測試的不同點

1、Android長按home鍵呼出應用清單和切換應用,然後右滑則終止應用

2、多分辨率測試,Android端20多種,ios較少

3、手機作業系統,Android較多,ios較少且不能降級,隻能單向更新;新的ios系統中的資源庫不能完全相容低版本中的ios系統中的應用,低版本ios系統中的應用調用了新的資源庫,會直接導緻閃退(Crash)

4、操作習慣:Android,Back鍵是否被重寫,測試點選Back鍵後的回報是否正确;應用資料從記憶體移動到SD卡後能否正常運作等;

5、push測試:Android:點選home鍵,程式背景運作時,此時接收到push,點選後喚醒應用,此時是否可以正确跳轉;ios,點選home鍵關閉程式和螢幕鎖屏的情況(紅點的顯示)

6、安裝解除安裝測試:Android的下載下傳和安裝的平台和工具和管道比較多,ios主要有appstore,iTunes和testflight下載下傳

7、更新測試:可以被更新的必要條件:新舊版本具有相同的簽名;新舊版本具有相同的包名;有一個标示符區分新舊版本(如版本号),對于Android若有内置的應用需檢查更新之後内置檔案是否比對(如内置的輸入法)

28、使用什麼指令實作檢視app手機記憶體

adb shell dumpsys meminfo 包名(com.mbox.cn)

29、給你的一個測試項目,你怎麼開展測試工作

在拿到項目後,在熟悉需求、原型圖後不必急着去設計用例,而是先需思考下測試思路,從哪方面下手,有哪些地方需要覆寫到,支援哪些平台,有哪些不同的常用場景,是否需要考慮到穩定性、性能等等,針對項目進行大概的測試規劃,再根據大概的規劃去逐個細化,最後形成用例,簡單來說就是:

1.明确測試任務

2.分析測試範圍

3.制定測試計劃和測試用例

30、什麼是cdn?

cdn的全稱是 Content Delivery Network 即内容分發網絡,通俗的了解就網站加速,CPU均衡負載,可以解決跨營運商,跨地區,伺服器負載能力過低,帶寬過少等帶來的網站打開速度慢等問題

31、程序、線程、協程的差別

1、一個程式至少有一個程序,一個程序至少有一個線程

2、線程的劃分尺度小于程序(資源比程序少),使得多線程程式并發性高

3、程序在執行過程中擁有獨立的記憶體單元,而多個線程共享記憶體,進而極大提高了程式的運作效率

4、線程不能獨立運作,必須依存于程序中

5、一個線程可以多個協程,一個程序也可以單獨擁有多個協程

6、線程程序都是同步機制,協程是異步機制

32、http協定與websocket協定的差別

http協定:每次都需要用戶端定時輪詢向伺服器請求,然後伺服器再向用戶端發送資料

websocket協定:允許服務端主動向用戶端推送資料,浏覽器和伺服器隻需要完成一次握手,兩者之間就可以建立持久性的連接配接,并進行雙向資料傳輸

保持連接配接狀态:與http不同的是,websocket需要先建立連接配接,這就使得其成為一種有狀态的協定,之後通信時可以省略部分狀态資訊。而http請求可能需要每個請求都攜帶狀态資訊

33、 性能測試通常需要監控的名額包括

1.伺服器Linux(包括CPU、Memory、Load、I/O)

2.資料庫:1.Mysql 2.Oracle(緩存命中、索引、單條SQL性能、資料庫[/url]線程數、資料池連接配接數)

3.中間件:1.Jboss 2. Apache(包括線程數、連接配接數、日志)

4.網絡: 吞吐量、吞吐率

5.應用: jvm記憶體、日志、Full GC頻率

6.監控工具(LoadRunner[/url]):使用者執行情況、場景狀态、事務響應時間、TPS等

7.測試機資源:CPU、Memory、網絡、磁盤空間

34、什麼是相容性測試?相容性測試側重哪些方面?

相容的類型,如果細分的話,有平台的相容,網絡相容,資料庫相容,以及資料格式的相容

相容測試的重點是,對相容環境的分析。通常,是在運作軟體的環境不是很确定的情況下,才需要做相容。根據軟體運作的需要,或者根據需求文檔,一般能夠得出使用者會在什麼環境下使用該軟體,把這些環境整理成表單,就得出做相容測試的相容環境了

35、單元測試的政策有哪些?

孤立的測試政策

孤立的測試政策是最簡單、最容易操作的,它屬于純單元測試。這種方法不考慮每個單元與其他單元之間的關系,為每個單元單獨設計定點單元和驅動單元來進行單元測試,可以達到較高的結構覆寫率。由于需要開發大量的樁單元和驅動單元,是以測試效率較低

自上而下的測試政策

自上而下的測試政策是先測試最頂層的單元,然後把頂層所調用的單元做成樁單元;其次測試第二層,把上面已經測試的單元作為驅動單元。以此類推,直到所有單元都測試完畢。這種方法節省了驅動單元的開發工作量,測試效率也很高。但是,随着被測試單元的逐一增加,測試過程變得越來越複雜,增加了開發和維護的成本

自下而上的測試政策

自下而上的測試政策是:首先對底層單元進行單元測試,并模拟調用該單元的單元作為驅動單元;然後對頂層進行單元測試,并将下面已經測試過的單元作為存根單元。以此類推,直到所有單元都測試完畢。這種方法節省了樁單元的開發工作量,具有較高的測試效率。由于底層單元的測試品質會對上層功能的測試産生很大的影響,而且随着底層單元的逐一加入,它更像是小粒度的內建測試,是以這種方法不是純粹的單元測試

36、LoadRunner 分哪三部分?

loadrunner 分為腳本生成器,場景控制器,結果分析器三個部分。LoadRunner,是一種預測系統行為和性能的負載測試工具。通過以模拟上千萬使用者實施并發負載及實時性能監測的方式來确認和查找問題

37、Beta 測試與 Alpha 測試有什麼差別?

Alpha測試是指把使用者請到開發方的場所來測試,beta測試是指在一個或多個使用者的場所進行的測試,Alpha測試的環境是受開發方控制的,使用者的數量相對比較少,時間比較集中,而beta測試的環境是不受開發方控制的,誰也不知道使用者如何折磨軟體,使用者數量相對比較多,時間不集中,一般地,alpha測試先于beta測試執行。通用的軟體産品需要較大規模的beta測試,測試周期比較長

38 、什麼是樁子產品?什麼是驅動子產品?

驅動子產品: 驅動子產品是用來模拟被測子產品的上一級子產品,相當于被測子產品的主程式。它接收資料并将相關資料傳送給被測子產品,啟用被測子產品并列印出相應結果。驅動子產品的目的很單純,就是通路類庫的屬性和方法來确定類庫是否正确

樁子產品: 樁子產品是模拟被測試子產品所調用的子產品,而不是軟體産品的組成部分。主程式作為驅動子產品,與之直接相連的子產品是樁子產品,也稱為“替身子產品”。樁子產品本身不執行任何功能,隻在它作為替身被調用時傳回靜态值

39、簡述一下缺陷的生命周期

缺陷的生命周期,指的是缺陷從被發現到被解決驗證通過的完整過程

一個缺陷的正常生命周期是 建立(送出)–打開(确認)–修複–測試驗證,通過就關閉,沒有通過就重新打開,繼續修複和驗證

缺陷周期:建立–送出–确認–配置設定–修複–驗證–關閉