材料收集
你服務(wù)于一個數(shù)據(jù)庫查詢業(yè)務(wù),某次客戶現(xiàn)場反饋查詢某個語句長時間未返回結(jié)果,耗時已經(jīng)遠遠超過項目對外提供的性能報告承諾給用戶最長查詢時間。
問題和相關(guān)日志已經(jīng)傳遞回來,開發(fā)人員進行原因分析和故障修復(fù),測試人員進行故障復(fù)盤和測試改進。
這一切看起來都在正常的進行下去,但是作為測試人員的你是不是會不自主地冒出這么一句:為什么我沒有測試出來呢?
那么,為什么會沒有測試出來呢?
![]()
故障復(fù)盤
“沒有測試出來”剖析最根本的原因無非可能有兩點:
1、缺少對應(yīng)的測試用例;
2、具有相應(yīng)的測試用例,但測試環(huán)境與客戶現(xiàn)場相差太大。
那么,你可能還會繼續(xù)問自己:為什么會缺少對應(yīng)的測試用例呢?
缺少對應(yīng)的測試用例
至于測試用例的缺失,從客戶需求——>需求方案設(shè)計——>開發(fā)方案設(shè)計——>開發(fā)實現(xiàn)——>需求測試——>需求交付。
整個流程來看:缺失相應(yīng)使用場景的客戶需求,或者需求方案設(shè)計有誤,或者開發(fā)方案設(shè)計有誤,或者開發(fā)實現(xiàn)偏差等等都可能導(dǎo)致測試人員在設(shè)計測試用例時,缺少相應(yīng)用例的設(shè)計和測試執(zhí)行,從而未能發(fā)現(xiàn)類似故障。
除此之外呢,有相應(yīng)測試測試用例,還是因為測試環(huán)境與客戶現(xiàn)場環(huán)境相差太大而未能發(fā)現(xiàn)類似故障。
測試環(huán)境與客戶現(xiàn)場相差太大
為什么會存在測試環(huán)境與客戶現(xiàn)場環(huán)境相差太大?
就數(shù)據(jù)庫查詢業(yè)務(wù)而言。測試環(huán)境的數(shù)據(jù)存儲量有可能遙遙不及真實用戶環(huán)境,也可能測試環(huán)境的測試數(shù)據(jù)與真實數(shù)據(jù)不一樣(比如某個存儲字段的長度設(shè)置;比如存儲的字段內(nèi)容解析后包含特殊字符、亂碼等等)……這些都是測試環(huán)境與客戶現(xiàn)場不一致的可能情況。
梳理完測試缺漏后,下一步理所當(dāng)然的是進入用例補充和模擬客戶環(huán)境穩(wěn)定性測試。
可是,除了補充當(dāng)前故障對應(yīng)的測試用例之外,我們還能延展些什么呢?!
放大或復(fù)制用戶行為
不管是開發(fā)人員或測試人員,我們都應(yīng)該珍惜接觸現(xiàn)場日志的機會(當(dāng)然首要的是需要保密不外傳),因為我們可以從日志中窺探到用戶使用習(xí)慣或產(chǎn)品使用方式,從而將這些行為或習(xí)慣復(fù)制到我們的測試用例中,亦或者在測試中放大用戶行為或習(xí)慣。
復(fù)制用戶行為
什么是復(fù)制用戶行為?如何復(fù)制用戶行為?
復(fù)制用戶行為在這里指的是,直接將獲取到的用戶使用產(chǎn)品方式在內(nèi)部測試環(huán)境重現(xiàn)。比如:復(fù)現(xiàn)用戶的某個數(shù)據(jù)庫查詢行為,select * from xx where ……
但是值得注意的是:
1)測試環(huán)境數(shù)據(jù)和真實用戶環(huán)境可能存在較大的差異(比如:測試環(huán)境的數(shù)據(jù)庫不存在某個字段abc,而真實用戶行為查詢卻使用到了該字段abc),我們需要根據(jù)自己的測試環(huán)境進行適當(dāng)?shù)恼{(diào)整。
就數(shù)據(jù)庫查詢業(yè)務(wù)為例,這類調(diào)整包括但不限于:刪除不存在的字段查詢,修改對應(yīng)的字段值為測試環(huán)境的值查詢……
2)獲取到的用戶行為有限,無法支撐大量的查詢比對(比如性能查詢,統(tǒng)計數(shù)據(jù)庫某類查詢行為的耗時均值)。
這個問題應(yīng)該是可以預(yù)見的,畢竟我們能夠接觸到的用戶日志或采集到的用戶行為是有限的。
尤其是針對第2)個問題,放大用戶行為就成了我們的可選項。
放大用戶行為
放大用戶行為在這里指的是,將獲取到的用戶行為作為樣本,復(fù)制多份或在用戶行為中增刪其他行為。
比如:將select * from index where id=’123’的用戶行為復(fù)制100份,替換其中的id值為測試環(huán)境中不同的值;或以select * from index where id=’123’為基礎(chǔ)樣本,增加行為數(shù)據(jù)如select * from index where id=’123’ or id=’456’等。
復(fù)制或放大用戶行為,對我們的測試有什么意義呢?!——可以讓我們更接近用戶的使用方式,產(chǎn)生更多的測試用例,擴大測試覆蓋率。
再來一點思考
以上所說想必大多測試人員在工作中也是這樣做的,但是可能缺少部分的思考和總結(jié)。現(xiàn)場反饋的問題和收集的資料對補充我們的測試用例、完善我們的測試工作具有很大的幫助,希望每一位測試人員都能好好利用能夠接近“真實”的機會。
最后:在我的V:atstudy-js,可以免費領(lǐng)取一份10G軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費分享!其中包括了有基礎(chǔ)知識、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.