天天看點

軟體測試面試常問問題及解答

一、工作流程?測試計劃、測試用例、測試報告都包含什麼内容?

工作流程如下:

軟體測試面試常問問題及解答

測試計劃:

1).應該做什麼(了解需求)

2).怎麼去做(測試方案,測試方法,測試工具,測試人員,測試環境)

3).什麼時候做(測試進度安排)

4).風險控制(标準的定義:包括BUG等級的定義,軟體測試通過标準的定義等)

測試用例:

項目名稱 功能子產品名 功能特性 測試目的 預置條件 參考資訊 版本号 編制時間 測試編号 測試用例名稱 重要級别 測試類型 操作步驟 作者 備注

測試報告:

測試概要(測試方法、範圍、 測試環境、工具) 測試結果與缺陷分析(功能、性能) 測試結論與建議(項目概況、測試時間 測試情況、結論性能彙總) 附錄(缺陷統計)

二、測試用例設計思路

功能方面考慮:根據業務流程、功能邏輯使用等價類劃分、邊界值、錯誤推測等測試方法設計

系統方面考慮:相容性測試(浏覽器、作業系統、手機機型)、應用環境(網絡)、性能測試(數量的考慮)、時序

安全性方面:SQL注入、特殊字元

三、工作中遇到過什麼問題 是怎麼解決的

 因人而異,最好讓面試官體會到你能積極主動的溝通解決問題

四、web測試與APP測試有什麼相同之處和不同之處

 1、相同點

不管是傳統行業的web測試,還是新興的手機app測試,都離不開測試的基礎知識,即是不管怎麼變,測試的原理依然會融入在這兩者當中。

1)設計測試用例時,依然都是依據邊界值分析法、等價類劃分等;

2)多數采用黑盒的測試方法,來驗證業務功能是否得到正确的應用;

3)需要檢查界面的布局、風格和按鈕等是否簡潔美觀、是否統一等;

4)測試頁面載入和翻頁的速度、登入時長、記憶體是否溢出等;

5)測試應用系統的穩定性等。

2、不同點

相對于web測試,手機軟體測試,除了要考慮基本的功能測試、性能等,還要考慮手機本身固有的屬性特征。是以對比web測試和手機測試,手機測試過程中還需要注意如下幾個方面特性:

1)手機作為通信工具,來電、去電、接收短信等操作都會對app應用程式産生影響,是以app測試第一個要考慮的屬性特征是:中斷測試。

中斷測試有人為中斷、新任務中斷以及意外中斷等幾種情況,主要從以下幾個方面進行驗證:

a.來電中斷:呼叫挂斷、被呼叫挂斷、通話挂斷、通話被挂斷

b.短信中斷:接收短信、檢視短信

c.其他中斷:藍牙、鬧鐘、插拔資料線、手機鎖定、手機斷電、手機問題(系統當機、重新開機)

2)手機使用者對app産品的安裝解除安裝操作:從上一個版本/上兩個版本直接更新到最新版本。

全新安裝新版本

新版本覆寫舊版本安裝

解除安裝舊版本,安裝新版本

解除安裝新版本,安裝新版本

3)版本的更新測試

4)手機不同機型和不同系統的适配:可以用monkey

5)APP打開速度的測試:讓開發寫個測試腳本在用戶端,監控一下伺服器響應後回到用戶端顯示的時間

6)APP安裝速度的測試

7)手機網絡測試:2G/3G/4G/wifi 等網絡下APP的運作情況

8)APP占用的手機cpu、記憶體及電池溫度、耗電量、流量的測試:Emmage

使用步驟:

  • 很簡單,就是安裝Emmage了
  • 運作Emmage,設定采樣的時間間隔,例子是10S采集一次的,當然你也可以選擇1S。
  • 選擇要測試的移動應用。
  • 開始測試。
  • 開始測試之前,其實會準備好一系列要跑的想法,一般我是按照Tab來分,性能測試呢主要目地是檢測常用的一些功能在手機端的性能表現,當然也可以真對某個功能反複的測試,原理是相通的,是以。。。
  • 開始測試之後,就會啟動我們要測試的應用。
  • 按照料想的方式進行操作應用,并記錄大概的時間點。
  • 操作應用完成之後,結束測試,
  • Emmagee就自動生成了報表,取出來可以進行下一步的分析。

9)web自動化測試使用的工具較常用的是QTP,而android手機自動化測試工具比較常用的是monkey、monkeyrunner。

五、報bug都包含哪些内容

1)bug的簡單描述

2)操作步驟、期望結果、實際結果、特殊資料/特定環境、錯誤截圖/錯誤日志

六、性能測試是如何做的  監控哪些名額

 見性能測試思路及性能測試課堂筆記

七、LR常用函數

一、關聯函數:

  web_reg_save_param("關聯名稱","LB=左邊界","RB=右邊界","Ord=1",

                     "Search=NoResource",LAST);

二、檢查點函數:

  web_reg_find("Fail=NotFound","Search=Body","SaveCount=regcheck(統計參數名)",

               "Text=需查找的文本",LAST);

三、添加集合點:

  lr_rendezvous("集合點名稱");

注意:集合點應放在事務外,否則将影響事務處理時間的統計;

  集合點政策在controller場景中進行設定。

四、LR腳本其他常見函數格式:

  1、web_link("網站或連結名稱","Text=需要單擊的連結名","Ord=2(存在多個同名連結時需要指定位置)",LAST);

  2、web_url("網站或連結名稱","URL=網站或連結位址",……,LAST);

  3、web_submit_form("login.pl",

                  "Snapshot=t3.inf",

                  ITEMDATA,

                  "Name=username","Value=admin",ENDITEM,……LAST);

  該函數會自動檢測在目前頁面上是否存在form,然後将後面的ITEMDATA資料進行傳遞;

  4、web_submit_data("login.pl",

                  "Action=網站URL",

                  "Method=POST",

                  ITEMDATA,……,LAST);

八、環境的搭建 部署

 Linux操作環境的常用指令:

安裝指令:rpm yum tar

其它指令:mkdir 建立 cp 複制  mv 移動 cat 打開文本 rm 删除  killall 殺程序 chmod 改變檔案的權限 chown 改變檔案所有者

九、SQL語句  至少連表查詢

例句:

1.圖書(圖書号、圖書名、作者編号、出版社、出版日期),作者(作者姓名、作者編号、年齡、性别),用一條SQL語句查詢年齡小于平均年齡的作者姓名、圖書名、出版社。

select a.作者姓名,b.圖書名,b.出版社 from 作者 a join 圖書 b on a.作者編号=b.作者編号 where a.年齡<(select AVG(年齡) from 作者)

2.升序降序查詢:ORDER by 字段名 DESC(降序)/ASC(升序)

3.删除:DELETE

4.更新:Update

5.從第五行開始查,查5行:select * from 表 LIMIT 4,5;

6.分組:group by

十、Monkey指令 :(詳見Money知識篇)

adb shell monkey-p 包的簽名 -v -v (日志) --ignore crashes/timeout  (異常處理)--pct-touch (動作百分比)

十一、Linux下資料庫的使用

資料庫操作指令:

連接配接資料庫:MySQL-h-u 使用者名-p 密碼 

修改密碼:mysqladmin -u使用者名 -p舊密碼 password 新密碼

常用:Use、 Create 、Show databases、 Show tables、 Drop 、Delete、 Insert 

十二、接口測試是怎麼做的

 接口驗證和資料庫驗證 :驗證接口的連通性及輸入參數後的傳回結果是否正确;連結資料庫(先驅動資料庫、在連接配接、查詢、關閉資料庫)查詢是否插入相應的資料

十三、Java冒泡程式(可參考)

冒泡排序(Bubble Sort)是一種簡單的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

  冒泡排序算法的運作如下:

  1.  比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2.  對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3.  針對所有的元素重複以上的步驟,除了最後一個。
  4.  持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

代碼

1 public class BubbleSort{
 2      public static void main(String[] args){
 3          int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
 4          for (int i = 0; i < score.length -1; i++){    //最多做n-1趟排序
 5              for(int j = 0 ;j < score.length - i - 1; j++){    //對目前無序區間score[0......length-i-1]進行排序(j的範圍很關鍵,這個範圍是在逐漸縮小的)
 6                  if(score[j] < score[j + 1]){    //把小的值交換到後面
 7                      int temp = score[j];
 8                      score[j] = score[j + 1];
 9                      score[j + 1] = temp;
10                  }
11              }            
12              System.out.print("第" + (i + 1) + "次排序結果:");
13              for(int a = 0; a < score.length; a++){
14                  System.out.print(score[a] + "\t");
15              }
16              System.out.println("");
17          }
18              System.out.print("最終排序結果:");
19              for(int a = 0; a < score.length; a++){
20                  System.out.print(score[a] + "\t");
21         }
22      }
23  }      

轉載于:https://www.cnblogs.com/minna/p/5267876.html