需求定義中的不支援——可能的測試盲區
一款產品必然有其系統需求或規格,在設計說明中定義清楚的不支援,不實現的功能或特性,有的時候也可能是測試設計中的盲區。
(舉例:需求定義產品產品的一些屬性為——xx系統不支援win7之前的系統,xx系統只支援ie核心瀏覽器,xx系統和yy系統的早期版本不相容。)
例項:
某款平台產品,從version1開始,幾年下來已經迭代到version4,期間接入了n多種終端產品,外設產品,資料庫,web伺服器。因為相容性太過龐大,產品分支拉的也密密麻麻,導致維護和測試都非常耗時。藉著技術重大更新的機會,平台產品開發了version5版本,對早期的相容性經過詳細的討論和設計,約定好只支援幾個重大分支的終端,外設產品。
這個版本規劃喜大普奔,團隊內外都說以後就省時省力了。但很不幸在版本進行beta測試時,忽然出現了平台崩潰的致命問題。
排查下來是乙個明確不支援的早期版本裝置,接入了平台,導致了平台的異常。從測試設計的角度,這就是疏漏之處。產品明確定義了不支援,並不意味著就可以在測試中不用考慮此類場景。按照邊界值的測試設計,這種明確不支援的專案,也可以理解為n+1的邊界值。
接入「明確不支援」的裝置,然後可以驗證很多專案:
1、相容容錯性,雙方系統是否有異常/崩潰/重啟。
2、設計友好性:是否有人性化的提示——比如版本太老,請公升級新版本。
3、設計嚴謹性:直接提示禁止接入。
從產品設計的角度,相容性的保護沒有設計好,肯定是設計疏漏,但是測試沒有能夠及時設計場景驗證此問題,主要責任還是在測試設計方面。
這也是測試設計需要注意的環節。
規格書中明確明確的,***功能不支援,或者***版本不相容,只支援xx系統,xx瀏覽器等等。這些並不代表測試可以不測試。這就是很明顯的健壯性和邊界值保護測試。
但是事物具有一體兩面性,不考慮是不對的,但是也不要陷入到過度設計的牛角尖裡面去。
從測試設計和投入產出的實際情況來說,前者(win7之前)幾乎是肯定不用測試,後者(android4之前)可能不用測試,也可能用測試。
這就是此類測試設計的乙個常規分類,產品的性質、客戶、覆蓋面等等,需要綜合考慮。按照測試設計從少到多來排序,如下:
一、作業系統相容性。
可以就按照需求定義所支援的系統進行測試,不需要過多的考慮不支援的產品。
首先,既然產品敢這麼定義,就意味著產品本身就不是qq、wps這種,需要全版本相容的覆蓋面非常廣的產品,而是有可能是特定使用者,特定環境,或者使用目標客戶精準的產品。所以就沒有太多的必要,過度測試。比如守望先鋒,你興致勃勃安裝完,發現卡的一塌糊塗,你也不會罵暴雪產品爛,只會怪自己沒看清楚軟體執行的系統要求,然後自己去買顯示卡。
二、web客戶端對瀏覽器的相容性。
同理,產品既然設計如此,必然有其道理,如果使用者是全覆蓋型別,你設計產品說不支援chorme瀏覽器,可能會被同類產品直接淘汰。但是如果是給公司內部用的oa系統,erp系統等,完全可以通過行政要求的方式搞定,只需要在某核心的瀏覽器下完美實現即可。
所以測試設計,也是輕量級的測試設計,找幾款其他核心的瀏覽器,大概的安裝使用一下,看是否會有提示「本產品支援xx瀏覽器」,是否會出現系統異常,導致瀏覽器崩潰,或者作業系統無響應,就可認為達到設計目的。
在手機作業系統上,可以明確不相容,但是因為載體的不可控性,這部分還是需要測試的。同樣,現在網上的模擬雲挺多,也不需要實體機刷rom,投入和產出還是正向的。
四、自己產品之間的相容性。
比如說某種行業產品,比如超市的掃碼計費系統,小區樓宇的報警系統等,從平台、到終端,從軟體到裝置,都是自己做的,那麼這種公升級的相容性,反而是產品設計和測試設計的重點。
新產品的迭代,可以明確不支援某種老產品/老版本,但是要給出友好的提示,或者明確的解決方案。
所以這種測試,往往就是xy的一張表,或者xyz的對通表,乙個個測試過去,打勾打叉,枯燥繁瑣,但是事關重要。
本文主要描述了測試設計可能的乙個盲區——規格明確不支援的功能/特性。但同時也明確了不要過度設計,否則就是浪費成本和專案時間。
測試設計實際上是乙個複雜的加權係數的模型,和產品、客戶、使用方式、頻率、缺陷修復成本、行業、公司很多的因素相關,切不可一概而論。
mysql不支援 MySQL不支援的特性
mysql 1 不支援物化檢視。2 不支援位圖索引。3 不支援並行查詢。4 不支援雜湊關聯,mysql的所有關聯都是巢狀迴圈關聯。不過,可以通過建立乙個雜湊索引來曲線實現。5 不允許對同一表同時進行查詢和更新。報錯 update tb1 as outer tb1 set cnt select cou...
Hive的on不支援非等值連線解決,不支援or
oracle select a.b.id asb id,b.class as b class from lpx test a a left outer join lpx test b b on a.id b.id and a.class b.class 連線條件的第二個是非等值的,不能照搬上面 hi...
Mysql中不支援的Oracle函式
最近在更換資料庫,在改sql的時候有些oracle中的函式在mysql中不支援,記錄一下。1.oracle中的nvl 字段,替代值 此函式的意義為如果欄位是null那麼就用替代值代替這個空欄位對應的值 select nvl age,18 as age from user 這裡面如果某個人的age欄位...