第一篇:軟件測試理論總結
1、為什么要測試?軟件測試的目的?軟件測試的重要性? A、發現缺陷BUG/Defect B、評估軟件、項目、產品上線風險? C、滿足客戶要求、改善軟件質量
D、幫助開發發現問題、定位問題、修改問題
E、軟件驗收、也包括第三方的驗收(驗收測試、UAT)F、通過缺陷分析,從而預防同類缺陷的發生。
G、錯的:軟件測試能縮短開發周期。也不能直接降低開發成本。H、改善軟件的用戶體驗(易用性、性能、穩定性)12306訂票
角度:系統性思維(1、2、3、4、5、6、7+=100: 1+2+34+56+7=100)門薩測試 角色:用戶:發現缺陷、改善用戶體驗
:開發:證明軟件GoodEnough,定位缺陷,從而減少開發修改問題的時間
歷史:證明程序是正確?--》發現功能缺陷、錯誤--》發現不足(易用性、性能、穩定性)--》缺陷預防
現實:驗收、評估質量風險、第三方評測、為了盈利而測試(商業成功)(測試成本《《軟件缺陷導致成本)
2、什么是軟件測試?
IEEE(國際電器電子工程協會):目的:驗證系統是否滿足需求、驗證實際結果跟期望結果的差異?
xll:在一定的軟件、硬件、網絡環境下(搭建測試環境LAMP),遵循相對規范的測試流程,使用合適的測試工具,合理的測試方法,測試或運行軟件,其目的是為了驗證系統是否滿足需求、驗證實際結果跟期望結果的差異。
3、軟件測試的工作內容? BAT:Baidu、Alibaba、Tecent
4、測試與調試的區別: 對象:代碼、文檔;代碼 人:測試工程師;開發
流程:有規范的流程(除了隨機測試和探索性測試外);無流程 目的:發現問題;定位和解決問題
5、測試的七大原則:
A、測試只能證明軟件存在缺陷,不能證明軟件沒有缺陷(證偽不證真)B、測試是無法窮舉?(輸入數據是無法窮舉、處理邏輯路徑是無法窮舉),學習測試用例的設計方法。
C、測試應該盡早測試?(發現缺陷和修改的成本越早越低。需求-設計-代碼-測試-運行)測試應該在需求之后?設計之后?編碼之后?測試應該盡早介入,測試應該貫穿整個軟件生命周期。
D、缺陷的80/20原則(群集效應)。如果測試發現某個模塊有問題?繼續深入測試。刨根問底?破案?
E、殺蟲劑悖論(軟件對用例會免疫力)不斷更新測試用例、更新的測試思維
F、測試依賴于商業背景(與行業知識相關)結合專業和工作經歷和準備相關的項目。優點
SWOT 優勢、劣勢、機會、威懾(競爭對手)準備行業軟件 G、不存在缺陷的軟件并不代表是有用的系統。
一個合格、優秀、卓越、偉大的測試工程師的能力與素質的要求? 素質、性格、能力、管理、英語、行業六大維度回答 答
6、測試與開發的關系(獨立性)
未來趨勢:3大趨勢:
1、測試與開發的結合越來越緊密;
2、測試與行業背景結合越來越緊密
3、專項測試(測試分工會越來越精細),大數據測試(數據庫,用戶工程)
IT,DT。
比較分析不同網站的購物流程:亞馬遜、當當網、京東、淘寶(CDC)聯眾游戲、QQ游戲
1、測試人員也開發,開發也做測試(Google:吃狗糧的文化)
2、測試人員獨立與項目(在項目中有專職的測試人員:客觀)
3、測試人員獨立部門(有專門的測試部門:權威)
4、測試人員獨立技術(測試工具部、測試技術部)
5、測試人員獨立于公司(測試服務機構或者公司)
缺點:溝通越困難,對產品或者項目的熟悉越少。感情色彩:這是個非常嚴重的bug!!!
測試人員發現了BUG,開發人員不愿意修改,該怎么辦? 加班?敏感問題?三方思考:對方、客觀中立、自己
地鐵自動售貨機
PM
1、計劃階段:可行性分析:A、經濟可行性分析;B、技術可行性分析(外包)
計劃項目里程碑:計劃、需求SRS、概要設計HLD、詳細設計LLD、編碼、測試、運行與維護
輸出軟件項目計劃
SPP(Software Project Plan)PM
輸出軟件確認與驗證計劃 SVVP(Software verfication Validation Plan)軟件測試計劃 TPM
2、需求階段:產品(金蝶):調研與項目(用戶)
SE 系統工程師
what to develop?黑盒
TSE 分析測試需求挖掘用戶的隱性需求
需求規格SRS:功能需求:
1、接受貨幣
2、選擇商品
3、計算功能
4、輸出商品和找零、5、商品管理
性能需求:30S之內輸出商品和找零 可靠性需求:7X24小時
易用性需求:良好易用性,不需要培訓。最好用的軟件baidu 需求分析的技術:UML建模(需求工程)
3、設計階段:概要設計HLD(High Level Design 高層設計):模塊分解與接口的定義。
1、接受貨幣(識別真偽、識別面額、識別類別)分解原則?高內聚低耦合?(百度)
(無直接耦合、數據耦合、印記耦合、控制耦合、公共耦合、內容耦合)回歸測試
2、接口:函數接口、消息接口、文件接口(QQ修改頭像)、數據庫接口
詳細設計LLD(Low Level Design 底層設計):算法的描述(程序=數據結構+算法/思路(各種排序))流程圖、偽碼。白盒
4、編碼階段:熟悉一門編程語言的語法 C、Java、PHP和一個開發工具或者平臺 VC、Eclipse等
熟悉一門腳本語言:python、ruby、perl、tcl、shell
BAT
5、測試階段:測試工具、方法、流程
6、運行與維護:技術支持
測試應該貫穿整個軟件生命周期。
1、測試應該在SRS之后?
HLD
LLD
CODE
瀑布模型:缺點:不適應需求變更頻繁的項目。適合產品開發的項目。測試滯后于開發。
V模型:
用戶需求URS----------驗收測試UAT(User Acceptance Testing)需求規格SRS--系統測試ST(System Testing)概要設計HLD-------------------------集成測試IT(Integration Testing)詳細設計LLD-----------------單元測試UT(Unit Testing)編碼CODE------------代碼評審CODE Review
H模型、X模型。
1、方法的背景?
2、方法的操作步驟、3、優缺點、4、適用范圍、5與其他方法怎么樣配合、6重點、要點、難點 等價類:
1、背景:why?輸入無法窮舉,我們不能測試所有情況,必選選擇有代表數據來驗證
2、操作步驟:
1、分析被測試對象輸入條件以及子條件(關鍵點:考慮隱性子條件,條件正交完備)
2、根據等價類劃分原則劃分有效等價類和無效等價類
原則:
1、規定范圍或者格式,譬如長度6~18位,可以劃分1個有效、2個無效等價類
2、規定的集合或者滿足某個條件,譬如一些下拉列表的選擇,可以劃分1有效、1個無效
3、規定了必須如何,譬如組成、開頭,可以劃分1個有效和若干個無效。
4、規定是布爾量,譬如是否已經注冊,可以劃分1個有效和1個無效
5、規定是多種選擇(還有不同的處理方式),譬如163郵箱注冊的后綴,可以劃分成若干個有效,和1個無效。
3、根據等價類設計用例原則:(1、用一個用例覆蓋盡可能多的有效等價類;
2、為每一個無效等價類單獨設計用例:為了更好定位問題)設計數據
原則:同樣效果情況下用例數盡可能少,精確定位問題。
3、優缺點:適用范圍廣、能以有限用例達到比較好覆蓋無法窮舉的輸入。
缺點:方法沒有刻意考慮邊界,只能針對單個輸入條件,沒有考慮輸入之間組合以及輸入與輸出的關系。
4、適用范圍:只要有業務規則的情況下,最好是有清晰的業務規則
5、與其他方法怎么樣配合:一般情況下會跟邊界值方法結合使用。
6、要點:等價類劃分的原則:尤其是要注意隱性條件(完整性,不要遺漏)
思考:微信發送圖片、上傳QQ頭像、導入文件這類如何使用等價類
邊界值:
1、背景:why?:很多錯誤通常都發生在邊界上。
2、操作步驟:
1、分析被測試對象輸入條件以及子條件
2、分析上點、離點和內點
3、根據邊界值設計用例的原則設計數據去覆蓋可能上點、離點和內點
3、優缺點:優點:能夠比較高效發現問題 缺點:不能考慮輸入與輸出之間的關系
4、適用范圍:規定了大小、長度、值的范圍、分辨率(廣義)
5、與其他方法怎么樣配合:與等價類配合
6、要點:找到邊界(隱含的邊界)
航空行李托運:重量不能超過30公斤,如果超過就要收費,正常人4元每公斤,外國人收6塊,頭等艙是其他艙的2倍 殘疾人是正常人的1/2.判定表/決策表:
1、背景:why?:輸入條件很多情況(要么滿足、要么不滿足),不同條件組合下輸出結果也很多,希望條件跟結果的一一對應的關系
它可以把復雜的邏輯關系和多種條件組合的情況表達得既具體又明確
2、操作步驟:
1、分析被測試對象的輸入條件,同時分析各種可能的輸出結果()
2、列出所有的條件和動作()
3、填寫條件項和動作項
4、合并相似規則
3、優缺點:優點:能解決復雜條件之間邏輯組合,比較清晰列出所有的組合
缺點:一旦條件數過多,組合數會很龐大,合并存在漏測的風險(很難精確定位問題)。對于條件,只能是有兩種取值(為真、為假)
4、適用范圍:條件只有兩種取值的多條件組合的例子
5、與其他方法怎么樣配合:與因果圖
6、要點:找出業務條件規則,列出各種可能輸出結果。(測試象棋馬走日這個規則)當條件比較多>5 要考慮是否有中間結果(簡化)
正交試驗法
1、背景:彌補判定表方法可能導致用例規模非常龐大,多條件組合的數量非常巨大。
根據伽羅瓦理論,條件之間的兩兩組合如果不出問題,三三組合以上出問題的概率小,這樣 一來,可以用非常少的用例來達到比較好的測試效果。
2、操作步驟:
1、分析輸入條件以及條件的取值范圍。(篩選出來的條件之間沒有約束關系)
2、選擇合適的正交表(計算需要最小正交表的試驗數,然后分兩種:
1、單一水平:去挑選比需要大但是是最接近的正交表,直接套用;合并去匹配正交表-->分解
2、混合水平:)保證試驗數最少
3、根據正交表(拆分之后)設計測試數據(每一列行是一個測試項),如果是空的地方,可以根據實際需要加權處理。
3、優缺點:優點:在保證一定均勻覆蓋率的前提下可以大大降低試驗次數(測試項),缺點:可能有一定的遺漏
4、適應范圍:配置類需求的分析,多條件多取值的業務測試。
5、與其他方法配合:等價類和邊界值(輸入框)
6、要點:選擇合適正交表以及如何去合并和分拆!
Use Case法/場景法/流程分析法
1、背景:在實際工作中,我們很業務功能是通過工作流來實現,需要站在流程角度(用戶角度),譬如購物流程
安裝測試、轉賬流程、游戲場景
2、操作步驟:
1、分析業務的基本事件流和備選事件流(正常備選事件流和異常事件流(退出))擔心備選流有遺漏
2、畫出事件流圖(Use Case圖用例圖)
3、根據圖設計場景
4、根據場景來設計測試數據
3、優缺點:優點:站在用戶的角度來測試(),可以很好地與開發配合,直接通過用例圖轉化,效率比較高
4、適應范圍:驗收測試用例的設計,只要流程
5、與其他方法配合:等價類、邊界值(選多少個備選流)
6、要點:事件流分析,尤其是備選流的分析是最關鍵的地方。思路比較清晰,比較廣 網銀轉賬:寫出基本流和備選,并且畫出事件流圖。影響軟件質量的因素: 技術:1.現有的技術:人
2.技術沉淀:技術文檔,專利技術,指導書,問題庫,經驗庫 流程:流程可以提高軟件透明度,控制項目的進度,幫助項目組預防風險。組織:組織體現的是管理
1.讓合適的人去做合適的事情
2.流程的推動需要組織強有力的保障
軟件質量管理體系 1.ISO9000 八項質量管理原則:
以顧客為中心:以用戶的角度去思考問題(UAT)下游環節為上游環節的客戶
領導的作用:有激情,有謀略,演講才能,身先士卒 全員參與:團隊合作信任
基于事實的決策方法:個人能力基線(PCB)(量化管理)持續改進(持續改善):最初是日本的一個管理理念,從初級員工到高級管理者都需要參與 互利的供方關系:共贏,共同創造利潤 過程方法:
過程:輸入轉化為輸出的活動
過程方法:過程的識別,相互作用以及管理 管理的系統方法:全局化的管理策略 2.CMM--初始級:
手工作坊式,個人英雄主義,沒有相關過程,不可預測并且缺乏控制。
--可重復級:特點->可以重復以往的項目經驗 證券項目(招商證券)國信證券:
SRS
HLD
LLD
Code
test case 模板
關鍵過程域(KPA)(key process area): 需求管理 配置管理 軟件質量保證--已定義級
統一標準,一致的過程(軟件工程小組SEPG)關鍵過程域:同行評審--已管理級:可預測的過程
量化管理,通過數據量化,來實現預測項目 Gompertz模型
--優化級:對過程的持續改進 新技術或新思想的引入
關鍵過程域:缺陷分析-》預防缺陷-》質量標準
CMM與CMMI的區別 CMM:階段式表示
CMMI:階段式、連續式
3.六西格瑪
六西格瑪管理法原則: 注重客戶 注重流程 全員參與 預防為主
事實依據的決定 持續和突破性改進 六西格瑪的實施方式:
DMAIC(define, measure, analysis, improve, control)
軟件質量模型: 功能性
適合性:軟件產品為指定任務或用戶目標提供一組合適的功能的能力 準確性:軟件產品提供所需要的精確度或和結果相符的能力 互操作性:軟件產品與一個或更多的其他系統進行交互的能力
保密安全性:保護信息和數據的能力,不同權限的人可以操作不同的數據
功能性的依從性:遵守與功能性相關的標準,約定或法規的能力(國際標準,國家標準,行業標準,企業內部標準)可靠性
成熟性:軟件產品為避免由于軟件中的錯誤而導致失效的能力
容錯性:由于用戶操作錯誤,軟件可以處理相應的錯誤,而不是死機或崩潰 易恢復性:在失效已經發生的情況下,軟件產品如何快速恢復使用的能力 可靠性的依從性:軟件產品遵循與可靠性相關的標準或約定或法律法規 易用性 易理解性:軟件產品使用用戶能理解軟件是否合適以及如何能將軟件用于特定任務和使用環境的能力。
易學性:軟件產品使得用戶能學習其功能的能力(操作手冊,幫助文檔)易操作性:軟件產品使用戶能操作和控制它的能力
吸引性:軟件產品吸引用戶的能力。界面美觀,易用性要好 易用性的依從性:軟件產品的易用性遵循相關的標準或法律法規 效率
時間特性:在規定的條件下,軟件產品執行其功能時,提供適當的響應和處理時間以及吞吐率的能力。也就是完成用戶的某個功能需要的時間
資源利用率:在規定的條件下,軟件產品執行其功能時,使用合適的資源數量(CPU,內存占用)
效率依從性:軟件產品遵守與效率相關的法規 維護性
易分析性:軟件產品診斷軟件中的缺陷或失效原因或識別待修改部分的能力。(日志記錄)易改變性:修改缺陷的能力,實現功能的能力。(代碼要高內聚,低耦合)目的在于降低修改軟件的成本
穩定性:軟件產品避免由于軟件修改而造成意外結果的能力 易測試性:軟件產品的問題能被確認的能力。定位問題的能力 維護性的依從性:軟件產品的維護性遵循相關的標準 可移植性:
適應性:軟件產品適應不同的環境的能力 易安裝性:被安裝的能力(一鍵安裝)共存性:和其他軟件共同安裝或存在的能力 易替換性:升級時替換文件的能力
可移植性的依從性:軟件產品的可移植性遵循相關的標準
軟件質量活動:
軟件質量保證(SQA):從流程方面保證軟件質量 測試:從技術方面保證軟件質量
度量:
作用:理解,預測,評估和改進
度量的分類:四個基本度量項:規模工作量進度缺陷
BUG屬性:
發現人
reporter 發現時間
date 缺陷狀態
status(new, open, resolved, reopened, closed)(fixed, duplicated, Invalid, won't fix, postpone)缺陷版本
version 缺陷所屬的產品/項目/模塊
product, project, feature 缺陷編號 no 缺陷嚴重程度serverity 缺陷優先級 priority 標題 title 詳細描述 description 系統環境 OS(服務器環境和客戶端環境)測試環境(用戶名/密碼)test environment 重現率 repository 預置條件pre condition 步驟
steps 實際結果
actual result 期望結果
expected result 其他信息
additional information 用例編號testcase no *附件
attachment ================== 缺陷引發的原因 root cause 缺陷解決方案 resolution(改代碼,數據庫,環境問題)代碼改動范圍 影響范圍
================== 驗證人 驗證環境 驗證范圍 結果
第二篇:軟件測試理論總結
軟件測試理論復習
軟件測試:在規定條件下對程序進行操作,以發現錯誤,對軟件質量進行評估
軟件質量:軟件特性的總和,軟件滿足規定或潛在用戶需求的能力
軟件測試與質量保證的區別:
質量保證(QA):質量保證的重要工作是通過預防、檢查與改進來保證軟件質量。QA采用“全面質量管理”和“過程改進”的原理開展質量保證工作。所關注的是軟件質量的檢查與測量。雖然QA的活動中也有一些測試活動,但所關注的是軟件質量的檢查與測量。QA的工作是軟件生命周期的管理以及驗證軟件是否滿足規定的質量和用戶的需求,因此主要著眼于軟件開發活動中的過程、步驟和產物,而不是對軟件進行剖析找出問題或評估。
軟件測試:測試雖然也與開發過程緊密相關,但關心的不是過程的活動,而是對過程的產物以及開發出的軟件進行剖析。測試人員要“執行”軟件,對過程中的產物----開發文檔和源代碼進行走查,運行軟件,以找出問題,報告質量。測試人員必須假設軟件存在潛在的問題,測試中所做的操作是為了找出更多的問題,而不僅僅是為了驗證每一件事是正確的。對測試中發現的問題的分析、追蹤與回歸測試也是軟件測試中的重要工作,因此軟件測試是保證軟件質量的一個重要環節。
軟件測試的目的:盡可能多的發現軟件中存在的錯誤。
Grenford J.Myers 就軟件測試目的提出了以下觀點:
1、測試是程序的執行過程,目的在于發現錯誤
2、一個好的測試用例在于能發現至今未發現的錯誤
3、一個成功的測試是發現了至今未發現的錯誤的測試
測試的目的,是想以最少的人力、物力和時間找出軟件中潛在的各種錯誤和缺陷,通過修正各種錯誤和缺陷提高軟件質量,回避軟件發布后由于潛在的軟件缺陷和錯誤造成的隱患所帶來的商業風險。
軟件測試原則:
1、所有的測試都應當追溯到用戶需求
2、應當盡早地和不斷地進行測試
3、完全測試是不可能的,測試需要適可而止
4、測試應充分注意軟件中的群集現象。測試中該模塊殘存的缺陷與該模塊中已發現的缺陷數成正比。
5、程序員應避免檢查自己的程序,軟件項目組應避免測試自己組開發的程序
6、工程界中的80-20原則;BUG的80-20原則
7、測試應從“小規模”開始,逐步轉向“大規模”
8、同化效應,為了達到最佳測試效果,可以由第三方來構造測試
9、檢查程序是否做了該做的工作只是完成了一半,另一半是檢查程序是否做了不該做的工作
10、設計測試用例時必須包括正常的輸入和異常的輸入
軟件包括程序、數據和文檔
軟件測試對象:程序、數據和文檔
軟件測試中的V&Vi:
驗證(vertification)是保證軟件正確實現特定功能的一系列活動和過程,目的是保證軟件生命周期的每一個階段的成果滿足上一個階段所設定的目標(是否按需求做出了功能正確的產品)
確認(validation)是保證軟件滿足用戶需求的一系列的活動和過程,目的是在軟件開發完成后保證軟件與用戶需求相符合(是否做出了用戶想要的產品)
驗證與確認都屬于軟件測試,它包括對軟件分析、設計以及程序的驗證與確認。軟件測試分類
按照開發階段劃分:單元測試、集成測試、系統測試、(確認測試)和驗收測試
單元測試:又稱模塊測試,邏輯測試或結構測試,是針對軟件設計的最小單位--程序模塊進行正確性檢驗的測試工作。其目的在于檢查每個程序單元能否正確實現詳細設計說明中的模塊功能、性能、接口和設計約束等要求,發現各個模塊內部可能存在的各種錯誤。單元測試需要從程序的內部結構出發設計測試用例。
單元測試的內容:
1)模塊接口測試
2)局部數據結構測試
3)路徑測試
4)錯誤處理測試
5)邊界測試
單元測試輔助模塊:
驅動模塊(drive):相當于所測模塊的主程序。它接收測試數據,把這些數據傳送給所測模塊,最后再輸出實測結果
樁模塊(stub):也叫做存根模塊。用以代替所測模塊調用的子模塊
集成測試:又叫組裝測試,綜合測試或聯合測試。通常在單元測試基礎上,將所有的程序模塊進行有序的、遞增的測試。集成測試是檢驗程序單元或部件的接口關系,逐步集成為符合概要設計要求的程序部件或整個系統。
集成測試需要考慮的問題:
1)在把各個模塊連接起來的時候,穿越模塊接口的數據是否會丟失
2)一個模塊的功能是否會對另一個模塊的功能產生不利的影響
3)各個子功能組合起來,能否達到預期要求的父功能
4)全局數據結構是否有問題
5)單個模塊的誤差累積起來,是否會放大,以至達到不能接受的程度
集成測試組裝方法:一次性組裝方式和漸增式組裝方式;后者又包括:自底向上、自頂向下、混合集成集成測試完成的標志:
1)成功地執行了測試計劃中規定的所有集成測試
2)修正了所發現的錯誤
3)測試結果通過了專門小組的評審
確認測試:通過檢驗和提供客觀證據,證實軟件是否滿足特定預期用途的需求。確認測試是檢測與證實軟件是否滿足軟件需求說明書中規定的要求。
確認測試一般包括有效性測試和軟件配置復查
系統測試:是為驗證和確認系統是否達到其原始目標,而對集成的硬件和軟件系統進行的測試。系統測試是在真實或模擬系統運行的環境下,檢查完整的程序系統能否和系統(包括硬件、外設、網絡和系統軟件、支持平臺等)正確配置、連接,并滿足用戶需求。
驗收測試:按照項目任務書或合同、供需雙方約定的驗收依據文檔進行的對整個系統的測試與評審,決定是否接收或拒收系統。
驗收測試往往在系統測試完成后、項目最終交付前進行。
驗收測試計劃、測試方案與測試案例一般由開發方制定,由用戶方與監理聯合進行評審。驗收小組由開發方、用戶方、監理方代表、主管單位及行業專家構成。
按照測試技術劃分:白盒測試、黑盒測試、灰盒測試;也可劃分靜態測試和動態測試。
靜態測試是指不運行程序,通過人工對程序和文檔進行分析與檢查;
動態測試是指通過人工或使用工具運行程序進行檢查、分析程序的執行狀態和外部表現。白盒測試:又稱結構測試、邏輯測試,指通過對程序內部結構的分析、檢測來尋找問題。白盒測試把程序看成裝在一個透明的白盒子里,也就是清楚了解程序結構和處理過程,檢查是否所有的結構及路徑都是正確的,檢查軟件的內部動作是否按照設計說明的規定正常進行。白盒測試用例設計方法:邏輯覆蓋法和基本路徑測試法
邏輯覆蓋法:
根據覆蓋目標的不同,邏輯覆蓋又可分為語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。
語句覆蓋:選擇足夠多的測試用例,使得程序中的每個可執行語句至少執行一次
判定覆蓋:通過執行足夠多的測試用例,使得程序中的每個判定可能取值(真或假)都至少滿足一次,也稱為“分支覆蓋”
條件覆蓋:設計足夠多的測試用例,使得程序中的每個判定包含的每個條件的可能取值(真/假)都至少滿足一次
判定/條件覆蓋:設計足夠多的測試用例,使得程序中每個判定包含的每個條件的所有情況(真假)至少出現一次,并且每個判定本身的判定結果(真/假)也至少出現一次
組合覆蓋:設計足夠多的測試用例,使得程序中每個判定的所有可能的條件取值組合都至少出現一次
路徑覆蓋:設計足夠多的測試用例,要求覆蓋程序中所有可能的路徑
基本路徑測試方法:
在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出基本可執行路徑集合,從而設計測試用例。包括以下四個步驟和一個工具方法:
1)以詳細設計或源代碼作為基礎,導出程序的控制流圖
2)計算得到的控制流圖G的環路復雜性V(G)
3)確定線性無關的路徑的基本集
4)生成測試用例,確保基本路徑集中每條路徑的執行
環路復雜性V(G)也稱圈復雜度V(G)=區域數=判斷結點數+1=邊數—結點數+2
黑盒測試:又稱功能測試或數據驅動測試,指通過軟件的外部表現來發現缺陷和錯誤。黑盒測試把測試對象看成一個黑盒子,完全不考慮程序內部結構和處理過程。黑盒測試是在程序界面處進行測試,它只是檢查樣序是否按照需求規格說明書的規定正常實現。
黑盒測試用例設計方法:等價類劃分法、邊界值分析法、錯誤推測法、決策表法、因果圖法、場景法、功能圖法
等價類劃分法:不考慮程序的內部結構,測試人員要對需求規格說明書的功能需求進行細致分析,然后把程序的輸入域劃分成若干部分,從每個部分中選取少數代表性數據當作測試用例。
等價類分為:有效等價類和無效等價類
有效等價類:指對于程序的規格說明來說是合理的、有意義的輸入數據構成的集合,可以檢驗程序是否實現了規格說明書中所規定的功能和性能
無效等價類:指對于程序的規格說明來說是不合理的、無意義的輸入數據構成的集合。確定等價類的原則:
1)在輸入條件規定了取值范圍或值的個數的情況下,可以確立一個有效等價類和兩個無效等價類
2)在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類
3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。
4)在規定了輸入數據的一組值(假定N個),并且程序要對每一個輸入值分別處理的情況下,可確定n個有效等價類和一個無效等價類
5)在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)
6)在確知已劃分的等價類中,各元素在程序處理中的方式不同的情況下,則應將該等價類進一步劃分為更小的等價類
根據已列出的等價類表,按以下步驟確定測試用例:
1)為每一個等價類規定一個唯一的編號
2)設計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,最后使得所有有效等價類均被測試用例所覆蓋
3)設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步驟,使所有無效等價類均被覆蓋
灰盒測試是介于白盒測試與黑盒測試之間,主要關注輸出對于輸入的正確性;同進也關注內部表現,但這種關注不像白盒測試那么詳細、完整,只是通過一些表征性的現象、事件、標志來判斷內部的運行狀態。
自動化測試:通過測試工具或其他手段,按照測試工程師的預定計劃對軟件產品進行自動的測試
自動化測試的優勢:
1)提高測試質量
2)提高測試效率,縮短測試工作時間
3)提高測試覆蓋率
4)執行手工測試不能完成的測試任務,如壓力測試
5)更好地重現軟件缺陷的能力
6)更好的利用資源
7)增進測試人員與開發人員之間的合作伙伴關系
自動化測試的局限性:
1)定制型項目
2)周期很短的項目
3)業務規則復雜的對象
4)人體感觀與易用性測試
5)不穩定的軟件
6)涉及物理交互
開發模型:瀑布模型、原型模型、螺旋模型、增量模型、漸進模型、快速軟件開發(RAD)以及Rational統一過程(RUP)
瀑布模型:需求分析、可行性研究、概要設計、詳細設計、編碼、測試、運行維護
軟件的生命周期:需求分析、概要設計、詳細設計、編碼、測試、運行維護、退出使用 軟件的全壽命周期費用(LCC:Life cycle cost)
測試的花費減少了運行維護階段的花費,從全壽命周期費用來看,測試是使LCC降低了 測試模型:V模型、W模型、H模型、X模型、前置測試模型
軟件測試策略:單元測試、集成(組裝)測試、確認測試和系統測試。
軟件失效分類:軟件錯誤(software error)、軟件缺陷(software defect)、軟件故障(software fault)、軟件失效(software failure)
軟件缺陷定義:
1、軟件未達到產品說明書中明確指明要實現的功能
2、軟件出現了產品說明書中指明不會出現的錯誤
3、軟件功能超出了產品說明書中指明的范圍
4、軟件未達到產品說明書中雖未明確指出但應達到的目標
5、軟件測試人員認為軟件難以理解、不易使用、運行速度慢,或最終用戶認為不好使用 缺陷與錯誤嚴重性和優先級:
嚴重級:表示軟件缺陷所造成的危害的惡劣程序;分為以下四個等級:
嚴重:系統崩潰、數據丟失、數據毀壞
較嚴重:操作性錯誤、錯誤結果、遺漏功能
一般:小問題、錯誤字、UI布局、罕見故障
建議:不影響使用的瑕疵或更好的實現
優先級:表示修復缺陷的重要程度與次序
最高優先級:立即修復,停止進一步測試
次高優先級:在產品發布之前必須修復
中等優先級:如果時間允許應該修復
最低優先級:可能會修復,但是也能發布
軟件缺陷跟蹤管理
(1)Bug記錄信息
主要包括以下幾項內容:
測試軟件名稱、測試版本號、測試人名稱、測試事件、測試軟件和硬件配置環境、發現軟件錯誤的類型、錯誤的嚴重等級及優先級、詳細步驟、必要的附圖、測試注釋、提交給誰
(2)Bug處理信息
主要包括以下4項內容:
處理者姓名、處理時間、處理步驟、錯誤記錄的當前狀態
軟件錯誤的狀態:
軟件錯誤的主要狀態包括以下內容:
新信息(New):測試中新報告的軟件Bug
打開(Open):被確認并分配給相關開發人員處理
修正(Fixed):開發人員已完成修正,等待測試人員驗證
拒絕(Declined):拒絕修改Bug
延期(Deferrend):不在當前版本修復的錯誤,下一版本修復
關閉(Closed):Bug已被修復
錯誤管理流程:
錯誤管理的流程可以概括為以下幾項內容:
1、測試人員提交新的錯誤入庫,錯誤狀態為“New”
2、高級測試人員驗證錯誤
1)如果確認是錯誤,分配給相應的開發人員,設置狀態為“Open”
2)如果不是錯誤,則拒絕,設置為“Declined”狀態
3、開發人員查詢狀態為“Open”的錯誤,做如下處理
1)如果不是錯誤,則拒絕,設置為“Declined”狀態
2)如果是錯誤,則修復并置狀態為“Fixed”
3)如果不能解決的錯誤,要留下文字說明并保持錯誤為“Open”狀態
4)對于不能解決和延期解決的錯誤,不能由開發人員自己決定,一般要通過某種會議(評審會)通過才能認可
4、測試人員查詢狀態為“Fixed”的錯誤,驗證錯誤是否解決,做如下處理
1)如果問題解決了,置錯誤狀態為“Closed”
2)如果問題沒有解決,置錯誤狀態為“Reopen”
測試用例:
為實施測試而向被測試系統提供的輸入數據、操作或各種環境設置以及期望結果的一個特定的集合。
測試用例基本組成要素:項目名稱、測試人員、用例編號、測試用例說明、測試的模塊、測試的輸入條件、測試的預期結果、測試實際結果、缺陷編號
1、什么是軟件測試,為什么要進行軟件測試?軟件測試與調試的區別?
答案:(1)軟件測試就是利用測試工具按照測試方案和流程對產品進行功能和性能測試,甚至根據需要編寫不同的測試工具,設計和維護測試系統,對測試方案可能出現的問題進行分析和評估。執行測試用例后,需要跟蹤故障,以確保開發的產品適合需求。
(2)因為沒有經過測試的軟件很難在發布之前知道該軟件的質量,就像ISO質量認證一樣,軟件同樣也需要質量的保證,這個時候就需要在團隊中開展軟件測試的工作。在測試的過程發現軟件中存在的問題,及時讓開發人員得知并修改問題,在即將發布時,從測試報告中得出軟件的質量情況。
(3)在軟件開發的過程中,調試和測試是兩個不同的過程,分別由程序開發人員和測試人員來完成。
第一,調試的過程是隨機的不可重復的;而測試的過程是有計劃的、可以重復的過程。
第二,調試的目的是為了隔離和確認問題的所在,并加以解決,使得程序能夠正常運行;而測試的目的是為了找出與軟件實現定義的規格和標準不符合的問題,保證軟件能都滿足用戶需求。
但二者也有相同之處,最終目的都是為了提高軟件質量。
2、a測試與b測試的區別?靜態測試與動態測試的區別?
答案:(1)Alpha測試(α測試)是由一個用戶在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操作環境下進行的受控測試;Beta測試(β測試)是軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試。開發者通常不在測試現場,Beta測試不能由程序員或測試員完成。總而言之,前者是內部模擬上線,后者是真正上線,讓用戶參與測試。
(2)靜態方法是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。對需求規格說明書、軟件設計說明書、源程序做結構分析、流程圖分析、符號執行來找錯。靜態方法通過程序靜態特性的分析,找出欠缺和可疑之處,例如不匹配的參數、不適當的循環嵌套和分支嵌套、不允許的遞歸、未使用過的變量、空指針的引用和可疑的計算等。靜態測試結果可用于進一步的查錯,并為測試用例選取提供指導。
動態測試方法是指通過運行被測程序,檢查運行結果與預期結果的差異,并分析運行效率和健壯性等性能,這種方法由三部分組成:構造測試實例、執行程序、分析程序的輸出結果。
第三篇:軟件測試總結
1.軟件測試定義:由人工或自動方法來執行或評價系統或系統部分的過程,以驗證它是否滿足規定的需求,或識別出期望的結果和實際結果之間的差異。2.軟件測試的分類:
測試對象或范圍分類:需求評審、設計評審、單元測試、程序測試、系統
測試、文檔測試、Web應用測試、客戶端測試、數據庫測試等;
測試目的分類:集成測試、功能測試、壓力測試、性能測試等等; 靜態測試、動態測試; 白盒測試、黑盒測試。3.軟件測試的基本流程與原則
基本流程:
測試用例設計-輸入數據、預期結果; 測試執行-輸入數據執行被測對象; 檢查實際輸出與預期結果。基本原則:
開始測試時認定軟件有錯,測試要證明有錯; 測試應該由獨立的測試團隊來完成; 測試設計必須設計對應的預期輸出;
要對合理、不合理(有效、無效)輸入數據都進行測試; 檢查軟件的完備性、多余; 完整保留測試文檔;
一個被測對象中有錯誤的概率與已發現錯誤的個數成正比。4.Beizer測試成熟度級別:
0級:沒有區分測試與調試;
1級:測試的目的是證明軟件能用; 2級:測試的目的是證明軟件不能用;
3級:測試的目的不是為了證明什么,而是為了降低軟件使用風險; 4級:測試是一種智能訓練,能夠幫助專業人員開發出更高質量的軟件。5.軟件測試與軟件工程,軟件過程的關系:
軟件工程:在給定的條件下(成本、時間)開發出高質量的軟件產品。軟件生產過程的特性決定了軟件產品中不可避免包含有錯誤。軟件測試則是盡可能多地發現錯誤,從而保障軟件產品的質量。6.McCall的質量因素:
產品修改:
可維護性,靈活性,可測試性 產品轉移:
可移植性,可復用性,互操作性 產品運行:
正確性,易用性,可靠性,效率,完整性 7.軟件質量困境
軟件質量必須足夠好:存在價值
軟件產品無法完美:需要消耗過多的資源、時間、成本
軟件開發需要在兩個極端之間進行平衡:軟件足夠好的同時又不完美。8.質量控制、質量保證和質量管理
軟件質量控制其實是基本方法,通過一系列的技術來科學地測量過程的狀態。如缺陷率、測試覆蓋率等。
軟件質量保證則是過程的參考、指南的集合,如ISO9000、CMM/CMMI等,著重內部的檢查,確保已獲取認可的標準和步驟都已經遵循。
軟件質量管理則是實際操作的思想,質量管理控制和協調組織的質量活動,包括質量控制、質量保證和質量改進。9.WebApp應用的屬性:
網絡密集型應用;并發性;大負載量;性能;高可靠性、高可用性;安全性-內容敏感;
10.軟件評審的目的,評審度量及其應用
評審的目標在于:盡早發現軟件過程中的錯誤,防止錯誤傳遞、蔓延至后續活動,防止錯誤轉化為缺陷。
準備工作量Ep-實際評審會之前所需工作量; 評估工作量Ea-實際評審所花費的工作量 返工工作量Er-修改評審所發現錯誤的工作量 工作產品規模WPS-評審對象的規模
發現的主要錯誤數Errmajor-多于預期的改錯工作量的錯誤數目 發現的次要錯誤數Errminor-少于預期的改錯工作量的錯誤數目 總評審工作量Ereview = Ep+Ea+Er 錯誤總數Errtot = Errmajor+Errminor 錯誤密度:評審的每單位工作產品發現的錯誤數Ed = Errtot / WPS 錯誤密度數值的含義:較小(產品質量非常好或評審不夠徹底);較大(產品質量存在缺陷)
11.軟件測試計劃:描述對計算機軟件配置項、子系統、系統進行測試的計劃安排,內容包括測試的環境、測試工作的標識及測試工作的時間安排。
軟件測試報告:是對計算機軟件配置項、軟件系統或子系統,或與軟件相關項目執行合格性測試的記錄 12.軟件測試活動
制訂測試計劃(測試分析員)
測試設計(測試設計人員)-方案設計 測試及測試用例設計 測試過程
樁模塊、驅動模塊設計
測試實施(測試設計員)-實現測試設計 單元測試(測試員)集成測試(測試員)系統測試(測試員)
評估測試(測試設計人員)
13.無向圖的相關定義:
連接性:節點ni、nj是連接的,當且僅當ni、nj在同一條路徑上。組件:圖的組件是相連節點的最大集合
圖G的圈復雜度V(G)=e-n+2p,其中e為G的邊數,n為節點數,p為組件數。14.圖覆蓋:給定一個關于圖G的準則C的測試需求集合TR,測試集合T在圖G上滿足準則C當且僅當對TR中每個測試需求tr,path(T)中至少存在一條測試路徑p滿足tr。
簡單路徑:如果從ni到nj的一條路徑中,除了始節點和終節點可以相同外,沒有任何節點出現次數多于一次,則該路徑為簡單路徑。
主路徑:如果從ni到nj是一條簡單路徑,并且它不作為任何其他簡單路徑的子路徑出現,則稱之為主路徑。
主路徑覆蓋(PPC)準則:TR包含圖中每一條主路徑。
指定路徑覆蓋(SPC):TR包含一個測試路徑集S,S為指定參數。15.白盒測試方法
白盒測試:根據被測對象的內部結構和運行機制來設計測試用例的方法,又稱為結構測試、邏輯驅動測試、覆蓋測試
被測對象的獨立路徑至少覆蓋一次; 所有邏輯取值測試[真、假]; 循環邊界測試;
檢查內部數據結構、邊界條件。16.黑盒測試方法
黑盒測試方法又稱功能測試方法、數據驅動測試方法,測試設計時不考慮被測對象的內部結構,以檢查系統功能(功能的正確、完整、邏輯流程、人機界面、文檔內容、系統安裝/初始化)
以被測對象的外部特征為測試依據。17.模糊測試方法
模糊測試方法:構造大量的隨機數據作為系統的輸入,從而檢驗系統在各種數據情況下是否出現問題。
18.增量測試:單元測試、調用依賴的模塊集成測試,逐步擴展直到形成整個軟件系統。
19.突擊測試:所有模塊一次性集成為一個完整的系統,然后進行完全測試。20.等價類劃分:
等價類劃分基于對輸入或輸出數據情況的評估,劃分成兩個或多個子集(等價類),然后從每個子集中選取一定的代表進行測試的測試用例設計方法。21.極限測試
極限編程:利用輕量、敏捷的開發過程,使開發人員能夠更快地完成應用程序的開發。強調頻繁測試、測試驅動的方式保證軟件質量。
極限測試:為滿足極限編程思想和過程而設計的一套測試策略和流程,原來的測試技術、方法均可以使用 22.配置項測試的內容
功能: 適合性
準確性:功能的準確與精度要求 互操作性:與外部設備、系統的接口 安全保密性:數據訪問的可控制性 可靠性: 成熟性:容錯處理、平均無故障時間
容錯性:邊界條件、功能、性能的降級情況、誤操作模式、故障模式 易恢復性:自動修復能力/時間、平均宕機時間、平均恢復時間、恢復能力等 易用性
易理解性:功能描述清晰、準確;界面含義精確
易學性:在線幫助、幫助定位、各類手冊的易學、易用 易操作性:數據的有效檢查、解釋信息明確、界面切換 吸引性:人機界面定制 效率
時間特性:響應時間、平均響應時間、響應極限時間、吞吐量、平均吞吐量、極限吞吐量,多任務并行測試
資源利用:大量并發任務下I/O設備利用、極限負載下I/O設備的負載、大量并發任務下用戶等待時間、內存使用情況、數據傳輸能力等
維護性
易分析性:運行狀態數據易分析 易變更性:軟件的可配置、修改能力 易測試性:變更之后的易測試情況 可移植性
適應性:不同軟件、硬件環境的適應能力 易安裝性:安裝、配置的復雜程度、難以程度 共存性:與其他軟件協同的能力 易替換性:版本的替換難以程度 依從性
以上所有特性遵循標準、規范的情況測試
23系統測試:系統非功能性測試,以檢驗系統在超常數據規模或負載下,線程、CPU、內存資源的利用和響應時間、數據傳輸等性能指標是否滿足要求
24.測試計劃
確定測試充分性要求:覆蓋范圍、覆蓋程度 確定測試終止要求; 確定測試所需資源; 確定測試的軟件特性; 確定測試技術、方法; 確定測試準出條件; 確定測試進度計劃; 測試風險分析。
25.測試設計:測試設計人員、測試程序員
測試用例設計:依據測試特性; 獲取測試數據;
確定測試順序:資源、被測特性; 獲取測試資源:軟硬件、工具; 編寫測試程序; 建立測試環境; 撰寫測試設計說明。
26.測試總結:
測試分析員-測試報告
總結測試計劃、測試說明的變化情況; 異常終止時測試未覆蓋范圍; 未能解決的測試問題; 總結測試結果(發現問題); 編寫測試報告;
根據問題報告、測試記錄,編寫測試問題報告。
27.軟件可靠性:在給定的運行時間內和給定的系統配置環境下,運行給定的軟件功能時所 表現出來的質量能力 28.系統性能指標
系統資源利用率:分析性能指標,改善性能系統行為指標 請求響應時間:一次請求完成時間
事務響應時間:一個事務所有請求完成的總時間
數據吞吐量:單位時間內服務器接收、發送的數據量。
29.驗收測試:用戶執行的、使用真實數據進行的測試,依據需求規格中的確認標準進行測試。回歸測試:驗證已測試過的內容不受變更影響,確認變更沒有引入新的錯誤。
30.α測試是由一個用戶在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操 作環境下進行的測試。
Beta測試由軟件的最終用戶在一個或多個客戶場所進行,開發者通常不在Beta測試的現場。
31.WebApp測試關注的主要內容 Web內容測試 界面 構件
導航測試 安全性 性能
32.測試用例(Test Case)是為某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或核實是否滿足某個特定需求。
33.軟件生存期定義:從軟件產品設計到軟件被淘汰的時間段。又稱軟件生命周期、生存周期。進一步劃分為兩個階段:開發階段和維護階段(40%+60%)。
34.軟件安全定義:一種軟件質量保證活動,他主要用來識別和評估可能對軟件產生負面影響并促使整個系統失效的潛在災難。
35.軟件評審的目標在于:盡早發現軟件過程中的錯誤,防止錯誤傳遞、蔓延至后續活動,防止錯誤轉化為缺陷。36.V模型
優點:既有底層測試又有高層測試。底層:單元測試。高層:系統測試。
將開發階段清楚的表現出來,便于控制開發的過程。當所有階段都結束時,軟件開發就結束了。
缺點:容易讓人誤解為測試是在開發完成之后的一個階段。
由于它的順序性,當編碼完成之后,正式進入測試時,這時發現的一些bug可能不容易找到其根源。
實際中,由于需求變更較大,導致要重復變更需求、設計、編碼、測試,返工量大。37.W模型:
優點:
將測試貫穿到整個軟件生命周期中,且除了代碼要測試,需求、設計等都要測試。更早介入軟件開發中,能盡早發現缺陷并修復。
測試與開發獨立起來,并與開發并行。缺點:
對有些項目,開發過程中根本沒有文檔產生,故W模型無法使用。
對于需求和設計的測試技術要求很高,實踐起來很困難。
從N0中某節點開始到Nf中某節點結束的一條路徑稱為一條測試路徑。
1.軟件缺陷:(符合下列規則的叫軟件缺陷):
1).軟件未達到產品說明書的功能
2).軟件出現了產品說明書指明不會出現的錯誤
3).軟件功能超出產品說明書指明范圍
4).軟件未達到產品說明書雖未指出但應達到的目標
5).軟件測試員認為難以理解、不易使用、運行速度緩慢、或者最終用戶認為不好
2.單元測試:單元測試是對軟件設計的最小單元——模塊進行正確性檢驗的測試工作,主要測試模塊在語法、格式和邏輯上的錯誤。3.回歸測試
指軟件系統被修改或擴充(如系統功能增強或升級)后重新進行的測試,是為了保證對軟件所做的修改沒有引入新的錯誤而重復進行的測試。
4.等價類:指某個輸入域的子集合,在該子集合中,各個輸入數據對于揭露程序中的錯誤都是等效的。
第四篇:軟件測試總結
面向對象程序的軟件測試方法
在軟件生命周期過程中,軟件測試是保證軟件質量的關鍵環節之一。面向對象方法學在軟件工程中的引入極大地方便了軟件的設計、開發和維護,為創建高可靠性的軟件系統提供了重要保證。但面向對象程序的封裝、繼承、多態和異常處理機制等新特性卻給測試帶來新的挑戰。一方面需要調整、改進傳統的測試策略和方法;另一方面探索出適應面向對象程序特征的測試理論與技術也尤為必要。
面向對象(Object Oriented,OO)是當前計算機界關心的重點,它是90年代軟件開發方法的主流。面向對象的概念和應用已超越了程序設計和軟件開發,擴展到很寬的范圍。如數據庫系統、交互式界面、應用結構、應用平臺、分布式系統、網絡管理結構、CAD技術、人工智能等領域。
面向對象的定義或說明對象的定義的非常少。其初,“面向對象”是專指在程序設計中采用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現在情況。面向對象的思想已經涉及到軟件開發的各個方面。如,面向對象的分析(OOA,Object Oriented Analysis),面向對象的設計(OOD,Object Oriented Design)、以及我們經常說的面向對象的編程實現(OOP,Object Oriented Programming)。許多有關面向對象的文章都只是講述在面向對象的開發中所需要注意的問題或所采用的比較好的設計方法。看這些文章只有真正懂得什么是對象,什么是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。
1、面向對象的基本概念
(1)對象。
對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。
(2)對象的狀態和行為。
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用于改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和操作的結合,使數據和操作封裝于對象的統一體中
(3)類。具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。
類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。
(4)類的結構。
在客觀世界中有若干類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般--具體結構關系,整體--部分結構關系。
①一般——具體結構稱為分類結構,也可以說是“或”關系,或者是“is a”關系。
②整體——部分結構稱為組裝結構,它們之間的關系是一種“與”關系,或者是“has a”關系。
(5)消息和方法。
對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。
類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體。消
2、面向對象的特征
(1)對象唯一性。
每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。
(2)分類性。
分類性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。
(3)繼承性。
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,并加入若干新的內容。繼承性是面向對象程序設計語言不同于其它語言的最重要的特點,是其他語言所沒有的。
在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。
在軟件開發中,類的繼承性使所建立的軟件具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創建工作量,增加了代碼的可重性。
采用繼承性,提供了類的規范的等級結構。通過類的繼承關系,使公共的特性能夠共享,提高了軟件的重用性。
(4)多態性(多形性)多態性使指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去響應共同的消息。
多態性增強了軟件的靈活性和重用性。
面向對象方法的基本思想是一:面向對象方法是一種運用對象、類、封裝、繼承、多態和消息等概念來構造、測試、重構軟件的方法。
二: 面向對象方法是以認識論為基礎,用對象來理解和分析問題空間,并設計和開發出由對象構成的軟件系統(解空間)的方法。由于問題空間和解空間都是由對象組成的,這樣可以消除由于問題空間和求解空間結構上的不一致帶來的問題。簡言之,面向對象就是面向事情本身,面向對象的分析過程就是認識客觀世界的過程。
面向對象方法從對象出發,發展出對象,類,消息,繼承等概念。
面向對象方法的主要優點是:符合人們通常的思維方式;從分析到設計再到編碼采用一致的模型表示具有高度連續性;軟件重用性好。
面向對象軟件測試的特點是: 1.掌握代碼檢查、走查與評審的基本方法和技術; 2.掌握白盒測試和黑盒測試的測試用例的設計原則和方法; 3.掌握單元測試和集成測試的基本策略和方法;
4.了解系統測試、性能測試和可靠性測試的基本概念和方法; 5.了解面向對象軟件和WEB應用軟件測試的基本概念和方法; 6.掌握軟件測試過程管理的基本知識和管理方法; 7.熟悉軟件測試的標準和文檔;
8.掌握QESuite軟件測試過程管理平臺和QESat/C++軟件分析和工具的使用方法。
第五篇:軟件測試工程師總結
軟件測試工程師總結
總結是在某一特定時間段對學習和工作生活或其完成情況,包括取得的成績、存在的問題及得到的經驗和教訓加以回顧和分析的書面材料,它是增長才干的一種好辦法,快快來寫一份總結吧。那么總結要注意有什么內容呢?下面是小編精心整理的軟件測試工程師總結,僅供參考,大家一起來看看吧。
軟件測試工程師總結1x年是我進入公司的第一年,也是我的工作能力得到提高和快速發展的一年,在公司領導的指導和同事以及其它部門的支持配合下,最后在經過自己的努力,完成了自己所要完成的各項工作任務,在新的一年來臨之跡,我要對過去一年的工作進行一個全面的總結,以便在今年的工作中能夠有更明確的目標,盡量克服自己現在所存在的不足,希望能更一步為自己所在的部門增光,做出自己的貢獻。下面是我對去年工作匯總。
一、總結:
1.自身定位:在過去一年,是我進公司的第一年,也是我工作的第一年,剛開始在我對工作競爭和自身都不甚了解的情況下,在領導和同事的指導下,我感覺自己已經慢慢對人與人的競爭和自身定位有了深刻的了解,因為有了自我目標,才能感受到自己的壓力有多大!我的目標也不只是完成目前所要做的工作而已,要向其它方面拓展學習。
2.定下心來,踏踏實實:我學的是計算機專業,我的工作也是計算機方面的,以前有什么優勢,但是踏入工作崗位后才發現,自己學的只是一個基礎,只是有些方面或許比別人走的快一步,所以一切都要靠自己.自己要定得心下來學習.成功需要耐得住寂寞,不求最快,但求.3.團隊合作:以前在學校或許你可以靠一個取得好成績,在工作上你必須要有一個團隊,在一個部門之中,團隊合作精神顯得尤為重要.以前我做有些事都是一意孤行,但現在已經對自己改變了,多聽聽他人意見,會犯更少錯誤,會更長見識,所以要學會與同事之間的合作,做事才更有效。
4.工作情況:在公司一年,對mes大型系統有了個大概了解,對我們所要學習的mes已經可以說差不多都掌握,條碼打印機的維修和設置掌握,a4打印機大多數情況可以維護,pda、條碼槍已掌握,電腦的系統重裝和維護已掌握,其它基本設置可以維護,對新出來的程序掌握和了解也比較快。
5.課外學習:sql該學的已經掌握,c#學習,簡單的程序可以編寫,但有時還要依靠于網絡和朋友,需要進一步加強。但主要還是以網絡為主。
二、自身缺點
1.溝通問題:自己的溝通能力只能算一般,因為對于某些事的闡釋還是不怎么好,語言表達能力有點差,希望通過平時的交流和溝通來加強。
2.心態問題:自己對于做某些事過于著急,一心想急切完成,確反而誤時,這個問題一開始就一直出現,現在雖然已經基本克服,但也要列入缺點方面,希望以后時刻注意!
3.學習問題:對于課外學習c#這方面,我在編程時感覺困難的時候有時候就不愿去做,現在雖然已經慢慢改進上網搜資料和問問朋友,但有時候還是克服不了自己。
軟件測試工程師總結220xx年2月2日,我有幸成為北京超圖一員,應聘為公司的java軟件工程師。入任職以來,在部門領導的帶領下,自己感覺無論學習、技術、生活等方面都有很大的提升。
20xx年里我主要完成的工作有三方面:
1、荊門石油石化巡檢系統的調研和開發。
該項目是我工作以來第一次涉及到調研,對我來說算是一個不小的挑戰。在調研過程中,讓我學會了如何通過和客戶的溝通來了解客戶的需求。由于自己的工作經驗不足,在調研工作中體現出一些問題。不能很直接的在和客戶溝通中非常準確的了解客戶的更多需求,有很多需要和客戶交流溝通多次才能明白客戶的最終需求,也沒有把自己作為最終用戶并站在用戶的角度上來考慮問題,這些都是我在以后的工作中需要提高和改進的地方。在巡檢系統的開發工作中,讓我進一步鞏固和加強了自己的開發能力。
2、電信12530增值業務的開發與維護。
從5月以來我就開始接手公司的主要業務之一,12530電信增值業務。由于前面負責這個項目的同事突然離職,導致這個項目的交接工再做得不夠好,對我順利接手這個項目造成很大的困難。而剛一接手這個項目,馬上就需要新上一個投票活動,并要對一些主要代碼進行修改,讓我倍感壓力,幾乎都快放棄。最后在金總的指導和鼓勵下,順利的完成這次活動。在完成這次投票活動后,為了避免下一個接手這個項目同事與我遇到同樣困難,我第一時間將這個項目的相關技術文檔補充完全,保證別人能夠順利的進行該項目工作。通過這個項目,讓我加強了自己在高強高壓下工作的能力,也讓我找到更多自信。
3、襄樊、鄂州家政網絡服務中心的開發與實施。
在這兩個項目中,除了承擔開發工作以外,也逐漸涉及到項目管理的職責,讓我在個人能力上有所提高。為了這兩個項目能夠順利完成,除了完成自己的工作外,還主動關心其他同事的工作完成情況。讓我在項目管理和項目進度的把控能力有很大的提高。將襄樊、鄂州家政網絡服務中心順利實施,為我公司拿下湖北省其他市的家政網絡服務中心奠定基礎。在工作之外,我也注重個人能力的提高。工作之余,主動學習一些新技術,與同事溝通配合,搭建一個ssh的開發框架。也學習springsecurity知識,這些新知識的積累,對我以后的工作有很大幫助。
20xx年工作展望:
1、將學習的springsecurity整合到我們自己搭建的ssh框架,進一步完善框架。
2、利用搭建的ssh框架,開發一套oa系統平臺。
3、做好襄樊、鄂州家政網絡服務中心的維護工作。
4、希望公司能夠大量拿下湖北省其他市的家政網絡服務中心,繼續開發和實施湖北省其他市的家政網絡服務中心。
5、繼續學習新技術,努力提高自己的個人能力。為以后能夠更好,更順利的工作奠定基礎。
6、希望通過自己的進步和努力,能為公司的發展做出自己的貢獻,體現出自己的價值。
軟件測試工程師總結3我在公司的職位是軟件測試人員,我的.工作就是要負責公司軟件開發后的測試工作,把好最后一道關,使公司的產品實現價值化,延長軟件生命周期。
轉眼間,在公司這個大家庭里工作已經半年了,回首這半年來自己所經歷的一切,面對自己的成績與教訓、長處與不足、困難與機遇內心感慨萬千,這段時間讓我學到很多也懂得了很多,我很感謝公司所給予的一切。
首先,我真心的感謝公司領導及其公司同事給我們的這個難得的機會,我非常珍惜這個機會,對我來說,這能夠真正使我從不適應工作到適應以后的工作和生活。非常感謝研發部的同事,還有感謝所有公司的同事,因為你們的幫助,我順利的走過在公司的適應期。還記得工作第一天的時候,那時我對所有的工作流程都還不懂,開始的時候很緊張,但是從有了第一次工作后,對自己的工作就逐漸成為習慣,適應了這里的工作環境,自我價值也在工作的過程中得到了實現并且得到了提高。
其次,在工作的半年以來自己在工作上有不少收獲,能夠熟練的操作公司所生產的軟件產品,做到盡到自己的工作職責將軟件產品不成熟的地方和有bug的地方即時記錄,享即時將建議與問題發給研發進行溝通,讓研發可以更快的解決問題所在。對于網站以及服務器上會出現的問題都已經整理文檔,方便大家共享,更好的查找和解決問題。
在測試工作之外,我會力所能及的幫用戶監測網站查找問題,編寫測試報告。幫公司的銷售人員查找網站鏈接,整理表格資料,進行監測,查找出問題,方便銷售人員對用戶提供測試報告,增加銷售籌碼。
在領導的幫助下,完成了公司所需要申請專利的兩份資料,對專利申請的流程以及申請文檔的編寫的有了進一步的了解。為以后在相同方面的工作累積了經驗。
軟件測試工程師總結4這學期的期末大作業是對ELearningJavaWeb應用系統進行測試,通過這次系統測試,我學到了很多知識。對于具體的測試部分,我主要做的是單元測試和性能測試,其中單元測試使用的是Junit工具,性能測試使用的是JMeter。就這次大作業而言,我認為它與我們平時做的實驗很不相同,我們平時的實驗只是涉及到測試的某個小部分,而這次測試卻是對一個相對完整的項目按照規范的標準進行測試。
對于好的測試來說,應該注意一下幾點:
1.測試的獨立性:一次只測試一個對象,方便定位出錯的位置。這有2層意思:一個TestCase,只測試一個對象;一個TestMethod,只測試這個對象中的一個方法。
2.給測試方法一個合適的名字。
3.在assert函數中給出失敗的原因,如:assertTrue(“…shouldbetrue”,…),方便查錯。在這個例子中,如果無法通過assertTrue,那么給出的消息將被顯示。在junit中每個assert函數都有第一個參數是出錯時顯示消息的函數原型。
4.測試所有可能引起失敗的地方,如:一個類中頻繁改動的函數。對于那些僅僅只含有getter/setter的類,如果是由IDE(如Eclipse)產生的,則可不測;如果是人工寫,那么測試一下。
5.在setUp和tearDown中的代碼不應該是與測試方法相關的,而應該是全局相關的。如針對與測試方法A和B,在setUp和tearDown中的代碼應該是A和B都需要的代碼。
6.測試代碼的組織:相同的包,不同的目錄。這樣,測試代碼可以訪問被測試類的protected變量/方法,方便測試代碼的編寫。放在不同的目錄,則方便了測試代碼的管理以及代碼的打包和發布。
對于測試用例的命名,我們要使其與測試類的名稱相一致,比如說,類的名稱為Testing,此類的測試用例的名稱為TestingTest。當我們把測試代碼和被測的代碼放在同一目錄下時,我們就可以在編譯被測代碼的同時編譯測試代碼,從而確保兩者是同步更新的。事實上當前的普遍做法,就是把單元測試視為build的一個環節。保持測試之間的獨立性是一個很好的習慣,使得它們在任何次序下執行的結果都是相同的。如果真得需要某些測試按照特定的次序執行,我們可以借助addtest來實現。當我們需要增加一個測試時,我們要書寫一個自己的測試用例,但是如果喜歡在測試用例的構造函數中做有關的初始化工作,這就不是個好習慣。數據文件應該盡可能和源代碼一起都放在配置管理系統上,但這樣一來如果我們采用上面的resource機制,我們就需要做一件工作,就是把數據文件從原來的位置-就是源代碼的某個相對路徑,拷貝到編譯后的位置,也就是class文件的相應的相對路徑。
通過這次軟件測試的系統測試,我對軟件測試有了更加深刻的認識,其實軟件測試并不像想象的那么簡單,它需要測試人員具備多方面的能力和素質。軟件測試人員應該擁有廣闊的視野、一定的編程能力、細心和耐心等等。這些對于能否測出優秀的系統來說都是必不可少的。
經過這次對javaWeb應用系統的測試,我的測試能力得到了鍛煉,對軟件測試有了比較全面的認識,收獲了很多珍貴的東西,而且我也從軟件測試的角度,對編寫健壯的程序也有了新的認識。
軟件測試工程師總結5通過最近xx客戶端的產品測試,我做了以下簡單的工作總結,重新認識產品測試的基本理念以及對自己工作不足之處的檢討。
產品測試的目的是找出產品存在的漏洞,了解客戶的感知,從而改良產品。但不同的測試初衷會直接影響到測試方法的選擇,從而影響到最后的結果與測試目的的吻合程度,所以明確產品測試的目的是十分必要而且十分重要的。測試的目的主要是記錄客觀現象,揭露產品現狀,站在客戶的角度使用產品,深入了解用戶的感受。
產品測試的方法,我個人認為應該將產品測試的目的和測試方法緊密結合起來,其重點在于細致入微的發現和記錄,反映用戶不愿或者不能表達的客觀現象,從而揭露產品的缺陷,并通過進一步詢問的方式,了解用戶的真實感受,所以應該采取客觀記錄和深度訪談相結合的方法,充分揭露產品存在的缺陷,不斷改良和完善產品。
因此作為一名產品測試員,應該承擔起重要的責任。首先,產品測試員要有一顆細致,善于觀察的心,具備高素質的專業技能,并且充分明確產品測試的目的和產品測試的方法,知道為什么要測以及用什么來測才能真正地做好產品測試,發揮產品測試的作用;其次,產品測試員要對產品業務流程非常熟悉,掌握產品的功能,才能對產品進行充分的、詳細的、全面的測試;再者,產品測試員要做到既是專家又是用戶,要站在用戶的角度去使用產品,且要比用戶更加細致,用心的使用產品,才能更加充分地去發現產品在使用過程中存在的不足,從而才能不斷地完善產品,滿足客戶的真正需求。
通過以上對產品測試的認知,我發現,我,作為一名產品測試員,在此次測試工作中存在以下幾個不足之處:
1、產品測試專業知識掌握不足,缺少高素質的專業技能;
2、沒有充分做到站在客戶的角度去使用產品,用心去感知客戶的需求;
3、對產品的詳細業務流程掌握不夠;
4、對產品測試細節觀察不夠細微,細致;
5、與整體產品組成員溝通交流存在不足,未能及時準確地提出產品存在的不足之處;
今后,要加強各方面的測試知識學習;提升測試專業技能;培養高素質的專業技巧;同時,加強對產品業務流程的認知,以及對事物的觀察能力;提高自己的動手和動腦能力,多動手多動腦,才能從多方面發現問題和解決問題,從而不斷地完善和提升測試能力。
吃一塹長一智。只有經過總結經驗教訓,才會有進步,才能發現自己的不足之處,知道自己哪里做得不好,才能去補充和改善這些不足之處,從而提高自己工作能力;不斷加強產品測試管理工作,通過產品測試管理工作的加強,力求在測試階段盡可能多的發現產品存在的錯誤與缺陷,盡可能少的將問題帶給用戶,確保產品的質量及其可靠性,提高用戶滿意程度。