- 相關(guān)推薦
軟件測試工程師的資料整理
如何解決死鎖問題 原理:產(chǎn)生死鎖的原因主要是
因為系統(tǒng)資源不足。
進程運行推進的順序不合適。
資源分配不當(dāng)?shù)取?/p>
如果系統(tǒng)資源充足,進程的資源請求都能夠得到滿足,死鎖出現(xiàn)的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可能產(chǎn)生死鎖。
死鎖的條件
互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。
請求與保持條件(Hold and wait):已經(jīng)得到資源的進程可以再次申請新的資源。
非剝奪條件(No pre-emption):已經(jīng)分配的資源不能從相應(yīng)的進程中被強制地剝奪。 循環(huán)等待條件(Circular wait):系統(tǒng)中若干進程組成環(huán)路,改環(huán)路中每個進程都在等待相鄰進程正占用的資源。
處理死鎖的策略
1.忽略該問題。例如鴕鳥算法,該算法可以應(yīng)用在極少發(fā)生死鎖的的情況下。為什么叫鴕鳥算法呢,因為傳說中鴕鳥看到危險就把頭埋在地底下,可能鴕鳥覺得看不到危險也就沒危險了吧。跟掩耳盜鈴有點像。
2.檢測死鎖并且恢復(fù)。
3.仔細(xì)地對資源進行動態(tài)分配,以避免死鎖。
4.通過破除死鎖四個必要條件之一,來防止死鎖產(chǎn)生。
有兩個小組對同一個軟件進行測試(測試的時間不清楚,軟件的規(guī)模不清
楚),A組測試出50個Bug;B組測試出55個Bug,提交匯總后發(fā)現(xiàn)其中有25個是相同的;我的問題是:請你估算一下這個軟件還有多少個Bug沒被發(fā)現(xiàn)?
聽一個同事說有次面試的時候主考官給他出了這樣一道題,正好在很久以前
看到過類似的資料,這里給大家共享出來,看看這種算法合理不。
先說這個問題的答案是30,怎么算出來的呢?可以按照下面的公式:
可以估計出的軟件的缺陷共有:50*55/25=110個
目前已經(jīng)發(fā)現(xiàn)的有:50+55-25=80個
沒有發(fā)現(xiàn)的bug有:110-80=30個
這個公式又是怎么得出來的呢,可以看看下面的推導(dǎo)過程:
B---組A和組B都發(fā)現(xiàn)的缺陷數(shù)
N1---組A發(fā)現(xiàn)的缺陷數(shù)
N2---組B發(fā)現(xiàn)的缺陷數(shù)
T---軟件所有的缺陷數(shù)
根據(jù)原理:組A發(fā)現(xiàn)的缺陷數(shù)占總?cè)毕輸?shù)的比例等于組A和組B都發(fā)現(xiàn)的缺陷
數(shù)占組B發(fā)現(xiàn)的缺陷數(shù)的比例,即N1/T=B/N2
上面的公式改變形式即:T= N1*N2/B(軟件總bug數(shù))
一個程序讀入3個整數(shù),a:輸出最大值或最小值
A:最大值:(最小值把“>”替換為“<”,“max”替換為“min”)
#include
#definr max(x,y) (((x) > (y)) ? (x) : (y))
int main()
{
int a,b,c,d;
scanf(“%d,%d,%d”.&a,&b,&c);
d=max(a,max(b,c));
printf(“max=%d\n”,d)
}
白箱測試和黑箱測試是什么?什么是回歸測試?
白盒測試是 測試人員要了解程序結(jié)構(gòu)和處理過程,按照程序內(nèi)部邏輯測試程序,檢查程序中的每條通路是否按照預(yù)定要求正確工作.它主要的針對被測程序的源代碼,測試著可以完全不考慮程序的功能.
白盒測試流程:源程序-->分析程序內(nèi)部邏輯結(jié)構(gòu)-->流程圖-->制定測試用例-->被測程序-->執(zhí)行路徑-->覆蓋情況分析
黑盒測試:主要是根據(jù)功能需求來測試程序是否按照預(yù)期工作,是要從用戶的角度分析.盡量發(fā)現(xiàn)代碼所表現(xiàn)的外部行為的錯誤.黑盒測試應(yīng)該是由測試團隊來完成的.根據(jù)某個給定的輸入,應(yīng)該能夠理解并詳細(xì)說明程序的預(yù)期輸出.
黑盒測試流程:功能需求-->產(chǎn)生測試用例-->被測程序-->輸出實際結(jié)果-->與預(yù)期結(jié)果比較-->分析功能是否實現(xiàn).
回歸測試:在對軟件進行修正后進行的有選擇的重新測試過程.一般要重復(fù)已用的測試用例.目的是檢驗軟件在更改后所引起的錯誤,驗證軟件在修改后未引起不希望的有害效果.如果想成為一個比較好的軟件測試工程師的話,以下這些條件是需要具備的:
1.你要有較好的編寫代碼的水平,最好是自己親自獨立完成過某軟件的開發(fā)工作
2.需要對數(shù)據(jù)庫有較為清楚的認(rèn)識,以及會編寫數(shù)據(jù)庫腳本
3.了解至少2種以上的操作系統(tǒng),并且對問題有較強的分析判斷能力
5.集成測試通常都有那些策略?
1、在把各個模塊連接起來的時候,穿越模塊接口的數(shù)據(jù)是否會丟失;
2、各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能;
3、一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響;
5、單個模塊的誤差積累起來,是否會放大,從而達(dá)到不可接受的程度。
請問單元測試、集成測試、系統(tǒng)測試的側(cè)重點是什么?
單元測試的重點是系統(tǒng)的模塊,包括子程序的正確性驗證等。
集成測試的重點是模塊間的銜接以及參數(shù)的傳遞等。
系統(tǒng)測試的重點是整個系統(tǒng)的運行以及與其他軟件的兼容性。
軟件測試工具有哪些?
AutoRunner是一款自動化測試工具。AutoRunner可以用來執(zhí)行重復(fù)的手工測試。主要用于:功能測試、回歸測試的自動化。它采用數(shù)據(jù)驅(qū)動和參數(shù)化的理念,通過錄制用戶對被測系統(tǒng)的操作,生成自動化腳本,然后讓計算機執(zhí)行自動化腳本,達(dá)到提高測試效率,降低人工測試成本。
TestCenter是一款功能強大的測試管理工具,它實現(xiàn)了:測試需求管理、測試用例管理、測試業(yè)務(wù)組件管理、測試計劃管理、測試執(zhí)行、測試結(jié)果日志察看、測試結(jié)果分析、缺陷管理,并且支持測試需求和測試用例之間的關(guān)聯(lián)關(guān)系,可以通過測試需求索引測試用例。
7.一個缺陷測試報告的組成
缺陷的標(biāo)題,缺陷的基本信息,復(fù)現(xiàn)缺陷的操作步驟,缺陷的實際結(jié)果描述,期望的正確結(jié)果描述,
注釋文字和截取的缺陷圖象。
8.基于WEB信息管理系統(tǒng)測試時應(yīng)考慮的因素有哪些?
性能測試:1連接速度測試2負(fù)載測試3壓力測試( 、
可能發(fā)生兩種錯誤,分別是數(shù)據(jù)一致性錯誤和輸出錯誤。數(shù)據(jù)一致性錯誤主要是由于用戶提交的表單信息不正確而造成的,而輸出錯誤主要是由于網(wǎng)絡(luò)速度或程序設(shè)計問題等引起的,針對這兩種情況,可分別進行測試)
9.軟件本地化測試比功能測試都有哪些方面需要注意?
本地化測試需要注意翻譯為目標(biāo)語言后,是否符合當(dāng)?shù)厝嗣竦娘L(fēng)俗習(xí)慣,文化風(fēng)格。不要出現(xiàn)當(dāng)?shù)孛舾械男畔ⅰ?/p>
如果看不懂目標(biāo)語言,就很簡單了,只需要注意該翻譯的都翻譯了,不該翻譯的沒有被翻譯,然后沒有圖片或文字的截斷,翻譯明顯不合適的這些點就ok了。
此外還要大體的點一點功能,沒有嚴(yán)重的功能問題,就可以了。
軟件本地化測試的目的:
軟件本地化測試的測試策略:1.本地化軟件要在各種本地化操作系統(tǒng)上安裝并測試。2.源語言軟件安裝在另一臺相同源語言操作系統(tǒng)上,作為對比測試。3.重點測試因本地化引起的軟件的功能和軟件界面的
錯誤。4.
測試本地化軟件的翻譯質(zhì)量。5.手工測試和自動測試相結(jié)合。
軟件測試項目從什么時候開始,?為什么?
當(dāng)接到一個開發(fā)項目是,軟件測試就要介入,一般認(rèn)為從需求分析開始!
你可以看看雙V模型,國內(nèi)游一部分公司采用這種模型進行軟件開發(fā)、測試流程。
軟件測試界有一句名言叫做:盡早了解被測系統(tǒng)!但是真正能做到這一點的又能有幾個呢?!
11.需求測試注意事項有哪些?
一個良好的需求應(yīng)當(dāng)具有一下特點:
完整性:每一項需求都必須將所要實現(xiàn)的功能描述清楚,以使開發(fā)人員獲得設(shè)計和實現(xiàn)這些功能所
需的所有必要信息。
正確性:每一項需求都必須準(zhǔn)確地陳述其要開發(fā)的功能。
一致性:一致性是指與其它軟件需求或高層(系統(tǒng),業(yè)務(wù))需求不相矛盾。
可行性:每一項需求都必須是在已知系統(tǒng)和環(huán)境的權(quán)能和限制范圍內(nèi)可以實施的。
無二義性:對所有需求說明的讀者都只能有一個明確統(tǒng)一的解釋,由于自然語言極易導(dǎo)致二義性,
所以盡量把每項需求用簡潔明了的用戶性的語言表達(dá)出來。
健壯性:需求的說明中是否對可能出現(xiàn)的異常進行了分析,并且對這些異常進行了容錯處理。
必要性:“必要性”可以理解為每項需求都是用來授權(quán)你編寫文檔的“根源”。要使每項需求都能回溯至
某項客戶的輸入,如Use Case或別的來源。
可測試性:每項需求都能通過設(shè)計測試用例或其它的驗證方法來進行測試。
可跟蹤性:應(yīng)能在每項軟件需求與它的根源和設(shè)計元素、源代碼、測試用例之間建立起鏈接鏈,這種可跟蹤性要求每項需求以一種結(jié)構(gòu)化的,粒度好(f i n e - g r a i n e d )的方式編寫并單獨標(biāo)明,而不
是大段大段的敘述。
有關(guān)內(nèi)存的思考題
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:程序崩潰。
因為GetMemory 并不能傳遞動態(tài)內(nèi)存,
Test 函數(shù)中的 str 一直都是 NULL。
strcpy(str, "hello world");將使程序崩
潰。
void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:
(1) 能夠輸出hello
(2) 內(nèi)存泄漏
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
簡述軟件生命周期有那些階段
軟件生命周期——需求分析——軟件設(shè)計——程序編碼——軟件測試——運行維護
21、簡述一下缺陷的生命周期
軟件缺陷的生命周期指的是一個軟件缺陷被發(fā)現(xiàn)、報告到這個缺陷被修復(fù)、驗證直至最后關(guān)閉的完整過程。
簡單的軟件缺陷生命周期:
1、發(fā)現(xiàn)——打開:測試人員找到軟件缺陷并將軟件缺陷提交給開發(fā)人員;
2、打開——修復(fù):開發(fā)人員再現(xiàn)、修復(fù)缺陷,然后提交測試人員去驗證;
3、修復(fù)——關(guān)閉:測試人員驗證修復(fù)過的軟件,關(guān)閉已不存在的缺陷。
但是這是一種理想的狀態(tài),在實際的工作中是很難有這樣的順利的,需要考慮的各種情況都還是非常多的。
復(fù)雜的軟件缺陷生命周期:
1、新建一個軟件缺陷,這個軟件缺陷是(open)狀態(tài),進行bug審查,不是代碼問題,就是設(shè)計需要修改;
2、新建一個軟件缺陷,這個軟件缺陷是(open)狀態(tài),進行bug審查,以后修改的,就可以延期;
3、新建一個軟件缺陷,這個軟件缺陷是(open)狀態(tài),進行bug審查,實際沒有這個bug,可以將其關(guān)閉;
4、新建一個軟件缺陷,這個軟件缺陷是(open)狀態(tài),看是否 清楚可重現(xiàn),如果不能重現(xiàn),就是缺少信息,需要返回到(open)狀態(tài);如果能夠重現(xiàn),就進行修正,修正后關(guān)閉,進行回歸測試。
軟件缺陷生命
、軟件測試的目的?
答:測試的目的是想以最少的人力、物力和時間找出軟件中潛在的各種錯誤和缺陷,通過修正種錯誤和缺陷提高軟件質(zhì)量,回避軟件發(fā)布后由于潛在的軟件缺陷和錯誤造成的隱患帶來的商業(yè)風(fēng)險。
2、需求文檔測試、設(shè)計文檔測試?
需求文檔測試:主要測試需求中是否存在邏輯矛盾以及需求在技術(shù)上是否可以實現(xiàn);
設(shè)計文檔測試:測試設(shè)計是否符合全部需求以及設(shè)計是否合理。
3、什么是軟件測試?
答:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;蛘哒f,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。
測試分析測試用例注意事項:
1、首先根據(jù)需求寫出測試用例大綱(很重要:測試大綱的目的在于羅列出所有的測試點。當(dāng)你測試大綱寫完之后和項目組的人員討論、研發(fā)、設(shè)計都需要參加、以確定不會因為理解偏差導(dǎo)致的遺漏或者是方向不對)
2、然后根據(jù)測試大綱開始編寫完整的測試用例
3、在用例編寫的時候進行分類(如:業(yè)務(wù)流程測試,安裝測試,功能測試,兼容性測試,安全性測試等等)
4、設(shè)計測試用例的方法(等價類,邊界值,因果圖,流程分析,等等)
5、用例編寫的時候需要考慮到用例的復(fù)用性。
6、設(shè)計用例的時候最好在有疑問的時候找人討論(一個人的思維決定了你的用例顆粒度、換個思維你會發(fā)現(xiàn)用例有很多地方不足)
軟件測試中的軟件的缺陷等級如何劃分
可以劃分為 重大錯誤--嚴(yán)重錯誤--一般錯誤--輕微錯誤
也可以按照 S--A--B--C 來劃分,這個東西不是死,并沒有什么規(guī)定,只要你喜歡,你可以
用自己詞語去劃分,只要詞語描述清晰即可
【軟件測試工程師的資料整理】相關(guān)文章:
最新軟件測試考題 -管理資料03-25
軟件測試工程師職責(zé)06-24
軟件測試工程師的職責(zé)06-17
高級軟件測試工程師的職責(zé)06-09
軟件測試工程師的自我評價02-07
軟件測試工程師崗位職責(zé)04-14
軟件測試工程師工作總結(jié)05-18
軟件測試工程師績效評估表04-30
軟件測試工程師工作總結(jié)05-18
軟件測試工程師崗位職責(zé)!05-28