軟件工程師常見面試題及答案
1、軟件測(cè)試的流程是什么?
需求調(diào)查: 全面了解您的系統(tǒng)概況、應(yīng)用領(lǐng)域、軟件開發(fā)周期、軟件開發(fā)環(huán)境、開發(fā)組織、時(shí)間安排、功能需求、性能需求、質(zhì)量需求及測(cè)試要求等根據(jù)系統(tǒng)概況進(jìn)行項(xiàng)目所需的人員、時(shí)間和工作量估計(jì)及項(xiàng)目報(bào)價(jià)。
制定初步的項(xiàng)目計(jì)劃: 在與您充分共同和協(xié)商的基礎(chǔ)上制定我們的測(cè)試計(jì)劃。
測(cè)試準(zhǔn)備: 組織測(cè)試團(tuán)隊(duì)、培訓(xùn)、建立測(cè)試和管理環(huán)境等。
測(cè)試設(shè)計(jì): 按照測(cè)試要求進(jìn)行每個(gè)測(cè)試項(xiàng)的測(cè)試設(shè)計(jì),包括測(cè)試用例的設(shè)計(jì)及測(cè)試腳本的開發(fā)等。
測(cè)試實(shí)施: 按照測(cè)試計(jì)劃進(jìn)行實(shí)施測(cè)試。
測(cè)試評(píng)估: 根據(jù)測(cè)試的結(jié)果,出具測(cè)試評(píng)估報(bào)告。
2、根據(jù)你的經(jīng)驗(yàn)說說你對(duì)軟件測(cè)試/質(zhì)量保證的理解?
軟件質(zhì)量保證與測(cè)試是根據(jù)軟件開發(fā)階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)的一批測(cè)試用例(即輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果),并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)錯(cuò)誤的過程。它是對(duì)應(yīng)用程序的各個(gè)方面進(jìn)行測(cè)試以檢查其功能、語言有效性及外觀排布.。
3、(1) 你對(duì)SQA的職責(zé)和工作活動(dòng)(如軟件度量)的理解:
SQA就是獨(dú)立于軟件開發(fā)的項(xiàng)目組,通過對(duì)軟件開發(fā)過程的監(jiān)控,來保證軟件的開發(fā)流程按照指定的CMM規(guī)程(如果有相應(yīng)的CMM規(guī)程),對(duì)于不符合項(xiàng)及時(shí)提出建議和改進(jìn)方案,必要是可以要高層經(jīng)理匯報(bào)以求問題的解決。通過這樣的途徑來預(yù)防缺陷的引入,從而減少后期軟件的維護(hù)成本。SQA主要的工作活動(dòng)包括制定SQA工作計(jì)劃,參與階段產(chǎn)物的評(píng)審,進(jìn)行過程質(zhì)量、功能配置及物理配置的審計(jì)等;對(duì)項(xiàng)目開發(fā)過程中產(chǎn)生的數(shù)據(jù)進(jìn)行度量等等;
(2) 說說你對(duì)軟件配置管理的理解:
項(xiàng)目在開發(fā)的過程中要用相應(yīng)的配置管理工具對(duì)配置項(xiàng)(包括各個(gè)階段的產(chǎn)物)進(jìn)行變更控制,配置管理的使用取決于項(xiàng)目規(guī)模和復(fù)雜性能及風(fēng)險(xiǎn)的水平。軟件的規(guī)模越大,配置管理就顯得越重要。還有在配置管理中,有一個(gè)很重要的概念,那就是基線,是在一定階段各個(gè)配置項(xiàng)的組合,一個(gè)基線就提供了一個(gè)正式的標(biāo)準(zhǔn),隨后的工作便基于此標(biāo)準(zhǔn),并且只有經(jīng)過授權(quán)后才能變更這個(gè)標(biāo)準(zhǔn)。配置管理工具主要有CC,VSS,CVS等,偶只用過CVS,對(duì)其它的不熟悉
(3) 怎樣寫測(cè)試計(jì)劃和測(cè)試用例:
簡(jiǎn)單點(diǎn),測(cè)試計(jì)劃里應(yīng)有詳細(xì)的測(cè)試策略(測(cè)試方法等),合理詳盡的資源安排等,至于測(cè)試用例,那是依賴于需求(包括功能與非功能需求)是否細(xì)化到功能點(diǎn),是否可測(cè)試等。
(4) 說說主流的軟件工程思想(如CMM,CMMI,RUP,XP,PSP,TSP等)的大致情況以及對(duì)它們的理解:
CMM:SW Capability Maturity Model 軟件能力成熟度模型,其作用是用于軟件過程的改進(jìn)、評(píng)估及軟件能力的評(píng)鑒
CMMI:Capability Maturity Model Integration 能力成熟度模型集成 CMMI融入了大部分最新的軟件管理實(shí)踐,同時(shí)彌補(bǔ)了SW-CMM模型中的缺陷
RUP:rational unified process 是軟件工程化過程。
XP:extreme program,即極限編程的意思,適用于小型團(tuán)隊(duì)的軟件開發(fā),想上面第三個(gè)問題就可以結(jié)合原型法采用這樣的開發(fā)流程。要明白測(cè)試對(duì)于xp開發(fā)的重要性,強(qiáng)調(diào)測(cè)試(重點(diǎn)是單元測(cè)試)先行的理念。編程可以明顯提高代碼的質(zhì)量,持續(xù)集成對(duì)于快速定位問題很有好處。
PSP ,TSP 分別是個(gè)體軟件過程(Personal Software Process),群組軟件過程(Team Software Process)大家都知道,CMM只是告訴你怎么做但并沒有告訴你如何做,所以PSP/TSP就是告訴你企業(yè)在實(shí)施CMM的過程中如何做,PSP強(qiáng)調(diào)建立個(gè)人技能(如何制定計(jì)劃、控制質(zhì)量及如何與其他人相互協(xié)作等等)而TSP著重于生產(chǎn)并交付高質(zhì)量的軟件產(chǎn)品(如何有效地規(guī)劃和管理所面臨的項(xiàng)目開發(fā)任務(wù)等等)??傊?,單純實(shí)施CMM,永遠(yuǎn)不能真正做到能力成熟度的升級(jí),只有將實(shí)施CMM與實(shí)施PSP和TSP有機(jī)地結(jié)合起來,才能發(fā)揮最大的效力。因此,軟件過程框架應(yīng)該是CMM/PSP/TSP的有機(jī)集成。
4、還有問一下你是怎樣保證軟件質(zhì)量的,也就是說你覺得怎樣才能最大限度地保證軟件質(zhì)量?
測(cè)試并不能夠最大限度的保證軟件的質(zhì)量,軟件的高質(zhì)量是開發(fā)和設(shè)計(jì)出來的,而不是測(cè)試出來的,它不僅要通過對(duì)軟件開發(fā)流程的監(jiān)控,使得軟件開發(fā)的各個(gè)階段都要按照指定的規(guī)程進(jìn)行,通過對(duì)各個(gè)階段產(chǎn)物的評(píng)審,QA對(duì)流程的監(jiān)控,對(duì)功能及配置的審計(jì)來達(dá)到開發(fā)的最優(yōu)化。當(dāng)然測(cè)試也是保證軟件質(zhì)量的一個(gè)重要方式,是軟件質(zhì)量保證工程的一個(gè)重要組成部分。
5、然后緊接著就基于目前中國(guó)的國(guó)情,大多數(shù)公司的軟件項(xiàng)目進(jìn)度緊張、人員較少、需求文檔根本沒有或者很不規(guī)范,你認(rèn)為在這種情況下怎樣保證軟件的質(zhì)量?
(大多數(shù)公司最想知道的就是在這種困難面前你該怎么保證軟件的質(zhì)量,因?yàn)檫@些公司一般就是這種情況—–既不想投入過多又想保證質(zhì)量,faint )出現(xiàn)以上的情況,如果僅僅想通過測(cè)試來提高軟件質(zhì)量,那幾乎是不可能,原因是沒有足夠的時(shí)間讓你去測(cè)試,少而不規(guī)范的文檔導(dǎo)致測(cè)試需求無法細(xì)化何談足夠且有針對(duì)性進(jìn)行測(cè)試。所以,作為公司質(zhì)量保證的你應(yīng)該先和項(xiàng)目經(jīng)理確定符合項(xiàng)目本身最適合的軟件生命周期模型(比如RUP的剪裁,原型法),明確項(xiàng)目的開發(fā)流程并督促項(xiàng)目組按照此流程開展工作,所有項(xiàng)目組成員(項(xiàng)目經(jīng)理更加重要)都要制定出合理的工作計(jì)劃,加強(qiáng)代碼的單元測(cè)試,在客戶既定的產(chǎn)品交付日期范圍之內(nèi),進(jìn)行產(chǎn)品的持續(xù)集成等等,如果時(shí)間允許可以再配合客戶進(jìn)行必要的系統(tǒng)功能測(cè)試。
6、一個(gè)測(cè)試工程師應(yīng)具備那些素質(zhì)和技能?
1、掌握基本的測(cè)試基礎(chǔ)理論 ;
2、本著找出軟件存在的問題的態(tài)度進(jìn)行測(cè)試,即客觀吧,不要以挑刺形象出現(xiàn)
3、可熟練閱讀需求規(guī)格說明書等文檔 ;
4、以用戶的觀點(diǎn)看待問題
5、有著強(qiáng)烈的質(zhì)量意識(shí) ;
6、細(xì)心和責(zé)任心 ;
7、良好的有效的溝通方式(與開發(fā)人員及客戶)
8、具有以往的測(cè)試經(jīng)驗(yàn) ;能夠及時(shí)準(zhǔn)確地判斷出高危險(xiǎn)區(qū)在何處.
7、做好軟件測(cè)試的一些關(guān)鍵點(diǎn)
1.測(cè)試人員必須經(jīng)過測(cè)試基礎(chǔ)知識(shí)和理論的相關(guān)培訓(xùn)。
2.測(cè)試人員必須熟悉系統(tǒng)功能和業(yè)務(wù)。
3.測(cè)試必須事先要有計(jì)劃,而且測(cè)試方案要和整個(gè)項(xiàng)目計(jì)劃協(xié)調(diào)好
4.必須事先編寫測(cè)試用例,測(cè)試執(zhí)行階段必須根據(jù)測(cè)試用例進(jìn)行
5.易用性,功能,分支,邊界,性能等功能性和非功能性需要都要進(jìn)行測(cè)試
6.對(duì)于復(fù)雜的流程一定要進(jìn)行流程分支,組合條件分析,再進(jìn)行等價(jià)類劃分準(zhǔn)備相關(guān)測(cè)試數(shù)據(jù)
7.測(cè)試設(shè)計(jì)的一個(gè)重要內(nèi)容是要準(zhǔn)備好具體的測(cè)試數(shù)據(jù),清楚這個(gè)測(cè)試數(shù)據(jù)是測(cè)哪個(gè)場(chǎng)景或分支的
8.個(gè)人任務(wù)平均每三個(gè)測(cè)試用例至少應(yīng)該發(fā)現(xiàn)一個(gè)BUG,否則只能說明測(cè)試用例質(zhì)量不好
9.除了每日構(gòu)建的冒煙測(cè)試可以考慮測(cè)試自動(dòng)化外,其它暫時(shí)都不要考慮去自動(dòng)化。
8、軟件測(cè)試員自身素質(zhì)培養(yǎng)
(1)首先,應(yīng)對(duì)軟件測(cè)試感興趣和對(duì)自己有自信,如果具備了這兩點(diǎn),那么在開發(fā)過程中不管遇到什么樣的困難,我相信你一定能克服。
(2)善于懷疑,世界上沒有絕對(duì)正確的,總有錯(cuò)誤的地方,具有叛逆心理,別人認(rèn)為不可能發(fā)生的事,我卻認(rèn)為可能發(fā)生。別人認(rèn)為是對(duì)的,我卻認(rèn)為不是對(duì)的。
(3) 打破砂鍋問到底的精神,對(duì)于只出現(xiàn)過一次的bug,一定找出原因,不解決誓不罷休。
(4) 保持一個(gè)良好的心情,否則可能無法把測(cè)試作好。不要把生活中的不愉快的情緒帶到工作中來。
(5) 做測(cè)試時(shí)要細(xì)心,不是所有的bug都能很容易的找出,一定要細(xì)心才能找出這些bug。
(6) 靈活一些,聰明一點(diǎn),多制造一些容易產(chǎn)生bug的例子。
(7) 在有條件的情況下,多和客戶溝通,他們身上有你所需要的。
(8) 設(shè)身處地為客戶著想,從他們的角度去測(cè)試系統(tǒng)。
(9) 不要讓程序員,以“這種情況不可能發(fā)生”這句話說服你,相反,你應(yīng)該去說服他,告訴他在客戶心里,并不是這樣的。
(10) 考慮問題要全面,結(jié)合客戶的需求、業(yè)務(wù)的流程、和系統(tǒng)的構(gòu)架,等多方面考慮問題。
(11)提出問題不要復(fù)雜化,這一點(diǎn)和前面的有點(diǎn)矛盾,如果你是一新手,暫時(shí)不要管這一點(diǎn),因?yàn)樽罱K將有你的小組成員討論解決。
(12) 追求完美,對(duì)于新測(cè)試員來說,努力的追求完美,這對(duì)你很好,盡管有些事無法做到,但你應(yīng)該去嘗試。
(13)幽默感,能和開發(fā)小組很好的溝通是關(guān)鍵,試著給你的開發(fā)小組找一個(gè)“BUG殺手”,或?qū)λ麄冋f“我簡(jiǎn)直不敢相信,你寫的程序居然到現(xiàn)在沒有找到BUG”。
(14)到此是不是對(duì)測(cè)試很有興趣呢?不過我要告訴你,測(cè)試過程中有酸甜苦辣,其中的滋味只有你知道,也許你會(huì)感到枯燥,要學(xué)會(huì)放松自己,去溜冰或做你喜歡做的事,不過,別放棄,因?yàn)槟愕淖孕鸥嬖V過你“你會(huì)是很優(yōu)秀的測(cè)試員”不是嗎?