-
為什么選擇測(cè)試這一行
測(cè)試這個(gè)職業(yè)如果做的好的話本身就是很有成就感的一件事情,測(cè)試這個(gè)崗位可以通過找到系統(tǒng)或者項(xiàng)目中不容易被發(fā)現(xiàn)的漏洞,使整個(gè)系統(tǒng)變得更加完善,這個(gè)過程就會(huì)讓人覺得雖然具有挑戰(zhàn)性,但很有成就。
-
測(cè)試計(jì)劃編寫的六要素
why——為什么要進(jìn)行這些測(cè)試
what——測(cè)試哪些方面以及測(cè)試的工作內(nèi)容
when——測(cè)試不同階段的起止時(shí)間
where——缺陷存放的位置,測(cè)試環(huán)境等
who——項(xiàng)目有關(guān)的人員組成
how——怎么測(cè)試,如何測(cè)試,采用哪些測(cè)試工具以及測(cè)試方法測(cè)試
-
什么是軟件測(cè)試?軟件測(cè)試的目的與原則
在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估的過程。
-
軟件測(cè)試的目的
測(cè)試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;一個(gè)成功的測(cè)試用例在于發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤,并且確保產(chǎn)品完成了在需求分析階段的所有功能,確保產(chǎn)品滿足性能和效率的要求,確保產(chǎn)品是健壯和適應(yīng)用戶需求的。
-
軟件測(cè)試的原則
編寫軟件的組織不應(yīng)該測(cè)試自己編寫的軟件,應(yīng)該徹底檢查每一個(gè)測(cè)試的執(zhí)行結(jié)果,測(cè)試用例也應(yīng)該是可以重復(fù)使用的,除非軟件本身就是一個(gè)一次性軟件,計(jì)劃測(cè)試時(shí)不應(yīng)該默許假定不會(huì)發(fā)現(xiàn)錯(cuò)誤
-
什么是軟件質(zhì)量?
軟件質(zhì)量就是“軟件與明確的和隱含的定義的需求相一致的程度”。具體地說,軟件質(zhì)量是軟件符合明確敘述的功能和性能需求、文檔中明確描述 的開發(fā)標(biāo)準(zhǔn)、以及所有專業(yè)開發(fā)的軟件都應(yīng)具有的隱含特征的程度。
影響軟件質(zhì)量的主要因素,這些因素是從管理角度對(duì)軟件質(zhì)量的度量??蓜澐譃槿M,分別反應(yīng)用戶在使用軟件產(chǎn)品時(shí)的三種觀點(diǎn)。正確性、健壯性、效率、完整性、可用性、風(fēng)險(xiǎn)(產(chǎn)品運(yùn)行);可理解性、可維修性、靈活性、可測(cè)試性(產(chǎn)品修改);可移植性、可再用性、互運(yùn)行性(產(chǎn)品轉(zhuǎn)移)。
-
測(cè)試流程
需求分析討論—確定測(cè)試策略—設(shè)計(jì)測(cè)試用例—測(cè)試用例評(píng)審—beta測(cè)試—uat測(cè)試—測(cè)試報(bào)告
-
軟件的生命周期(Software life cycle)
計(jì)劃階段planning、需求分析階段requirement、設(shè)計(jì)階段design、編碼coding、測(cè)試testing、運(yùn)行與維護(hù)running maintrnacne
-
軟件的生命周期模型
瀑布模型
快速原型模型
迭代模型
-
軟件的概念和特點(diǎn)?軟件復(fù)用的含義?構(gòu)件包括哪些?
軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,與計(jì)算機(jī)操作系統(tǒng)有關(guān)的計(jì)算機(jī)程序、規(guī)程、規(guī)則。以及可能有的文件、文檔及數(shù)據(jù)。
軟件復(fù)用(SoftWare Reuse)是將已有軟件的各種有關(guān)知識(shí)用于建立新的軟件,以縮減軟件開發(fā)和維護(hù)的花費(fèi)。軟件復(fù)用是提高軟件生產(chǎn)力和質(zhì)量的一種重要技術(shù)。早期的軟件復(fù)用主要是代碼級(jí)復(fù)用,被復(fù)用的知識(shí)專指程序,后來擴(kuò)大到包括領(lǐng)域知識(shí)、開發(fā)經(jīng)驗(yàn)、設(shè)計(jì)決定、體系結(jié)構(gòu)、需求、設(shè)計(jì)、代碼、和文檔等一切有關(guān)方面。
可被復(fù)用的軟件成分一般被稱作可復(fù)用構(gòu)件。
-
軟件測(cè)試項(xiàng)目從什么時(shí)候開始?為什么?
測(cè)試一般是從項(xiàng)目的需求分析確認(rèn)之后就開始,因?yàn)樵谛枨蠓治鲭A段,測(cè)試就可以評(píng)審需求并且進(jìn)行靜態(tài)測(cè)試,減少開發(fā)過程中的bug
-
軟件的評(píng)審一般由哪些人員參加?目的是什么?
甲方(業(yè)務(wù)需求人員)、產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理、開發(fā)人員、測(cè)試人員;
查看軟件在未正式投入運(yùn)行之前是否還存在問題,對(duì)于不同的軟硬件開發(fā)平臺(tái)是否能夠正常運(yùn)行,是否有與客戶理解不同的地方,同時(shí)還可以對(duì)一些可以改進(jìn)的地方再多加改進(jìn)
-
測(cè)試用例
用例編號(hào)、測(cè)試項(xiàng)目、測(cè)試標(biāo)題、重要等級(jí)、預(yù)置條件、輸入數(shù)據(jù)、執(zhí)行步驟、預(yù)期結(jié)果
-
什么是測(cè)試用例?什么是測(cè)試腳本??jī)烧叩年P(guān)系是什么?
測(cè)試用例是為了實(shí)施測(cè)試而向被測(cè)試系統(tǒng)提供的輸入數(shù)據(jù),操作或各種環(huán)境設(shè)置以及期望結(jié)果的一個(gè)特定的集合。
測(cè)試腳本是為了進(jìn)行自動(dòng)化測(cè)試而編寫的腳本。
測(cè)試腳本的編寫必須對(duì)應(yīng)相應(yīng)的測(cè)試用例。
-
如何設(shè)計(jì)測(cè)試用例?什么樣的測(cè)試用例是好的用例?
掌握邊界值分析、等價(jià)類劃分、錯(cuò)誤推測(cè)等方法來設(shè)計(jì)測(cè)試用例;
好的測(cè)試用例是一個(gè)完備的集合,能夠覆蓋所有的等價(jià)類以及各種邊界值,需要從軟件的功能需求出發(fā),全面的識(shí)別出測(cè)試需求,最好是代碼覆蓋測(cè)試也全面的測(cè)試
-
軟件測(cè)試分為幾個(gè)階段?各個(gè)階段通常完成什么工作?
單元測(cè)試:針對(duì)軟件設(shè)計(jì)的最小單位——程序模塊甚至代碼進(jìn)行正確性檢驗(yàn)的測(cè)試工作,通常由開發(fā)人員進(jìn)行;
主要工作是針對(duì)每一個(gè)程序模塊進(jìn)行正確性校驗(yàn),檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。
集成測(cè)試:將模塊按照設(shè)計(jì)要求組裝起來進(jìn)行測(cè)試,主要目的是發(fā)現(xiàn)與接口有關(guān)的問題,由于在產(chǎn)品提交到測(cè)試部門前,產(chǎn)品開發(fā)小組都要進(jìn)行聯(lián)合調(diào)試,因此大部分企業(yè)中集成測(cè)試是由開發(fā)人員來完成的;
主要工作是測(cè)試各部分是否達(dá)到或?qū)崿F(xiàn)相應(yīng)技術(shù)指標(biāo)及其要求的活動(dòng)。該階段生成集成測(cè)試報(bào)告,提交缺陷報(bào)告。
系統(tǒng)測(cè)試:是在集成測(cè)試通過后進(jìn)行的,目的是充分運(yùn)行系統(tǒng),驗(yàn)證各子系統(tǒng)是否都能正常工作并完成設(shè)計(jì)的要求。主要由測(cè)試部門進(jìn)行,對(duì)產(chǎn)品質(zhì)量有很大的影響。
主要工作是將所有元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行全面的功能覆蓋。
驗(yàn)收測(cè)試:以需求階段的需求分析說明書為驗(yàn)收標(biāo)準(zhǔn),測(cè)試時(shí)要模擬實(shí)際用戶的運(yùn)行環(huán)境。對(duì)于實(shí)際項(xiàng)目可以和客戶共同進(jìn)行,對(duì)于產(chǎn)品來說就是最后一次的系統(tǒng)測(cè)試。
測(cè)試內(nèi)容為功能模塊的全面測(cè)試,尤其要求對(duì)文檔進(jìn)行測(cè)試。
-
給你一個(gè)網(wǎng)站,如何測(cè)試?
根據(jù)需求說明、網(wǎng)站的具體設(shè)計(jì)等相關(guān)文檔,分析測(cè)試需求,制定測(cè)試計(jì)劃,確定測(cè)試范圍和測(cè)試策略,一般包括:
【功能性測(cè)試】
確認(rèn)連接是否正確跳轉(zhuǎn),是否存在空白頁面或者無效頁面,是否有不正確的出錯(cuò)信息返回;
提交功能的測(cè)試;
多媒體元素是否可以正確加載和顯示;
多語言支持是否能夠正確顯示選擇的語言等等
【界面測(cè)試】
頁面是否風(fēng)格統(tǒng)一,美觀;
頁面布局是否合理,重點(diǎn)內(nèi)容和熱點(diǎn)內(nèi)容是否突出;
控件是否正常使用;
對(duì)于必須但未安裝的控件,是否提供自動(dòng)下載并安裝的功能;
文字檢查
【性能測(cè)試】
壓力測(cè)試、負(fù)載測(cè)試、強(qiáng)度測(cè)試
【數(shù)據(jù)庫(kù)測(cè)試】
數(shù)據(jù)庫(kù)測(cè)試要根據(jù)具體內(nèi)容決定是否開展,數(shù)據(jù)庫(kù)一般需要考慮連結(jié)性,對(duì)于數(shù)據(jù)的存取操作,數(shù)據(jù)內(nèi)容的驗(yàn)證等方面
【安全性測(cè)試】
基本的登錄功能的檢查;
是否存在溢出錯(cuò)誤,導(dǎo)致系統(tǒng)崩潰或者權(quán)限泄露;
關(guān)于開發(fā)語言的常見安全性問題檢查,例如SQL注入等;
如果需要更高級(jí)的安全性測(cè)試,就要獲得專業(yè)安全公司的幫助外包測(cè)試
【兼容性測(cè)試】
瀏覽器的兼容、操作系統(tǒng)的兼容、軟件平臺(tái)的兼容、數(shù)據(jù)庫(kù)的兼容
開展測(cè)試,并記錄缺陷。合理的安排調(diào)整測(cè)試進(jìn)度,提前獲取測(cè)試所需的資源,建立管理體系(例如需求變更、風(fēng)險(xiǎn)、配置、測(cè)試文檔、缺陷報(bào)告、人力資源等)、定期評(píng)審,對(duì)測(cè)試進(jìn)行評(píng)估和總結(jié),調(diào)整測(cè)試的內(nèi)容
-
不能發(fā)現(xiàn)BUG的測(cè)試用例不是好的測(cè)試用例嗎?
不一定,如果測(cè)試用例的質(zhì)量高,沒有發(fā)現(xiàn)BUG,說明我們開發(fā)人員的對(duì)于項(xiàng)目的開發(fā)質(zhì)量高。但是一般的程序應(yīng)該都會(huì)存在一些Bug,如果沒發(fā)現(xiàn)bug的話,就要思考是不是測(cè)試的場(chǎng)景受限制,對(duì)于測(cè)試的場(chǎng)景是不是有遺漏,或者是對(duì)需求的理解沒到位、
-
測(cè)試用例需要哪些人評(píng)審?
產(chǎn)品經(jīng)理、開發(fā)人員、測(cè)試人員、業(yè)務(wù)需求人員
-
什么是BUG?
沒有實(shí)現(xiàn)需求說明書列出的功能,出現(xiàn)了沒有需求說明書提到了不該出現(xiàn)的事情;實(shí)現(xiàn)了多的功能;沒有實(shí)現(xiàn)應(yīng)該實(shí)現(xiàn)的邏輯
-
一條軟件缺陷(bug)記錄都包含了哪些內(nèi)容?
編號(hào);嚴(yán)重級(jí)別,優(yōu)先級(jí);產(chǎn)生的模塊;闡述bug大體的內(nèi)容;對(duì)應(yīng)的版本;詳細(xì)現(xiàn)象描述,包括一些截圖、錄像....等等;出現(xiàn)時(shí)的測(cè)試環(huán)境,產(chǎn)生的條件即對(duì)應(yīng)操作步驟
-
簡(jiǎn)單概述缺陷報(bào)告,并且說明包括那些項(xiàng)?
缺陷描述,缺陷的優(yōu)先級(jí),缺陷的標(biāo)題,缺陷所屬的版本號(hào),缺陷所屬的功能模塊,具體的操作步驟,預(yù)期效果,缺陷原因,缺陷所屬的開發(fā)人員
-
開發(fā)人員修復(fù)缺陷后,如何保證不影響其他功能?
重新執(zhí)行測(cè)試用例,并且針對(duì)這個(gè)缺陷影響的相關(guān)點(diǎn)寫新的測(cè)試用例
-
如果開發(fā)人員不認(rèn)為是bug,該怎么應(yīng)對(duì)?
根據(jù)需求說明書、產(chǎn)品說明、設(shè)計(jì)文檔等以及測(cè)試出來的結(jié)果作為自己交流的支點(diǎn)和直接依據(jù),如果開發(fā)人員還是不認(rèn)同,就可以把雙方的意見都提交給產(chǎn)品經(jīng)理,讓產(chǎn)品經(jīng)理來決定
-
當(dāng)測(cè)試過程發(fā)生錯(cuò)誤時(shí),有哪幾種解決辦法?
跳轉(zhuǎn)到其他的測(cè)試流程;調(diào)用某個(gè)程序能繞過這個(gè)錯(cuò)誤,繼續(xù)后面的流程
-
所有的軟件缺陷都能修復(fù)嗎?所有的軟件缺陷都要修復(fù)嗎?
能修復(fù),但是不一定都要修復(fù)
-
進(jìn)行測(cè)試時(shí)產(chǎn)生了哪些文檔或記錄?
測(cè)試用例,測(cè)試報(bào)告,測(cè)試日?qǐng)?bào)
-
功能測(cè)試在beta版本對(duì)外的上線標(biāo)準(zhǔn)是什么?
測(cè)試用例全部跑完并且bug都已經(jīng)關(guān)閉,然后業(yè)務(wù)驗(yàn)收后可以上線
-
開發(fā)人員總是犯一些低級(jí)錯(cuò)誤怎么解決?
可以讓開發(fā)人員進(jìn)行自測(cè),把這些問題在開發(fā)階段解決好就行了
-
為什么盡量不要讓時(shí)間富裕的員工去做一些測(cè)試?
非專業(yè)測(cè)試人員,沒有組織性的測(cè)試工作,沒有規(guī)律和針對(duì)性,會(huì)影響整個(gè)測(cè)試的質(zhì)量和版本的更新速度;專業(yè)的測(cè)試人員但是不是這個(gè)項(xiàng)目的測(cè)試員,這些人不受測(cè)試計(jì)劃時(shí)候的任務(wù)約定,測(cè)試完畢后評(píng)估測(cè)試小組的工作質(zhì)量,不利于Bug的管理
-
什么是單元測(cè)試、功能測(cè)試、集成測(cè)試?
單元測(cè)試是針對(duì)程序模塊來進(jìn)行正確性檢驗(yàn)的測(cè)試工作;
功能測(cè)試是在單元測(cè)試的基礎(chǔ)上,測(cè)試某一個(gè)功能點(diǎn);
集成測(cè)試是將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)或者系統(tǒng),進(jìn)行集成測(cè)試
-
單元測(cè)試、功能測(cè)試、集成測(cè)試分別在web端、接口端、移動(dòng)端的定義,平時(shí)是怎么理解的?
在web端:
單元測(cè)試和功能測(cè)試是頁面元素是否正確顯示其有效功能,比如提交的行為action是否正確,搜索點(diǎn)擊是否執(zhí)行;
集成測(cè)試是調(diào)用了后端接口的數(shù)據(jù)是否顯示正常,能否滿足需求;
在接口端:
模塊/系統(tǒng)之前的調(diào)用,接口是否與設(shè)計(jì)相符,模塊組合后時(shí)候滿足需求;
單元測(cè)試:某個(gè)函數(shù)/方法寫的代碼是否達(dá)到編寫者的預(yù)期
功能測(cè)試:為實(shí)現(xiàn)一個(gè)功能點(diǎn),調(diào)用幾個(gè)方法/函數(shù)
-
什么是兼容性測(cè)試?
檢查軟件在不同的軟件平臺(tái),硬件平臺(tái)上是否可以正常運(yùn)行的測(cè)試,主要查看軟件在不同的操作系統(tǒng),瀏覽器,數(shù)據(jù)庫(kù)中是否運(yùn)行正常
-
白盒測(cè)試和黑盒測(cè)試的區(qū)別,你是怎么運(yùn)用的?
黑盒測(cè)試是一般用來確認(rèn)軟件功能的正確性和可操作性,目的是檢測(cè)軟件的各個(gè)功能是否能得以實(shí)現(xiàn),把被測(cè)試的程序當(dāng)作一個(gè)黑盒,不考慮其內(nèi)部結(jié)構(gòu),在知道該程序的輸入和輸出之間的關(guān)系或程序功能的情況下,依靠軟件規(guī)格說明書來確定測(cè)試用例和推斷測(cè)試結(jié)果的正確性;
黑盒測(cè)試的缺點(diǎn):不可能覆蓋所有的代碼,自動(dòng)化測(cè)試的復(fù)用性較低。
白盒測(cè)試是已知產(chǎn)品的內(nèi)部工作過程,可以進(jìn)行測(cè)試證明每種內(nèi)部操作是否符合設(shè)計(jì)的規(guī)格要求,所有內(nèi)部成分是否經(jīng)過檢查。利用其檢查程序模塊的內(nèi)部邏輯走向,主要覆蓋程序內(nèi)的邏輯。
白盒測(cè)試的缺點(diǎn):不可能測(cè)試所有的運(yùn)行路徑,測(cè)試基于代碼,只能測(cè)試開發(fā)人員做的對(duì)不對(duì),不能知道設(shè)計(jì)的正確與否,可能會(huì)漏掉一些功能需求;當(dāng)系統(tǒng)龐大時(shí),測(cè)試開銷會(huì)非常大。
-
靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試有什么區(qū)別?
靜態(tài)測(cè)試是不運(yùn)行程序,針對(duì)PRD等檢查代碼,審查代碼,靜態(tài)結(jié)構(gòu)分析,分析代碼質(zhì)量的過程。
動(dòng)態(tài)測(cè)試就是運(yùn)行程序進(jìn)行黑盒測(cè)試和白盒測(cè)試,實(shí)際運(yùn)行被測(cè)程序,輸入相應(yīng)的測(cè)試實(shí)例,檢查運(yùn)行結(jié)果與預(yù)期結(jié)果的差異,判定執(zhí)行結(jié)果是否符合要求,從而檢驗(yàn)程序的正確性、可靠性和有效性,并分析系統(tǒng)運(yùn)行效率和健壯性等性能。
-
你所熟悉的測(cè)試用例設(shè)計(jì)方法都有哪些?請(qǐng)分別以具體的例子來說明這些方法在測(cè)試用例設(shè)計(jì)工作中的應(yīng)用。
【黑盒測(cè)試】
等價(jià)類劃分法:可以劃分成有效等價(jià)類和無效等價(jià)類;等價(jià)類是指某個(gè)輸入域的子集合.在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的.并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試.因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件,就可以用少量代表性的測(cè)試數(shù)據(jù).取得較好的測(cè)試結(jié)果
邊界值分析法:是對(duì)等價(jià)類劃分法的補(bǔ)充,比如參數(shù)的范圍是0-128,輸入128,129,0這種值,檢查是否有錯(cuò)誤;
錯(cuò)誤推測(cè)法:基于經(jīng)驗(yàn)和直覺推測(cè)程序中所有可能存在的各種錯(cuò)誤,再根據(jù)他們選擇測(cè)試用例,導(dǎo)入功能時(shí),表格為空表格,表格輸入1行,10000行等;
因果圖方法:組合參數(shù)邏輯圖,檢查程序輸入條件的各種組合情況;
場(chǎng)景分析法:根據(jù)用戶的操作進(jìn)行模擬,這個(gè)比較類似于因果圖,但是可行性更好一點(diǎn);
【白盒測(cè)試】
靜態(tài)測(cè)試:不用運(yùn)行程序的測(cè)試,如文檔測(cè)試、代碼檢查等
動(dòng)態(tài)測(cè)試:需要執(zhí)行代碼,接口測(cè)試、覆蓋率分析、性能分析、內(nèi)存分析等。
邏輯覆蓋法:主要包括語句覆蓋,判斷覆蓋,條件覆蓋,判斷/條件覆蓋,條件組合覆蓋,路徑覆蓋等。
六種覆蓋標(biāo)準(zhǔn)發(fā)現(xiàn)錯(cuò)誤的能力由弱到強(qiáng)的變化:
語句覆蓋,每條語句至少執(zhí)行一次。
判斷覆蓋,每個(gè)判斷的每個(gè)分支至少執(zhí)行一次。
條件覆蓋,每個(gè)判斷的每個(gè)條件應(yīng)取到的各種可能的值。
判斷/條件覆蓋,同時(shí)滿足判斷覆蓋條件覆蓋。
條件組合覆蓋,每個(gè)判定中各條件的每一種組合至少出現(xiàn)一次。
-
在你以往的工作中,一條Bug記錄都包含了哪些內(nèi)容?如何提交高質(zhì)量的軟件缺陷(BUG)記錄?
前提條件,測(cè)試環(huán)境,操作步驟,預(yù)期結(jié)果,實(shí)際結(jié)果,嚴(yán)重等級(jí),版本信息,出現(xiàn)概率;
問題描述和操作步驟要盡可能詳細(xì),可以初步分析bug是客戶端的問題還是用戶端的問題
-
軟件質(zhì)量保證體系是什么 國(guó)家標(biāo)準(zhǔn)中與質(zhì)量保證管理相關(guān)的幾個(gè)標(biāo)準(zhǔn)是什么?他們的編號(hào)和全稱是什么?
SQA由一套軟件工程過程和方法組成,以保證(軟件的)質(zhì)量。SQA貫穿整個(gè)軟件開發(fā)過程,(它)應(yīng)包括需求文檔評(píng)審、代碼控制、代碼評(píng)審、變更管理、配置管理、版本管理和軟件測(cè)試。
軟件質(zhì)量保證(SQA-Software Quality Assurance)是建立一套有計(jì)劃,有系統(tǒng)的方法,來向管理層保證擬定出的標(biāo)準(zhǔn)、步驟、實(shí)踐和方法能夠正確地被所有項(xiàng)目所采用。軟件質(zhì)量保證的目的是使軟件過程對(duì)于管理人員來說是可見的。它通過對(duì)軟件產(chǎn)品和活動(dòng)進(jìn)行評(píng)審和審計(jì)來驗(yàn)證軟件是合乎標(biāo)準(zhǔn)的。軟件質(zhì)量保證組在項(xiàng)目開始時(shí)就一起參與建立計(jì)劃、標(biāo)準(zhǔn)和過程。這些將使軟件項(xiàng)目滿足機(jī)構(gòu)方針的要求。
-
軟件產(chǎn)品質(zhì)量特性是什么?
功能性:適應(yīng)性、準(zhǔn)確性、互操作性、依從性、安全性
可靠性:成熟性、容錯(cuò)性、易恢復(fù)性
可使用性:易理解性、易學(xué)習(xí)性、易操作性
效率:時(shí)間特性、資源特性
可維護(hù)性:易分析性、易變更性、穩(wěn)定性、易測(cè)試性
可移植性:適應(yīng)性、易安裝性、遵循性、易替換性
-
什么是內(nèi)存泄漏、HTTP錯(cuò)誤率、吞吐率。響應(yīng)時(shí)間分別在web端和移動(dòng)端是多少?哪些場(chǎng)景可以證明響應(yīng)超時(shí)?
內(nèi)存泄漏(Memory Leak)是程序中已動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果;
HTTP錯(cuò)誤率(HTTP erro rate)在選定時(shí)間內(nèi),HTTP錯(cuò)誤數(shù)量與請(qǐng)求數(shù)量的比率;
吞吐率(Throughput)是場(chǎng)景運(yùn)行過程中服務(wù)器每秒的吞吐量,其度量單位是字節(jié),表示每個(gè)請(qǐng)求連接在任何給定的每一秒從服務(wù)器獲得的數(shù)據(jù)量。
【web端】
當(dāng)用戶在2秒以內(nèi)得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)很快;
當(dāng)用戶在2-5秒之間得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)的響應(yīng)速度還可以;
而當(dāng)用戶在超過8秒后仍然無法得到響應(yīng)時(shí),會(huì)感覺系統(tǒng)糟透了,或者認(rèn)為系統(tǒng)已經(jīng)失去響應(yīng)。
場(chǎng)景:請(qǐng)求超時(shí),頁面加載失敗
-
什么是面向?qū)ο缶幊蹋?/h4>
把具有共性的事務(wù)抽象成屬性和方法來進(jìn)行編程
-
Thread類中的start()和run()方法有什么區(qū)別?
start()方法可以用來啟動(dòng)線程,調(diào)用該方法,會(huì)創(chuàng)建一個(gè)新的線程,然后內(nèi)部執(zhí)行run()方法;不能多次調(diào)用,否則會(huì)拋異常;
直接調(diào)用run()方法,不會(huì)創(chuàng)建新的線程;可以進(jìn)行多次調(diào)用。
-
左連接和右連接
比如有兩張表A和B,左連接是把符合條件的所有A表的內(nèi)容列出來,B表如果沒有內(nèi)容匹配就用NULL代替;右連接式把符合條件的所有B表的內(nèi)容列出來,A表如果沒有內(nèi)容匹配用NULL代替
-
什么是索引?
索引是由表或者視圖中的一列或多列生成的鍵,可以加快在表或者視圖中檢索行的速度
-
什么是接口測(cè)試?
接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試,接口測(cè)試就是測(cè)試不同系統(tǒng)或者模塊之間資源交互是否正確
-
為什么要做接口測(cè)試?
因?yàn)樵诖蟛糠窒到y(tǒng)和產(chǎn)品中,資源數(shù)據(jù)都是核心,所以接口是需要測(cè)試的,并且接口中大部分內(nèi)容都是數(shù)據(jù),通過數(shù)據(jù)的對(duì)比可以推測(cè)系統(tǒng)和產(chǎn)品的邏輯,測(cè)試接口就是邏輯測(cè)試,所以接口測(cè)試很有必要
-
什么時(shí)候做接口測(cè)試?
出現(xiàn)bug,通過接口測(cè)試,清晰找到bug的源頭,是前端還是后端的bug;
回歸測(cè)試,利用接口測(cè)試原有的接口是否正常,保證之前的業(yè)務(wù)流程沒有受影響;
接口開發(fā)完成后,可以做接口測(cè)試
-
接口測(cè)試的工具有哪些?
soapUI、postman、jemeter、insomnia、paw
-
接口測(cè)試的流程是什么?
接口的通過性驗(yàn)證:數(shù)據(jù)正確輸入,是否正確返回結(jié)果,測(cè)試接口的正常場(chǎng)景和異常場(chǎng)景;
邊界測(cè)試:不按照接口文檔上的要求輸入?yún)?shù),測(cè)試其邊界情況。
參數(shù)組合:如果接口中有參數(shù)需要組合用的,兩個(gè)參數(shù)是組合使用,測(cè)試其各種情況;
異常驗(yàn)證:測(cè)試冪等情況,并發(fā)情況,事務(wù)測(cè)試等異常情況;
接口安全:繞過驗(yàn)證,敏感信息加密等情況;
性能測(cè)試:響應(yīng)時(shí)間、并發(fā)數(shù)、吞吐量、服務(wù)器資源利用率
-
如何做接口測(cè)試?
swagger、接口自動(dòng)化腳本
-
接口測(cè)試質(zhì)量評(píng)估標(biāo)準(zhǔn)是什么?
接口表現(xiàn)與接口文檔的一致性;
請(qǐng)求參數(shù):必選和非必選、長(zhǎng)度、字符類型、為空、缺失、組合、重復(fù);
返回?cái)?shù)據(jù):正常和異常
-
如何看待自動(dòng)化測(cè)試和手動(dòng)測(cè)試?怎樣的一個(gè)比例才是健康的?
自動(dòng)化適合作為回歸測(cè)試的主要方式,新上線的功能一般都是用手動(dòng)測(cè)試方式,一些極端和用戶的習(xí)慣操作還是用手動(dòng)測(cè)試比較方便。盡可能線上穩(wěn)定的功能模塊都做成自動(dòng)化,提供效率。
-
完整運(yùn)行一次自動(dòng)化用例需要多久時(shí)間?
主要跑的是業(yè)務(wù)流,跑一次需要半小時(shí)左右
-
什么是分層自動(dòng)化?
金字塔結(jié)構(gòu),最底層UnitTest,往上接口API/集成起來的service,最上面UI自動(dòng)化
-
測(cè)試數(shù)據(jù)怎么準(zhǔn)備?
提前準(zhǔn)備,放在代碼里的yaml文件
-
測(cè)試腳本的維護(hù)成本是怎么樣的?
業(yè)務(wù)不變的情況下,一般腳本都是不壞不動(dòng)的
-
怎么做性能測(cè)試?測(cè)試性能的相關(guān)指標(biāo)?
性能需求分析,挑選用戶使用最頻繁的功能來做性能測(cè)試,比如登錄,搜索,提交訂單等等確定性能指標(biāo),比如事務(wù)通過率為100%,90%的事務(wù)響應(yīng)時(shí)間不超過5秒,并發(fā)用戶為1000人,CPU和內(nèi)存的使用率為70%以下;
性能測(cè)試計(jì)劃,明確測(cè)試時(shí)間(通常在功能穩(wěn)定之后,比如第一輪測(cè)試之后)和測(cè)試環(huán)境和測(cè)試工具的選擇;
編寫性能測(cè)試用例;
搭建性能測(cè)試環(huán)境,準(zhǔn)備好性能測(cè)試數(shù)據(jù);
通過性能測(cè)試用例,編寫性能測(cè)試腳本;
性能測(cè)試腳本進(jìn)行調(diào)優(yōu),設(shè)置檢查點(diǎn),參數(shù)化,關(guān)聯(lián),集合點(diǎn),事務(wù),調(diào)整思考時(shí)間,刪除冗余的腳本等;
設(shè)計(jì)性能測(cè)試場(chǎng)景,使用nmon工具監(jiān)控服務(wù)器,運(yùn)行測(cè)試場(chǎng)景;
分析性能測(cè)試結(jié)果,如果有問題,收集相關(guān)的日志給開發(fā)修改;
開發(fā)修改好后,回歸性能測(cè)試;
編寫性能測(cè)試報(bào)告;
相關(guān)指標(biāo):響應(yīng)時(shí)間、并發(fā)數(shù)、吞吐率、資源利用率、TPS
-
壓力測(cè)試和負(fù)載測(cè)試的區(qū)別
負(fù)載測(cè)試是模擬實(shí)際軟件系統(tǒng)所承受的負(fù)載條件的系統(tǒng)負(fù)荷,通過不斷加載(比如增加模擬用戶的數(shù)量)或其他加載方式來觀察不同負(fù)載下系統(tǒng)的響應(yīng)時(shí)間和數(shù)據(jù)吞吐量、系統(tǒng)所占用的資源(如CPU、內(nèi)存)等,以檢驗(yàn)系統(tǒng)的行為和特性,以發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸,內(nèi)存泄漏,不能實(shí)時(shí)同步等問題。
壓力測(cè)試是在高負(fù)載情況下對(duì)系統(tǒng)的穩(wěn)定性進(jìn)行測(cè)試。是在高負(fù)載(大數(shù)據(jù)量、大量并發(fā)用戶等)下的測(cè)試,觀察系統(tǒng)在峰值使用情況下的表現(xiàn),從而發(fā)現(xiàn)系統(tǒng)的功能隱患。
負(fù)載測(cè)試:多用戶,多用戶逐漸增加,持續(xù)同時(shí)發(fā)同一業(yè)務(wù)請(qǐng)求,產(chǎn)出最大TPS;
壓力測(cè)試:多用戶,資源使用飽和,持續(xù)同時(shí)發(fā)同意業(yè)務(wù)請(qǐng)求,產(chǎn)出系統(tǒng)瓶頸或使用極限
-
服務(wù)器中一般要監(jiān)控哪些數(shù)據(jù),如何監(jiān)控的,怎么從監(jiān)控?cái)?shù)據(jù)中發(fā)現(xiàn)問題?
基礎(chǔ)監(jiān)控和應(yīng)用監(jiān)控;
基礎(chǔ)監(jiān)控包括機(jī)器是否死機(jī),cpu,內(nèi)存,磁盤使用率等;
應(yīng)用監(jiān)控包括日志監(jiān)控,端口監(jiān)控,進(jìn)程數(shù)監(jiān)控等。
-
假設(shè)系統(tǒng)A調(diào)用系統(tǒng)B,把B的接口都mock了,進(jìn)行性能測(cè)試,這有什么好處和壞處?
好處:防止系統(tǒng)B出錯(cuò)引起測(cè)試錯(cuò)誤;不會(huì)因系統(tǒng)B的開發(fā)進(jìn)度影響測(cè)試;mock后可以快速返回結(jié)果,提高測(cè)試效率;
壞處:很多情況下無法完全模擬出服務(wù)器的所有可能的返回情況,另外,mock掉了關(guān)聯(lián)方之后,整個(gè)環(huán)境的連通性可能測(cè)試的不到位。
-
有一天早上打車高峰,滴滴服務(wù)端掛了大概30分鐘,工程師搶修之后,馬上上線,之后又掛了,請(qǐng)問有哪些原因會(huì)造成這個(gè)情況?
服務(wù)器內(nèi)存不夠、服務(wù)器超出負(fù)載、并發(fā)量太大、遇到惡意攻擊。
-
在搜索引擎中輸入漢字就可以解析到對(duì)應(yīng)的域名,請(qǐng)問如何用LoadRunner進(jìn)行測(cè)試
建立測(cè)試計(jì)劃,確定測(cè)試標(biāo)準(zhǔn)和測(cè)試范圍;
設(shè)計(jì)典型場(chǎng)景的測(cè)試用例,覆蓋常用業(yè)務(wù)流程和不常用的業(yè)務(wù)流程等;
根據(jù)測(cè)試用例,開發(fā)自動(dòng)測(cè)試腳本和場(chǎng)景
錄制測(cè)試腳本:新建一個(gè)腳本(Web/HTML協(xié)議);點(diǎn)擊錄制按鈕,在彈出的對(duì)話框的URL中輸入”about:blank”;在打開的瀏覽器中進(jìn)行正常操作流程后,結(jié)束錄制;調(diào)試腳本并保存,可能要注意到字符集的關(guān)聯(lián)。
設(shè)置測(cè)試場(chǎng)景:針對(duì)性能設(shè)置測(cè)試場(chǎng)景,主要判斷在正常情況下,系統(tǒng)的平均事務(wù)響應(yīng)時(shí)間是否達(dá)標(biāo);針對(duì)壓力負(fù)載設(shè)置測(cè)試場(chǎng)景,主要判斷在長(zhǎng)時(shí)間處于滿負(fù)荷或者超出系統(tǒng)承載能力的條件下,系統(tǒng)是否會(huì)崩潰;執(zhí)行測(cè)試,獲取測(cè)試結(jié)果,分析測(cè)試結(jié)果
-
LoadRunner分為哪三個(gè)模塊?請(qǐng)簡(jiǎn)述各模塊的主要功能。
Virtual User Generator:用于錄制腳步
Mercury LoadRunner Controller:用于創(chuàng)建、運(yùn)行和監(jiān)控場(chǎng)景
Mercury LoadRunner Analysis:用于分析測(cè)試結(jié)果
-
一臺(tái)客戶端有三百個(gè)客戶與三百個(gè)客戶端有三百個(gè)用戶對(duì)服務(wù)器施壓,有什么區(qū)別?
300個(gè)用戶在一個(gè)客戶端上,會(huì)占用客戶機(jī)更多的資源,而影響測(cè)試的結(jié)果。線程之間可能發(fā)生干擾,而產(chǎn)生一些異常;300個(gè)用戶在一個(gè)客戶端上,需要更大的寬帶;IP地址問題,可能需要使用IP Spoof來繞過服務(wù)器對(duì)于單一的IP地址最大連接數(shù)的限制;
所有用戶都在一個(gè)客戶端上,不必考慮分布式管理的問題;而用戶分布在不同的客戶端上,需要考慮使用控制器來整體調(diào)配不同客戶機(jī)上的用戶。同時(shí),還需要給予相應(yīng)的權(quán)限配置和防火墻設(shè)置。
-
您認(rèn)為在測(cè)試人員同開發(fā)人員的溝通過程中,如何提高溝通的效率和改善溝通的效果?維持測(cè)試人員同開發(fā)團(tuán)隊(duì)中其他成員良好的人際關(guān)系的關(guān)鍵是什么?
盡量面對(duì)面的溝通,其次是能直接通過電話溝通,如果只能通過Email等非及時(shí)溝通工具的話,強(qiáng)調(diào)必須對(duì)特性的理解深刻以及能表達(dá)清楚。
運(yùn)用一些測(cè)試管理工具如TestDirector進(jìn)行管理也是較有效的方法,同時(shí)要注意在TestDirector中對(duì)BUG有準(zhǔn)確的描述。
在團(tuán)隊(duì)中建立測(cè)試人員與開發(fā)人員良好溝通中注意以下幾點(diǎn):一真誠(chéng)、二是團(tuán)隊(duì)精神、三是在專業(yè)上有共同語言、四是要對(duì)事不對(duì)人,工作至上,當(dāng)然也可以通過直接指出一些小問題,而不是進(jìn)入BUG Tracking System來增加對(duì)方的好感。
-
在C/C++中static有什么用途?(請(qǐng)至少說明兩種)
1)在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。
2)在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。
3)在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用
-
引用與指針有什么區(qū)別?
- 引用必須被初始化,指針不必。
- 引用初始化以后不能被改變,指針可以改變所指的對(duì)象。
- 不存在指向空值的引用,但是存在指向空值的指針。
-
Internet采用哪種網(wǎng)絡(luò)協(xié)議?該協(xié)議的主要層次結(jié)構(gòu)?Internet物理地址和IP地址轉(zhuǎn)換采用什么協(xié)議?
TCP/IP協(xié)議、主要層次結(jié)構(gòu)為: 應(yīng)用層/傳輸層/網(wǎng)絡(luò)層/數(shù)鏈路層。
ARP (Address Resolution Protocol)(地址解析協(xié)議)
-
說說你對(duì)集成測(cè)試中自頂向下集成和自底向上集成兩個(gè)策略的理解,要談出它們各自的優(yōu)缺點(diǎn)和主要適應(yīng)于哪種類型測(cè)試;
自頂向下集成
優(yōu)點(diǎn):較早地驗(yàn)證了主要控制和判斷點(diǎn);按深度優(yōu)先可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能;功能較早證實(shí),帶來信心;只需一個(gè)驅(qū)動(dòng),減少驅(qū)動(dòng)器開發(fā)的費(fèi)用;支持故障隔離。
缺點(diǎn):柱的開發(fā)量大;底層驗(yàn)證被推遲;底層組件測(cè)試不充分。
適應(yīng)于產(chǎn)品控制結(jié)構(gòu)比較清晰和穩(wěn)定;高層接口變化較??;底層接口未定義或經(jīng)??赡鼙恍薷模划a(chǎn)口控制組件具有較大的技術(shù)風(fēng)險(xiǎn),需要盡早被驗(yàn)證;希望盡早能看到產(chǎn)品的系統(tǒng)功能行為。
自底向上集成
優(yōu)點(diǎn):對(duì)底層組件行為較早驗(yàn)證;工作最初可以并行集成,比自頂向下效率高;減少了樁的工作量;支持故障隔離。
缺點(diǎn):驅(qū)動(dòng)的開發(fā)工作量大;對(duì)高層的驗(yàn)證被推遲,設(shè)計(jì)上的錯(cuò)誤不能被及時(shí)發(fā)現(xiàn)。適應(yīng)于底層接口比較穩(wěn)定;高層接口變化比較頻繁;底層組件較早被完成。
-
軟件驗(yàn)收測(cè)試包括什么?
正式驗(yàn)收測(cè)試、alpha測(cè)試、beta測(cè)試三種測(cè)試。
-
什么是α測(cè)試和β測(cè)試?
α測(cè)試是由一個(gè)用戶在開發(fā)環(huán)境下進(jìn)行的測(cè)試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的受控測(cè)試。
β測(cè)試是軟件的多個(gè)用戶在一個(gè)或多個(gè)用戶的實(shí)際使用環(huán)境下進(jìn)行的測(cè)試。開發(fā)者通常不在測(cè)試現(xiàn)場(chǎng)。
-
系統(tǒng)測(cè)試的策略有什么?
性能測(cè)試、負(fù)載測(cè)試、強(qiáng)度測(cè)試、易用性測(cè)試、安全測(cè)試、配置測(cè)試、安裝測(cè)試、文檔測(cè)試、故障恢復(fù)測(cè)試、用戶界面測(cè)試、恢復(fù)測(cè)試、分布測(cè)試、可用性測(cè)試。
-
設(shè)計(jì)系統(tǒng)測(cè)試計(jì)劃需要參考的項(xiàng)目文檔有什么?
軟件測(cè)試計(jì)劃、軟件需求工件、和迭代計(jì)劃
-
利用因果圖生成測(cè)試用例的基本步驟是什么?
- 分析軟件規(guī)格說明描述中,哪些是原因(即輸入條件或輸入條件的等價(jià)類),哪些是結(jié)果(即輸出條件),并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。
- 分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間,原因與原因之間對(duì)應(yīng)的是什么關(guān)系? 根據(jù)這些關(guān)系,畫出因果圖。
- 由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號(hào)標(biāo)明約束或限制條件。
- 把因果圖轉(zhuǎn)換成判定表。 把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測(cè)試用例。
- 因果圖轉(zhuǎn)換為狀態(tài)圖。
-
請(qǐng)說出這些測(cè)試最好由那些人員完成,測(cè)試的是什么?
代碼、函數(shù)級(jí)測(cè)試一般由白盒測(cè)試人員完成,他們針對(duì)每段代碼或函數(shù)進(jìn)行正確性檢驗(yàn),檢查其是否正確的實(shí)現(xiàn)了規(guī)定的功能。
模塊、組件級(jí)測(cè)試主要依據(jù)是程序結(jié)構(gòu)設(shè)計(jì)測(cè)試模塊間的集成和調(diào)用關(guān)系,一般由測(cè)試人員完成。
系統(tǒng)測(cè)試在于模塊測(cè)試與單元測(cè)試的基礎(chǔ)上進(jìn)行測(cè)試。了解系統(tǒng)功能與性能,根據(jù)測(cè)試用例進(jìn)行全面的測(cè)試。
-
設(shè)計(jì)測(cè)試用例時(shí)應(yīng)該考慮哪些方面,即不同的測(cè)試用例針對(duì)那些方面進(jìn)行測(cè)試?
設(shè)計(jì)測(cè)試用例時(shí)需要注意的是,除了對(duì)整體流程及功能注意外,還要注意強(qiáng)度測(cè)試、性能測(cè)試、壓力測(cè)試、邊界值測(cè)試、穩(wěn)定性測(cè)試、安全性測(cè)試等多方面。(測(cè)試用例需要考慮的四個(gè)基本要素是輸入、輸出、操作和測(cè)試環(huán)境;另外,測(cè)試用例需要考慮的是測(cè)試類型(功能、性能、安全……),這部分可以參照TP做答。此外,還需要考慮用例的重要性和優(yōu)先級(jí))
-
在windows下保存一個(gè)文本文件時(shí)會(huì)彈出保存對(duì)話框,如果為文件名建立測(cè)試用例,等價(jià)類應(yīng)該怎樣劃分?
單字節(jié),如A;雙字節(jié), AA、我我;特殊字符 /‘?!?、=-等;保留字,如com;文件格式為8.3格式的;文件名格式為非8.3格式的;/,,*等九個(gè)特殊字符。
-
假設(shè)有一個(gè)文本框要求輸入10個(gè)字符的郵政編碼,對(duì)于該文本框應(yīng)該怎樣劃分等價(jià)類?
特殊字符,如10個(gè)*或¥;英文字母,如ABCDefghik;小于十個(gè)字符,如123;大于十個(gè)字符,如11111111111;數(shù)字和其他混合,如123AAAAAAA;空字符;保留字符
-
什么是回歸測(cè)試?
回歸測(cè)試 (Regression Testing)有兩類:用例回歸和錯(cuò)誤回歸;用例回歸是過一段時(shí)間以后再回頭對(duì)以前使用過的用例在重新進(jìn)行測(cè)試,看看會(huì)重新發(fā)現(xiàn)問題。錯(cuò)誤回歸,就是在新版本中,對(duì)以前版本中出現(xiàn)并修復(fù)的缺陷進(jìn)行再次驗(yàn)證,并以缺陷為核心,對(duì)相關(guān)修改的部分進(jìn)行測(cè)試的方法。
-
一個(gè)測(cè)試工程師應(yīng)具備那些素質(zhì)?
責(zé)任心、溝通能力、團(tuán)隊(duì)合作精神、耐心、細(xì)心、信心、時(shí)時(shí)保持懷疑態(tài)度,并且有缺陷預(yù)防的意識(shí)、具備一定的編程經(jīng)驗(yàn)
-
你所了解的的軟件測(cè)試類型都有哪些,簡(jiǎn)單介紹一下。
按測(cè)試策略分類:1、靜態(tài)與動(dòng)態(tài)測(cè)試2、黑盒與白盒測(cè)試 3、手工和自動(dòng)測(cè)試 4、冒煙測(cè)試 5、回歸測(cè)試;
按測(cè)試階段分類:?jiǎn)卧獪y(cè)試、集成測(cè)試、系統(tǒng)測(cè)試;
其他常見測(cè)試方法:功能測(cè)試 、性能測(cè)試 、壓力測(cè)試 、負(fù)載測(cè)試 、易用性測(cè)試 、安裝測(cè)試 、界面測(cè)試 、配置測(cè)試 、文檔測(cè)試 、兼容性測(cè)試 、安全性測(cè)試 、恢復(fù)測(cè)試
-
你認(rèn)為做好測(cè)試計(jì)劃工作的關(guān)鍵是什么?
明確測(cè)試的目標(biāo),增強(qiáng)測(cè)試計(jì)劃的實(shí)用性
編寫軟件測(cè)試計(jì)劃得重要目的就是使測(cè)試過程能夠發(fā)現(xiàn)更多的軟件缺陷,因此軟件測(cè)試計(jì)劃的價(jià)值取決于它對(duì)幫助管理測(cè)試項(xiàng)目,并且找出軟件潛在的缺陷。因此,軟件測(cè)試計(jì)劃中的測(cè)試范圍必須高度覆蓋功能需求,測(cè)試方法必須切實(shí)可行,測(cè)試工具并且具有較高的實(shí)用性,便于使用,生成的測(cè)試結(jié)果直觀、準(zhǔn)確
-
您認(rèn)為做好測(cè)試用例設(shè)計(jì)工作的關(guān)鍵是什么?
白盒測(cè)試用例設(shè)計(jì)的關(guān)鍵是以較少的用例覆蓋盡可能多的內(nèi)部程序邏輯結(jié)果
黑盒測(cè)試用例設(shè)計(jì)的關(guān)鍵同樣也是以較少的用例覆蓋模塊輸出和輸入接口。不可能做到完全測(cè)試,以最少的用例在合理的時(shí)間內(nèi)發(fā)現(xiàn)最多的問題
-
你的測(cè)試職業(yè)發(fā)展目標(biāo)是什么?
測(cè)試經(jīng)驗(yàn)越多,測(cè)試能力越高。所以我的職業(yè)發(fā)展是需要時(shí)間累積的,一步步向著高級(jí)測(cè)試工程師奔去。而且我也有初步的職業(yè)規(guī)劃,先累積測(cè)試經(jīng)驗(yàn),不斷的更新自己改正自己,做好測(cè)試任務(wù)。
-
測(cè)試結(jié)束的標(biāo)準(zhǔn)是什么?
從微觀上來說,在測(cè)試計(jì)劃中定義,比如系統(tǒng)在一定性能下平穩(wěn)運(yùn)行72小時(shí),目前Bug Tracking System中,本版本中沒有一般嚴(yán)重的BUG,普通BUG的數(shù)量在3以下,BUG修復(fù)率90%以上等等參數(shù),然后由開發(fā)經(jīng)理,測(cè)試經(jīng)理,項(xiàng)目經(jīng)理共同簽字認(rèn)同版本Release。
如果說宏觀的,則是當(dāng)這個(gè)軟件徹底的消失以后,測(cè)試就結(jié)束了。
-
一套完整的測(cè)試應(yīng)該由哪些階段組成?
可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試
-
面向?qū)ο蟮臏y(cè)試用例設(shè)計(jì)有幾種方法?如何實(shí)現(xiàn)?
給類中的每個(gè)構(gòu)造函數(shù)設(shè)計(jì)一組測(cè)試用例
組合類中的類變量、實(shí)例變量
組合類中的各種方法
根據(jù)前置條件和后置條件設(shè)計(jì)測(cè)試用例
根據(jù)代碼設(shè)計(jì)測(cè)試用例
-
需求測(cè)試的注意事項(xiàng)有哪些?
是否使用了公司的模板
文檔內(nèi)容是否符合規(guī)范
所有的需求是分級(jí)是否清析適當(dāng)
所有的需求是否具有一致性
需求是否可行(該需求組合有解決方案)
需求可否用己知的約束來實(shí)現(xiàn)、需求是否足夠(可以把它送到一個(gè)規(guī)范的開發(fā)組織,并有一個(gè)生產(chǎn)出所需要產(chǎn)品的合理的可能性)
所有的其它需求是交叉引用是否正確
用戶描述是否清楚
是否用客戶的語言來描述需求
每個(gè)需求描述是否清楚沒有岐義
可以移交給一個(gè)獨(dú)立的組去實(shí)現(xiàn)時(shí)也能理解
是否所有的需求都是可驗(yàn)證的
是否每條需求都具有獨(dú)立性
即使發(fā)生了變化也不會(huì)影響其它需求
性能指標(biāo)是否明確
非功能性需求是否得到充分表現(xiàn)
是否完整列出適用的標(biāo)準(zhǔn)或協(xié)議
標(biāo)準(zhǔn)和協(xié)議之間是否存在沖突
-
主鍵、外鍵的作用是什么?索引的優(yōu)點(diǎn)與不足?
主鍵:是表中的唯一標(biāo)示鍵。
作用:保證實(shí)體的完整性;加快數(shù)據(jù)庫(kù)的操作速度;增加新的表記錄時(shí),數(shù)據(jù)庫(kù)會(huì)自動(dòng)檢索新記錄的主鍵值,不允許該值與其他表中記錄的主鍵重復(fù);數(shù)據(jù)庫(kù)會(huì)按主鍵值的順序顯示記錄,如果沒有設(shè)定主鍵,則按輸入的順序顯示記錄。
外鍵:是主鍵的從屬,表示了兩個(gè)表之間的聯(lián)系。作用:使用外鍵可以避免冗余。
索引的優(yōu)點(diǎn): 1、通過創(chuàng)建唯一性的索引,可以保證表中數(shù)據(jù)的唯一性; 2、加速數(shù)據(jù)的檢索速度; 3、加快表與表之間的連接; 4、在使用分組與排序數(shù)據(jù)檢索時(shí),可以顯著檢索分組與排序的時(shí)間; 5、在查詢的過程中使用優(yōu)化隱藏器,提供系統(tǒng)性能。
缺點(diǎn): 1、創(chuàng)建索引需要時(shí)間,且隨著數(shù)據(jù)量的增加而增加; 2、索引需要占用物理空間;3、當(dāng)對(duì)表中數(shù)據(jù)進(jìn)行修改時(shí),索引也要?jiǎng)討B(tài)維護(hù),降低了數(shù)據(jù)的維護(hù)速度。
-
性能測(cè)試的流程?
測(cè)試需求分析、測(cè)試計(jì)劃制定與評(píng)審、測(cè)試用例設(shè)計(jì)與開發(fā)、測(cè)試執(zhí)行與監(jiān)控、分析測(cè)試結(jié)果、編寫性能測(cè)試報(bào)告、測(cè)試經(jīng)驗(yàn)總結(jié)
-
缺陷記錄應(yīng)包含的內(nèi)容?
缺陷標(biāo)識(shí)、缺陷類型、缺陷嚴(yán)重程度、缺陷產(chǎn)生可能性、缺陷優(yōu)先級(jí)、缺陷狀態(tài)、缺陷起源、缺陷來源、缺陷原因
-
您以往所從事的軟件測(cè)試工作中,是否使用了一些工具來進(jìn)行軟件缺陷(Bug)的管理?如果有,請(qǐng)結(jié)合該工具描述軟件缺陷(Bug)跟蹤管理的流程。
CQ,也可以使用BugFree等免費(fèi)工具。
-
詳細(xì)的描述一個(gè)測(cè)試活動(dòng)完整的過程。
項(xiàng)目經(jīng)理通過和客戶的交流,完成需求文檔,由開發(fā)人員和測(cè)試人員共同完成需求文檔的評(píng)審,評(píng)審的內(nèi)容包括:需求描述不清楚的地方和可能有明顯沖突或者無法實(shí)現(xiàn)的功能的地方。項(xiàng)目經(jīng)理通過綜合開發(fā)人員,測(cè)試人員以及客戶的意見,完成項(xiàng)目計(jì)劃。然后SQA進(jìn)入項(xiàng)目,開始進(jìn)行統(tǒng)計(jì)和跟蹤
開發(fā)人員根據(jù)需求文檔完成需求分析文檔,測(cè)試人員進(jìn)行評(píng)審,評(píng)審的主要內(nèi)容包括是否有遺漏或雙方理解不同的地方。測(cè)試人員完成測(cè)試計(jì)劃文檔,測(cè)試計(jì)劃包括的內(nèi)容上面有描述。
測(cè)試人員根據(jù)修改好的需求分析文檔開始寫測(cè)試用例,同時(shí)開發(fā)人員完成概要設(shè)計(jì)文檔,詳細(xì)設(shè)計(jì)文檔。此兩份文檔成為測(cè)試人員撰寫測(cè)試用例的補(bǔ)充材料。
測(cè)試用例完成后,測(cè)試和開發(fā)需要進(jìn)行評(píng)審。
測(cè)試人員搭建環(huán)境,開發(fā)人員提交第一個(gè)版本,可能存在未完成功能,需要說明。測(cè)試人員進(jìn)行測(cè)試,發(fā)現(xiàn)BUG后提交給BugZilla。
開發(fā)提交第二個(gè)版本,包括Bug Fix以及增加了部分功能,測(cè)試人員進(jìn)行測(cè)試。
重復(fù)上面的工作,一般是3-4個(gè)版本后BUG數(shù)量減少,達(dá)到出貨的要求。
如果有客戶反饋的問題,需要測(cè)試人員協(xié)助重現(xiàn)并重新測(cè)試。
-
列舉出你所了解的軟件測(cè)試方式
按照軟件的生命周期劃分:?jiǎn)卧獪y(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、回歸測(cè)試、驗(yàn)收測(cè)試。
按照測(cè)試關(guān)注點(diǎn)劃分:功能測(cè)試、性能測(cè)試、穩(wěn)定性測(cè)試、易用性測(cè)試、安全性測(cè)試。
按照測(cè)試實(shí)施者劃分:開發(fā)方測(cè)試(α測(cè)試)、用戶測(cè)試(β測(cè)試)、第三方測(cè)試。
按照技術(shù)/測(cè)試用例設(shè)計(jì)劃分:白盒測(cè)試、黑盒測(cè)試、灰盒測(cè)試。
按照分析方法劃分:靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試。
按照測(cè)試執(zhí)行方式劃分:手工測(cè)試、自動(dòng)化測(cè)試。
按照測(cè)試對(duì)象劃分:程序測(cè)試、文檔測(cè)試。
-
BUG的生命周期
New(新的)
Assigned(已指派)
Open(打開的)
Fixed(已修復(fù))
Pending Reset(待測(cè)試)
Reset(再測(cè)試)
Closed(已關(guān)閉)
Reopen(再次打開)
Pending Reject(拒絕中)
Rejected(被拒絕的)
Postponed(延期)
創(chuàng)建bug
分配bug
修復(fù)完待測(cè)試
關(guān)閉
重新開啟
無效
-
請(qǐng)寫出冒泡排序
def bubbleSort(array):
maxindex = len(array)-1
maxValue = array[maxindex]
k=0
while maxindex:
for i in range(1,maxindex):
if array[i-1]>array[i]:
temp = array[i]
array[i] = array[i-1]
array[i-1] = temp
k+=1
maxindex -=1
print(k)
return array
-
1~9999數(shù)列中數(shù)字3出現(xiàn)的次數(shù)。用遞推方法解出
def count_digit(number):
return len(str(number))
def countThree(digit):
if not isinstance(digit,int):
raise TypeError('number is not int')
# digit = len(str(number))
if(digit <=0):
return 0
if(digit ==1):
return 1
return 10*countThree(digit-1) + 10 **(digit-1)
print(countThree(count_digit(9999)))
-
從一個(gè)數(shù)組中找出前4個(gè)最大的數(shù),用最優(yōu)解
def qiuckSort(list):
if len(list)<2:
return list
mid = list[0]
left = [i for i in list[1:] if i <= mid]
right = [i for i in list[1:] if i > mid]
finallyList = qiuckSort(left)+[mid] + qiuckSort(right)
return finallyList
array = [3, 0, 1, 832,23,45, 5, 5, 6,46, 9, 56, 897]
print(qiuckSort(array)[-4:])
-
寫一段程序,刪除字符串a(chǎn)中包含的字符串b,舉例 輸入a = "asdw",b = "sd" 返回 字符串 “aw”,并且測(cè)試這個(gè)程序
def delBString(a,b):
if not isinstance(a,str):
raise TypeError("a is not str")
if not isinstance(b,str):
raise TypeError("b is not str")
if len(a) < len(b):
raise Exception('a length must large to b length')
result = []
flag = False
i=0
la = len(a)
lb = len(b)
while i <la:
j = 0
while j < lb:
if i+j < la and a[i+j] == b[j]:
j += 1
else :
j += 1
flag = False
break
flag = True
if flag:
i += lb
else:
result.append(a[i])
i += 1
return "".join(result)
測(cè)試用例:
class TestdelInnerStringFunctions():
def setUp(self):
pass
def tearDown(self):
pass
def test_nomorl1(self):
assert delBString('asdqwe','we') == 'asdq'
def test_nomorl2(self):
assert delBString('asdqwe','0') == 'asdqwe'
def test_nomorl3(self):
assert delBString('測(cè)試asdqwe','we') == '測(cè)試asdq'
def test_nomorl4(self):
assert delBString('測(cè)試asdqwe','測(cè)試') == 'asdqwe'
def test_nomorl5(self):
assert delBString('asdqwe','') == 'asdqwe'
def test_nomorl6(self):
with pytest.raises(TypeError):
delBString('', 0)
def test_nomorl7(self):
with pytest.raises(TypeError):
delBString(0, 'as')
def test_nomorl8(self):
with pytest.raises(TypeError):
delBString(True)
def test_nomorl9(self):
with pytest.raises(Exception) as excinfo:
delBString('acd','acde')
assert "a length must large to b length" in str(excinfo.value)
assert excinfo.type == Exception
-
寫一個(gè)方法,把字符串轉(zhuǎn)為數(shù)字,比如 str="1234",變成 int 1234。并且測(cè)試這個(gè)程序
def StrToInt(a):
res ,mult,flag = 0,1,1
if not isinstance(a,str):
raise TypeError("a is not str")
if a[0] =='-' or a[0] == '+':
if a[0] == '-':
flag = -1
a = a[1:]
for i in range(len(a)-1,-1,-1):
if '9' >=a[i] >= '0':
res +=(ord(a[i]) -48) * mult
mult = mult *10
else :
return 0
return res * flag
def test_strToInt2(self):
with pytest.raises(TypeError):
StrToInt(34)
測(cè)試用例:
def test_strToInt3(self):
assert StrToInt('測(cè)試賽') == 0
def test_strToInt4(self):
assert StrToInt('+2147689') == 2147689
def test_strToInt5(self):
assert StrToInt('45') == 45
def test_strToInt6(self):
assert StrToInt('1a33') == 0
def test_strToInt7(self):
assert StrToInt('-5') == -5
-
給定一個(gè)已按照升序排列的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值 index1 和 index2,其中 index1 必須小于 index2
'''
說明:
返回的下標(biāo)值(index1 和 index2)不是從零開始的。
你可以假設(shè)每個(gè)輸入只對(duì)應(yīng)唯一的答案,而且你不可以重復(fù)使用相同的元素。
示例:
輸入: numbers = [2, 7, 11, 15], target = 9
輸出: [1,2]
解釋: 2 與 7 之和等于目標(biāo)數(shù) 9 。因此 index1 = 1, index2 = 2 。
'''
## python
class Solution(object):
def twoSum(self, numbers, target):
l=0
r=len(numbers)-1
while(l<r):
if(numbers[l]+numbers[r]== target):
return [l+1,r+1]
if(numbers[l]+numbers[r] <target):
l += 1
else:
r -= 1
## 測(cè)試用例:
def test_towSum1(self):
assert towSum([0,1, 1, 2, 3, 6,8], 2) == [1, 4]
def test_towSum2(self):
assert towSum([1,2,5,6,12], 13) == [1, 5]
def test_towSum3(self):
assert towSum([2, 7, 11, 15], 9) == [1, 2]
## Java
public int[] twoSum(int[] numbers, int target) {
int left = 0;
int right = numbers.length - 1;
while (left < right) {
if (numbers[left] + numbers[right] == target) {
return new int[]{left + 1, right + 1};
}
if (numbers[left] + numbers[right] < target) {
left += 1;
} else {
right -= 1;
}
}
return null;
}
-
假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。每次你可以爬 1 或 2 個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢?注意:給定 n 是一個(gè)正整數(shù)
'''
示例 1:
輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1. 1 階 + 1 階
2. 2 階
示例 2:
輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1. 1 階 + 1 階 + 1 階
2. 1 階 + 2 階
3. 2 階 + 1 階
'''
## Java ##
public int setpMethod(int n){
if(n ==1 || n ==2){
return n;
}
int result = 0,n1 = 1,n2 = 2;
while (n>=3){
result = n1 + n2;
n1 = n2;
n2 = result;
n--;
}
return result;
}
-
給定一個(gè)非負(fù)整數(shù)數(shù)組,你最初位于數(shù)組的第一個(gè)位置。
數(shù)組中的每個(gè)元素代表你在該位置可以跳躍的最大長(zhǎng)度。判斷你是否能夠到達(dá)最后一個(gè)位置。
'''
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 從位置 0 到 1 跳 1 步, 然后跳 3 步到達(dá)最后一個(gè)位置。
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會(huì)到達(dá)索引為 3 的位置。但該位置的最大跳躍長(zhǎng)度是 0 , 所以你永遠(yuǎn)不可能到達(dá)最后一個(gè)位置。
'''
## java ##
public boolean canJump(int[] nums) {
int n = 1;
if(nums.length ==1){
return true;
}
if(nums[0] == 0){
return false;
}
for(int i=nums.length-2; i>=0; i--){
if(nums[i] >= n){
n=1;
}else{
n++;
}
}
if(n == 1){
return true;
}else{
return false;
}
}
-
給定一個(gè)字符串 (s) 和一個(gè)字符模式 (p) ,實(shí)現(xiàn)一個(gè)支持 '?' 和 '' 的通配符匹配。'?' 可以匹配任何單個(gè)字符。'' 可以匹配任意字符串(包括空字符串)。兩個(gè)字符串完全匹配才算匹配成功
說明:
s 可能為空,且只包含從 a-z 的小寫字母。
p 可能為空,且只包含從 a-z 的小寫字母,以及字符 ? 和 *。
示例 1:
輸入:
s = "aa"
p = "a"
輸出: false
解釋: "a" 無法匹配 "aa" 整個(gè)字符串。
示例 2:
輸入:
s = "aa"
p = "*"
輸出: true
解釋: '*' 可以匹配任意字符串。
示例 3:
輸入:
s = "cb"
p = "?a"
輸出: false
解釋: '?' 可以匹配 'c', 但第二個(gè) 'a' 無法匹配 'b'。
示例 4:
輸入:
s = "adceb"
p = "*a*b"
輸出: true
解釋: 第一個(gè) '*' 可以匹配空字符串, 第二個(gè) '*' 可以匹配字符串 "dce".
示例 5:
輸入:
s = "acdcb"
p = "a*c?b"
輸入: false
##python##
def isMatch(self, s, p):
si, pi, pj, sj = 0, 0, -1, -1
while si < len(s):
if pi < len(p) and p[pi] == '*':
pi += 1
pj = pi
sj = si
elif pi < len(p) and (p[pi] == '?' or p[pi] == s[si]):
pi += 1
si += 1
elif pj != -1:
pi = pj
sj += 1
si = sj
else:
return False
while (pi < len(p) and p[pi] == '*'):
pi += 1
return pi == len(p)