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