tft每日頭條

 > 生活

 > 如何進行異常測試

如何進行異常測試

生活 更新时间:2024-08-14 15:15:17

如何進行異常測試(不得不關注的異常測試)1

測試過程中,有些異常場景,需特别關注,下面是我整理的一些容易碰到有很容易引起重大問題的異常點,需從代碼設計階段需考慮進去的問題。

幂等性測試

幂等性在軟件中是指調用接口或服務時,多次相同的輸入會有相同的結果反饋和等同一次的處理結果。

1.常見幂等性場景

但不是所有業務都需要保證幂等性,常用的那些場景需要保證幂等性呢?

2.幂等性導緻問題的常見原因

l電商網站涉及訂單提交;

l涉及金額方面:如:付款、轉賬、額度扣減

l一些消息類發送等:如短信、郵件等

根據具體業務分析。如我所測試系統中:

1)保證金追加2)同一張票業務唯一性3)發送外圍系統的一些重要通知等

日常測試過程中,我們需要根據具體的業務場景,在設計評審和案例設計過程中需确定哪些場景要保證幂等性,這樣測試過程中才能快速發現問題。

用戶重複提交

測試方法:前端、後端進行重複提交(目前很多系統已經做了小白級别的控制,即前端重複提交,但實際情況中,重點場景一定要做到前、後端均進行控制

網絡或消息重發

目前很多提交都是異步提交,如短信發送,一般點擊發送過去就會提示發生成功。但實際是否發生成功,後續會有系列處理機制,根據消息的一些本身機制,後續處理過程中會進行重發機制。(MQ中可設置重複發送機制)。

測試方法:可在終端最後一步,或中間環節人為觸發多次發生。如:在消息隊列中重發,多次補收同一内容的報文等。

業務間的重試

有些業務特意設置在鍊接超時或者失敗時需重試,這時候就需要驗證幂等性處理。

測試方法:1)設計評審期間多關注2)模拟網絡連接超時等觸發重發機制。

如何進行異常測試(不得不關注的異常測試)2

緩存機制測試

為提升效率,很多系統應用了緩存機制,尤其一些電商網站或時效性要求高的系統,那麼

1)如何保持與DB同步性(即數據的實時性)

2)緩存設置的失效性

3)緩存異常時處理機制

4)緩存數據的存儲結構等就是測試時需關注的重點。

DB同步性(測試重點)

如對商品重要屬性進行了:新增、編輯(價格、庫存等重要信息)、删除時,如應用了緩存機制,那測試過程中就需要關注:DB的修改要同步緩存中。2)數據庫的字段進行更新,緩存中的存儲結構未進行更新。

測試方法:1)了解緩存内容,對數據進行操作;操作後緩存相應展示頁面查看(一般前台頁面查詢時會體現。

如數據庫結構發生變化,需測試緩存中數據的存儲

緩存失效性

有些關鍵數據放緩存中是有失效性的,需根據具體業務去了解相關失效性,還是永遠存儲。

測試方法:根據業務關鍵性數據的設置緩存的時間來測試業務的失效性。

緩存異常時系統處理(異常測試重點)

緩存溢出或丢失時,系統的業務是否能正常處理。一般的處理邏輯:1)重試機制2)數據獲取切換的DB。總之,不能因緩存異常,影響業務。

總之:緩存類測試,需設計階段時就需要考慮:邏輯性、容錯性、一緻性等問題,測試人員也需了解相關方面的知識及機制。

事物測試

事物測試的目的:

确保事物原子性:即在一個事物在某個節點發生故障,所有數據庫狀态的更新或一些操作(如給外圍發了通知)能正确回滾到事物開始之前。(測試重點,日常類似問題會很多)

測試方法:

1)測試時模拟事務正常返回失敗時的系統處理機制;

2)測試時,對數據庫:做手腳,如事物中要進行數據庫更新,則可對該數據進行行鎖、或删除數據、或試數據狀态無效,導緻事務某一操作失敗,進行了事物回滾。

3)大事物測試:如一個大事物中,包含了多個事物,需考慮事物之前邏輯順序,以及模拟各個事物失敗時,整個大事物的處理邏輯。

确保事物隔離性:多個事物并發處理數據時,能互不幹擾,保證數據的正确性。

測試方法:并發測試,大的方面主要包括:同時新增(主要看唯一性驗證);對同一數據同時修改保存;對同一數據一方删除,一方修改;對同一數據兩方同時删除;

具體舉例如下(可忽略舉例,比較啰嗦)

例1:購買某一商品的活動序列

1.客戶在前端選擇了商品,此時該商品的價格、數量等都已經确定,系統也對其做了相應的計算,單未提交;

2.系統管理員在管理端對該商品進行操作,如:删除、修改數量、修改金額、商品下架等

3.此時回到步驟1的頁面,點擊【提交】看系統如何處理?

例2:電子商務網站中用戶積分使用的一個活動序列:

1.某一客戶在機器A上讀取自己賬戶的積分為100元;

2.在機器B上讀取自己賬戶的積分同樣為100元;

3.在A機器上使用該客戶80元積分;

4.在B機器上使用該客戶70元積分;

5.此時在A.B兩個機器上的操作員對使用積分的購物同時點擊【提交】

正确的結果是:應該隻有一方成功,另一方給出合理提示信息;但處理不當就會導緻:兩個都成功,用戶積分為負值

例3:飛機訂票系統中的一個活動序列:

1.甲售票點(甲事務)讀出某航班的機票餘額A,設A=16.

2.乙售票點(乙事務)讀出同一航班的機票餘額A,也為16.

3.甲售票點賣出一張機票,修改餘額A←A-1.所以A為15,把A寫回數據庫.

4.乙售票點也賣出一張機票,修改餘額A←A-1.所以A為15,把A寫回數據庫.

5.結果明明賣出兩張機票,數據庫中機票餘額隻減少1。

如何進行異常測試(不得不關注的異常測試)3

并發測試

什麼是并發

多線程對同一段代碼同時執行,叫并發;但單個cpu的硬件環境是不坑内個有多個線程,一般多個cpu才能實現多并發。

目前實現并發控制的方式:數據庫行級鎖:悲觀鎖、樂觀鎖;全局分布式鎖;使用代碼級别的同步(synchronized)和鎖機制(Locks、atomic).代碼級别的鎖對于多機或分布式部署,不生效。

測試預防:

1)業務場景分析:那些功能會出現并發。

2)靜态代碼分析的一些工具可以檢測出來。

3)設計評審階段關注類似問題,從設計階段規避。

其它

金融行業,金額測試由為關鍵。

金額極值測試,尤其和外圍第三方交互過程中,對于大額度傳輸的測試。(傳輸類型不一緻,會導緻大金額成科學技術,會讓千萬以上數據按各位處理)

測試方法:常規邊界值,了解一些不同數據類型的處理格式。

金額中浮點問題:

1.是否進行了合理的四舍五入;

2.同一批次下,單條數據進行了四舍五入後,總合計是否正确,多一分或少一分

3.不同數據庫下進度處理的測試(支持多數據庫時,如有些數據庫存儲時會自動四舍五入,有些會做直接截取)

流水号、業務編号(如訂單号)等唯一性及最大值測試。

很多系統的一些關鍵字段值,都是按照一定的規則自動生成的。如時間戳 随機數;日期 數據庫sequencenumbe序列号或者時間戳 數據庫自增長ID等,那測試過程中就要确保其唯一性,以及最大值時的處理機制。

測試方法:1)通過并發測試,檢測其唯一性。

通過修改一些序列号或自增長ID到最大值後,檢查系統處理機制。如用sequence序列号數據庫修改到最大,檢查是否能合理生産唯一編号)

分享到此結束,歡迎小夥伴讨論留言。

作者:liyuan_400

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved