1. 程式人生 > 實用技巧 >軟體測試筆試題--總結1

軟體測試筆試題--總結1

1 軟體測試遵循的原則:

1、所有的測試都應追溯到使用者需求。因為軟體的目的是使使用者完成預定的任務,滿足其需求,而軟體測試揭示軟體的缺陷和錯誤,一旦修正這些錯誤就能更好地滿足使用者需求。
2、應儘早地和不斷地進行軟體測試。由於軟體的複雜性和抽象性,在軟體生命週期各階段都可能產生錯誤,所以不應把軟體測試僅僅看作是軟體開發的一個獨立階段,而應當把它貫穿到軟體開發的各個階段去。在需求分析和設計階段就應開始進行測試工作,編寫相應的測試計劃及測試設計文件,同時堅持在開發各階段進行技術評審和驗證,這樣才能儘早發現和預防錯誤,杜絕某些缺陷和錯誤,提高軟體質量,測試工作進行得越早,越有利於提高軟體的質量,這是預防性測試的基本原則。


3、在有限的時間和資源下進行完全測試,找出軟體所有的錯誤和缺陷是不可能的,軟體測試不能無限進行下去,應適時終止。因為,測試輸入量大、輸出結果多、路徑組合太多,用有限的資源來達到完全測試是不現實的。
4、測試只能證明軟體存在錯誤而不能證明軟體沒有錯誤,測試是無法顯示潛在的錯誤和缺陷,繼續進一步錯誤可能還會找到其它錯誤和缺陷。
5、充分關注測試中的叢集現象。在測試的程式段中,若發現的錯誤數目多,則殘存在其中的錯誤也越多,因此應當花較多的時間和代價測試那些具有更多錯誤數目的程式模組。
6、程式設計師應避免檢查自己的程式。考慮到人們的心理因素,自己揭露自己程式中的錯誤是件不愉快的事,自己不願意否認自己的工作;另一方面,由於思維定勢,自己難以發現自己的錯誤。因此,測試一般由獨立的測試部門或第三方機構進行。

7、儘量避免測試的隨意性。軟體測試是有組織、有計劃、有步驟的活動,要嚴格按照測試計劃進行,要避免測試的隨意性。
 為了發現更多的錯誤讓系統更完善,設計測試用例時不但要選擇合理的輸入資料作為測試用例,而且要選擇不合理的輸入資料作為測試用例,使得系統能應付各種情況。

  測試過程不但要求軟體開發人員參與,而且一般要求有專門的測試人員進行測試,並且還要求使用者參與,特別是驗收測試階段,使用者是主要的參與者。

2編寫測試計劃的目的是:()

A、使測試工作順利進行B、使專案參與人員溝通更舒暢C、使測試工作更加系統化

D、軟體工程以及軟體過程的需要E、軟體過程規範化的要求F、控制軟體質量

正確答案:A,B,C

3下列不是在軟體故障插入測試技術中關注的方面是___B___。

A.故障型別

B.故障對系統的破壞程度

C.插入故障的方法

D.目標系統

4在oracle資料庫中,關於索引描述正確的是

  • 需要對大資料型別建立索引
  • 對於大表,索引能明顯提高查詢效率
  • 在資料表上建立唯一約束,會自動生成唯一索引
  • 我們最常用到的是B-Tree索引
正確答案:B C D 5基礎必備http://www.doc88.com/p-8912526712943.html

6下列測試用例設計方法可以用來為正向測試設計的是_C_____。

A.錯誤猜測法

B.邊界值分析

C.狀態遷移測試

D.內部邊界分析

7你覺得自動化測試有什麼意義,都需要做些什麼

參考回答:

自動化測試的意義在於

1、可以對程式的新版本自動執行迴歸測試

2、可以執行手工測試困難或者不可能實現的測試,如壓力測試,併發測試,

3、能夠更好的利用資源,節省時間和人力

執行自動化測試之前首先判斷這個專案適不適合推廣自動化測試,然後對專案做需求分析,指定測試計劃,搭建自動化測試框架,設計測試用例,執行測試,評估

8請說一下手動測試與自動化測試的優缺點

參考回答:

手工測試缺點:

1、重複的手工迴歸測試,代價昂貴、容易出錯。

2、依賴於軟體測試人員的能力。

手工測試優點:

1、測試人員具有經驗和對錯誤的猜測能力。

2、測試人員具有審美能力和心理體驗。

3、測試人員具有是非判斷和邏輯推理能力。

自動化測試的優點:

1、對程式的迴歸測試更方便。這可能是自動化測試最主要的任務,特別是在程式修改比較頻繁時,效果是非常明顯的。由於迴歸測試的動作和用例是完全設計好的,測試期望的結果也是完全可以預料的,將回歸測試自動執行,可以極大提高測試效率,縮短迴歸測試時間。

2、可以執行更多更繁瑣的測試。自動化的一個明顯的好處是可以在較少的時間內執行更多的測試。

3、可以執行一些手工測試困難或不可能進行的測試。比如,對於大量使用者的測試,不可能同時讓足夠多的測試人員同時進行測試,但是卻可以通過自動化測試模擬同時有許多使用者,從而達到測試的目的。

4、更好地利用資源。將繁瑣的任務自動化,可以提高準確性和測試人員的積極性,將測試技術人員解脫出來投入更多精力設計更好的測試用例。有些測試不適合於自動測試,僅適合於手工測試,將可自動測試的測試自動化後,可以讓測試人員專注於手工測試部分,提高手工測試的效率。

5、測試具有一致性和可重複性。由於測試是自動執行的,每次測試的結果和執行的內容的一致性是可以得到保障的,從而達到測試的可重複的效果。

6、測試的複用性。由於自動測試通常採用指令碼技術,這樣就有可能只需要做少量的甚至不做修改,實現在不同的測試過程中使用相同的用例。

7、增加軟體信任度。由於測試是自動執行的,所以不存在執行過程中的疏忽和錯誤,完全取決於測試的設計質量。一旦軟體通過了強有力的自動測試後,軟體的信任度自然會增加。

自動化測試的缺點:

1、不能取代手工測試

2、手工測試比自動測試發現的缺陷更多

3、對測試質量的依賴性極大

4、測試自動化不能提高有效性

5、測試自動化可能會制約軟體開發。由於自動測試比手動測試更脆弱,所以維護會受到限制,從而制約軟體的開發。

6、工具本身並無想像力

9.下列關於事務的敘述,正確的是( C)。


A.確保永續性是資料庫系統中事務管理部件的責任
B.序列地執行事務不是解決事務併發執行問題的一種方式
C.一旦中止事務造成的變更被撤銷,則稱事務已回滾
D.如果每個事務都保證一致性和原子性,即使它們併發執行,也有可能導致不一致狀態

保證原子性是資料管理系統中事務管理部件的責任。保證一致性是對該事務編碼的應用程式設計師的責任,完整性約束的自動檢查有助於保持一致性。保證永續性是資料庫系統中恢復管理部件的責任,因此選項A)是錯誤的。對於選項B),解決事務併發執行問題的一種方法是序列地執行事務,但這樣效能較低。事務併發執行可以顯著改善效能,因此使用併發控制部件來控制事務的併發執行,因此選項B)也是錯誤的。對於選項D),即使每個事物都能確保一致性和原子性,但如果幾個事務併發執行,它們的操作可能會以人們所不希望的某種方式交叉執行,這也會導致不一致的狀態,因此選項D)也是錯誤的。

10若事務T對資料物件A加上S鎖,則( )。

  • 事務T可以讀A和修改A,其它事務只能再對A加S鎖,而不能加X 鎖。
  • 事務T可以讀A但不能修改A,其它事務能對A加S鎖和X鎖。
  • 事務T可以讀A但不能修改A,其它事務只能再對A加S鎖,而不能加X 鎖。
  • 事務T可以讀A和修改A,其它事務能對A加S鎖和X鎖。
正確答案:C 1.共享鎖(S鎖):如果事務T對資料A加上共享鎖後,則其他事務只能對A再加共享鎖,不能加排它鎖。獲准共享鎖的事務只能讀資料,不能修改資料。 排他鎖(X鎖):如果事務T對資料A加上排他鎖後,則其他事務不能再對A加任任何型別的封鎖。獲准排他鎖的事務既能讀資料,又能修改資料。 共享鎖(S鎖):讀鎖,可檢視但無法修改和刪除,已加該鎖則其他事務只能加S鎖; 排他鎖(X鎖):寫鎖、獨佔鎖,可寫可讀,已加該鎖則其他事務不能再加任何型別的鎖;

11判斷輸入是否是中文:

def is_Chinese(word):
  for ch in word:
    if '\u4e00' <= ch <= '\u9fff':
      return True
  return False
print(is_Chinese("中文"))

12事務的特性https://blog.csdn.net/u010960184/article/details/82557978

13儲存管理中的抖動現象

在虛擬儲存dao的頁式儲存的換頁過程源中,如bai果選用了一個不合適的排程演算法du,就會出zhi現這樣的現象:dao剛被淘汰了的頁面又立即要用,又要把它調入進來,而調入不久又被調出,調出不久再次被調入,如此反覆,使得排程非常頻繁,以至於大部分時間都花費在來回排程上。這種現象叫“抖動”。一個好的排程演算法應減少和避免抖動現象

14OSI介紹

https://www.cnblogs.com/qishui/p/5428938.html

15delete誤操作的回滾

操作資料庫時候難免會因為“大意”而誤操作,需要快速恢復的話通過備份來恢復是不太可能的,因為需要還原和binlog差來恢復,等不了,很費時。這裡先說明下因為Delete 操作的恢復方法:主要還是通過binlog來進行恢復,前提是binlog_format必須是Row格式,否則只能通過備份來恢復資料了。

16在C語言中,關於靜態變數的說法,正確的有()

  • 靜態變數和常量的作用相同
  • 函式中的靜態變數,在函式退出後不被釋放
  • 靜態變數只可以賦值一次,賦值後則不能改變
  • 靜態全域性變數的作用域為一個程式的所有原始檔
1、靜態變數在記憶體的靜態儲存區,靜態資料一直佔有著該儲存區單元直到程式結束; 2、靜態區域性變數只宣告一次,一旦申請記憶體成功,不再接受重複申請; 3、靜態區域性變數的作用域與一般區域性變數一樣,二者區別在於以上兩點:一般區域性變數在函式呼叫結束後釋放變數佔用的儲存單元,而靜態區域性變數不釋放。 注意:由於靜態區域性變數在記憶體中存在的時間較長,即佔用記憶體時間較長,故應儘量少用static來修飾變數(有剛需除外)。

連結:https://www.nowcoder.com/questionTerminal/e46723f3a2f14f7b98ec46d12090cf04?orderByHotValue=2&done=0&pos=13&onlyReference=false
來源:牛客網

A.靜態變數與常量作用不同: static:改變生命週期和限制作用域 (1)作用於變數 (2)作用與函式 const:"只讀" (1)定義常量 (2)修飾指標 (3)修飾函式中的引數和返回值 B.函式中的靜態變數:用static宣告,使變數成為靜態區域性變數,編譯時就為變數分配記憶體,直到程式退出時釋放記憶體,在函式結束後不會被釋放 C.靜態變數只進行一次初始化,但是它的值是可以改變的,也就是說可以被賦值 D.static靜態全域性變數只能在定義它的檔案中使用 所以正確答案為B

17

  • 空類編譯器會將sizeof()的值變為1;
  • 類的大小隻與非靜態成員變數和虛擬函式的大小有關,而與其他普通函式成員無關,與建構函式解構函式也無關,與靜態成員函式與靜態成員變數也無關。類中含虛擬函式,編譯器會自動生成一個虛擬函式表,類需要一個指標來指向該虛表,因此類的sizeof()為4;
這裡,普通函式不算; 只計算非static資料成員,這裡為4; 還有就是虛擬函式,這裡也為4;需要指出,這裡的4是因為存在指向虛擬函式表的指標(也就是,若存在多個虛擬函式,也為4) 所以,總的為8 普通成員函式不算到位元組裡面,虛擬函式有一個指向虛擬函式列表的指標,無論有多少個虛擬函式都是佔用一個位元組的大小。 https://blog.csdn.net/u013379794/article/details/51112295

18問題:Static的理解

關於static變數,請選擇下面所有說法正確的內容:
A、若全域性變數僅在單個C檔案中訪問,則可以將這個變數修改為靜態全域性變數,以降低模組間的耦合度;
B、若全域性變數僅由單個函式訪問,則可以將這個變數改為該函式的靜態區域性變數,以降低模組間的耦合度;
C、設計和使用訪問動態全域性變數、靜態全域性變數、靜態區域性變數的函式時,需要考慮重入問題;
D、靜態全域性變數過大,可那會導致堆疊溢位。
答案與分析:
對於A,B:根據本篇概述部分的說明b),我們知道,A,B都是正確的。
對於C:根據本篇概述部分的說明a),我們知道,C是正確的(所謂的函式重入問題,下面會詳細闡述)。
對於D:靜態變數放在程式的全域性資料區,而不是在堆疊中分配,所以不可能導致堆疊溢位,D是錯誤的。
因此,答案是A、B、C。
問題:不可重入函式
曾經設計過如下一個函式,在程式碼檢視的時候被提醒有bug,因為這個函式是不可重入的,為什麼?
檢視原始程式碼
  1. unsignedintsum_int(unsignedintbase )
  2. {
  3. unsignedintindex;
  4. staticunsignedintsum=0;// 注意,是static型別的。
  5. for(index=1; index<=base; index++)
  6. {
  7. sum+=index;
  8. }
  9. returnsum;
  10. }

答案與分析:
所謂的函式是可重入的(也可以說是可預測的),即:只要輸入資料相同就應產生相同的輸出。
這個函式之所以是不可預測的,就是因為函式中使用了static變數,因為static變數的特徵,這樣的函式被稱為:帶“內部儲存器”功能的的函式。因此如果我們需要一個可重入的函式,那麼,我們一定要避免函式中使用static變數,這種函式中的static變數,使用原則是,能不用盡量不用。
將上面的函式修改為可重入的函式很簡單,只要將宣告sum變數中的static關鍵字去掉,變數sum即變為一個auto 型別的變數,函式即變為一個可重入的函式。
當然,有些時候,在函式中是必須要使用static變數的,比如當某函式的返回值為指標型別時,則必須是static的區域性變數的地址作為返回值,若為auto型別,則返回為錯指標。

19sql根據職稱分別統計男女各多少人

select 職稱,baisum(case when sex='男' then 1 else 0 end) as 男教師du數zhi,sum(case when sex='女' then 1 else 0 end) as 女教師數 from 教師表
group by 職稱dao

20對學號和課程建立一個索引

create unique index grade_id_c_ind on grade(學號,課程編號)

21

22一個缺陷報告必須包含以下核心要素:

1)測試環境zhi
2)軟體版本
3)缺陷標題(問題描述)
4)測試步驟
5)期望結果
6)實際結果
7)詳細日誌及介面截圖

23 1nosql資料庫比較

https://blog.csdn.net/sunzhiwei_/article/details/81566984

24實時檢視檔案的更新

在linux系統裡輸入命令tail -f /dzqc/1.txt

25python 物件引用計數增加和減少的情況

https://blog.csdn.net/weixin_30486037/article/details/96596289

26windows下檢視mac地址

執行“ipconfig /all”命令後,即可看到電腦網絡卡的相關資訊,在下面找到一項“實體地址”後面的數字串就是此電腦的MAC地址了

27分辨伺服器是linux系統還是Windows系統

通過ping命令測試,檢視返回的TTL值。TTL=128,這是WINNT/2K/XP。 TTL=32,這是WIN95/98/ME,TTL=256,這是UNIX。 TTL=64,這是LINUX。

ttl:TTL是Time To Live的縮寫,該欄位指定IP包被路由器丟棄之前允許通過的最大網段數量。

28topk問題

293個實用命令幫你詳細定位網路排查問題點

https://www.bilibili.com/read/cv7509221

pingtraceroute,route,ipconfig