從千年蟲,閏年蟲,閏秒蟲看測試數(shù)據(jù)設(shè)計
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/7/10 11:09:03 ] 推薦標簽:
前幾天看到一個很有趣的微博(見圖1:)當(dāng)然這事兒對發(fā)博的人肯定沒有趣,又查了一下閏秒的概念:
原來我們的時間計算有兩種方式,一種是類似于古人看太陽位置或者用日冕的“天文法”,獲得的時間稱之為世界史;一種是利用原子振蕩周期計算的“原子法”,我們生活中用的時間都是第一種,而計算機系統(tǒng)則大量使用第二種。在大部分場合這倆時間完全一致,但是由于現(xiàn)在地球越轉(zhuǎn)越慢(或許歲數(shù)也大了 Orz),所以還是有微小的誤差,為了平衡這種誤差,由國際計量局統(tǒng)一規(guī)定在年底或年中(也可能在季末)對協(xié)調(diào)世界時增加或減少1秒的調(diào)整。2012年7 月1日我們見證了一個閏秒(北京時間為7:59:60)。
圖1
合著閏秒是計時領(lǐng)域的一種調(diào)整,但是這個調(diào)整卻給全世界IT系統(tǒng)帶來了麻煩,除了微博中提到的芬蘭航空管理系統(tǒng),許多使用Linux系統(tǒng)服務(wù)器也發(fā)生了問題,這是因為,Linux內(nèi)核2.6.29之前版本存在bug,在進行閏秒調(diào)整時可能會引起系統(tǒng)時鐘服務(wù)ntpd進程死鎖。許多使用Linux服務(wù)器的網(wǎng)站都遇到了問題(不過看報道,都是國外網(wǎng)站,國內(nèi)網(wǎng)站似乎很平靜,難道我們的網(wǎng)站都是用Windows Server?)
類似的案例,在我國還有一個事件,由于出租車計價器芯片沒有2月29日,廣州的上千輛出粗車在這天趴窩。
與時間有關(guān)的經(jīng)典的bug當(dāng)然還是“千年蟲”了,由于采用了兩位紀年用于節(jié)省存儲空間,全世界的軟件在2000年1月1日都可能會宕機(系統(tǒng)無法識別00代表2000還是1900),在那個互聯(lián)網(wǎng)還不發(fā)達,操作系統(tǒng)不能偷偷在后臺打補丁的年代,各大軟件公司都在四處郵寄補丁光盤,并在惴惴不安中渡過了新年。
從這些案例我想到的是測試設(shè)計的問題:如何優(yōu)化我們的時間相關(guān)數(shù)據(jù)設(shè)計?
首先,時間數(shù)據(jù)的等價類劃分應(yīng)該更加細致,除了一個有效時間和一個無效時間,還應(yīng)該有閏年、閏月、閏秒數(shù)據(jù)。由于時間是廣泛相關(guān)數(shù)據(jù),縱使被測軟件可以正確處理,被測軟件相關(guān)的其他軟件(操作系統(tǒng),數(shù)據(jù)庫,Java虛擬機等)也有可能會出問題(例如Linux內(nèi)核的那個bug),所以這種廣泛測試是必要的。這種測試可以作為一個單獨的檢驗用例或者探索測試執(zhí)行。
其次,時間的廣義邊界值測試。大部分測試者都知道測試輸入框的顯性邊界值,但是很少有人去測試時間這個隱形邊界值。時間可能不是我們手動輸入的,但是它還是每時每刻在做為隱形輸入在影響著我們的系統(tǒng)。而當(dāng)時間處于交界點(跨年,跨天,或者某個時刻)時,問題會發(fā)生。例如我在過去測試中遇到每天早上 8點整某個信息管道會丟失數(shù)據(jù)。
再擴展一點是,我做測試時,經(jīng)常揪住省份這個選擇框不放,別看這是簡單的錄入信息(提問,中國有多少個省級單位?如果不知道的話,自己去 baidu吧),要么少了,要么多了,要么名字不對,有相當(dāng)?shù)臋C會發(fā)現(xiàn)問題。新浪微博不也出過“湖北省省會是哪里”回答武漢,系統(tǒng)提示“您的回答有誤”……這種烏龍事件嗎。
時間,省份這都是非常簡單的輸入,但是這都只是看似簡單而已,內(nèi)里還是有很多門道,因為他們涉及到其他領(lǐng)域的知識:政治、人文,地理,歷史等等。
所以,測試(尤其是黑盒測試,手工測試)是一個入門容易,做好難的職位,單單是時間這么常見的數(shù)據(jù),有很多潛在知識,從設(shè)計和分析上都需要注意,更何況復(fù)雜的業(yè)務(wù)系統(tǒng),或者專業(yè)軟件。所以終歸測試是離不開人的因素的,測試時要“動腦子”,要不斷提高理解,要不斷的學(xué)習(xí),而不是只對著用例文檔一行行的做機器人:這種機器人工程師,早晚會被機器人測試腳本取代。而那些真正動腦子的工程師,才擁有未來。
ps:寫完這篇文章的時候,看到一篇報道說“美國政府表示閏秒的推行不是好事,他們指出,因為這個閏秒將會導(dǎo)致很多計算機系統(tǒng)運行困難。目前,國際電信聯(lián)盟(ITU)已經(jīng)接受美國提出的取消閏秒的提案。不過關(guān)于這個提案的討論活動預(yù)計要推遲到2015年。”——這聽起來好耳熟啊:“我們的軟件無法實現(xiàn)這樣的功能,所以請取消這個需求”……
相關(guān)推薦
相關(guān)產(chǎn)品

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10