qileilove

          blog已經(jīng)轉移至github,大家請訪問 http://qaseven.github.io/

          軟件測試實驗學習筆記系列1

           Part 1 Management

            Softwareengeering = Technology + Management

            現(xiàn)代軟件測試思想:全生命周期的測試思想.

            軟件系統(tǒng)的規(guī)模的急劇增大--->國際協(xié)作模式,聯(lián)合開發(fā),

            軟件測試管理:softwaretest 團隊組織管理,軟件測試計劃管理,軟件缺陷跟蹤管理,軟件測試資源管理。

            軟件缺陷是軟件與生具來的特征,是影響軟件質量的重要和關鍵的因素之一,發(fā)現(xiàn)和排除缺陷是軟件生命周期重要的工作之一。缺陷的密度是靠經(jīng)驗來估計的。

            缺陷管理工具:

            開源Bug追蹤管理的工具:Bugzilla(Mozilla出品),BugOnline,Bugzero,Bugtracker,BugFree(借鑒微軟的研發(fā)流程和Bug管理理念,PHP+MySQL)

            軟件測試管理工具:TestManager,TestDirector,TestRunner(與Bugzilla集成的一款管理工具),TestLink—優(yōu)秀的開源測試管理軟件,可以和更多缺陷管理軟件進行集成(Bugzilla,Mattis)。Sourceforge的開源項目之一

            TestLink應用環(huán)境:LAMP(Linux+Apache+MySQL+PHP)

            Part2 靜態(tài)分析篇

            程序的靜態(tài)分析是在不執(zhí)行程序的情況下地其進行分析的技術,簡稱靜態(tài)分析。靜態(tài)分析的輸入:程序源代碼,目標代碼。

            靜態(tài)分析工具掃描測試程序的正文,對程序的數(shù)據(jù)流和控制流進行分析,然后給出分析報告。通常采用以下方法進行源程序的靜態(tài)分析。

            1.生成各種引用表

            直接從表中查出說明/使用錯誤等,如循環(huán)層次表,變量交叉引用表,標號交叉引用表等。

            為用戶提供輔助信息,如子程序(宏,函數(shù))引用表,等價(變量)表,常熟表等。

            2.編程規(guī)范檢查

            檢查分析程序中違反編程標準的錯誤,如模塊大小,模塊結構,注釋的約定,某些語句形式的使用,以及文檔編制的約定等。

            3.靜態(tài)錯誤分析

            靜態(tài)錯誤分析主要用于確定源程序中是否存在某類錯誤或”危險”結構。

            類型和單位分析

            引用分析:使用最廣泛的靜態(tài)錯誤分析方法就是發(fā)現(xiàn)引用異常---異常探測工具

            表達式分析:對表達式進行分析,以發(fā)現(xiàn)并糾正表達式中出現(xiàn)的錯誤

            接口分析:接口的靜態(tài)錯誤分析—檢查過程及函數(shù)過程之間接口的一致性。檢查形參和實參在類,數(shù)量,維度,順序,使用上的一致性,全局變量和公共數(shù)據(jù)區(qū)在使用上的一致性

            4.靜態(tài)特性的統(tǒng)計功能

            程序的統(tǒng)計信息,各種類型的語句出現(xiàn)的次數(shù)等等

            錯誤預測和程序復雜度計算

            靜態(tài)分析工具可以保證代碼的質量,發(fā)現(xiàn)并警告潛在的Bug。

            獨立的靜態(tài)分析工具C的lint,Smalltalk的lint

            程序理解工具

            程序理解是人們將程序及其環(huán)境---面向人的概念知識過程中,是軟件開發(fā)過程中的重要的活動,軟件的測試&維護,逆向工程--源代碼理解。

            軟件規(guī)模的增大--->通過計算機來完成軟件系統(tǒng)分析和理解的程序輔助工具的需求變地越來越迫切。

            1.程序理解概述

            大型軟件系統(tǒng)---分析和理解的困難性---系統(tǒng)維護和演化任務艱巨---成本高,

            1.1程序理解的概念

            程序理解就是從計算機程序中獲取知識信息的過程,程序排錯,程序增強,程序重用以及文檔整理。程序理解的目標是從不同抽象層次,多視角,多方面綜合表達并展示程序理解的結果。

            程序理解是軟件工程領域的一個重要的部分。軟件工程---如何提高軟件開發(fā)效率和軟件產(chǎn)品質量。程序理解在維護,逆向工程中起到舉足輕重的地位。

            程序理解的目標:理解軟件系統(tǒng)以使性能提高,糾錯,再設計和使用另一種語言沖新編寫。

            系統(tǒng)的概念建模,數(shù)據(jù)抽取,系統(tǒng)抽象---依賴于通過分析程序源代碼來抽取程序和控制流信息。

            1.2程序理解的任務和內容

            任務:在不同抽象級別上建立基本程序的思維模型,從問題領域到程序設計領域的映射集。代碼本身的模型,基本應用領域的模型。四個抽象層次:

            實現(xiàn)層:程序設計語言進行理解,檢查程序結構,程序的AST,符號表或普通源文件。技術涉及程序掃描,語法提取,語義檢查,靜態(tài)分析,動態(tài)模擬運行等過程。

            結構層:在程序設計語言基礎上,檢查程序構造過程中的結構,對程序中出現(xiàn)的實體以及他們之間的關系的分析,數(shù)據(jù)調用,控制流程圖,程序調用圖。結構層包括:逆向工程信息提取,信息抽象,結構模型匹配...

            功能層:從不同的模塊的功能來推斷他們之間邏輯關系。功能層包括:設計恢復,語義和行為模式匹配

            領域層:檢查特定于應用領域的概念,進一步從功能上推斷此軟件在其領域的作用,智能軟件理解,格局設別,概念賦值和推理

            從抽象層從低(源代碼)到高(領域問題).

            主要介紹結構層次的技術.

            程序理解的幾個方面:結構信息,數(shù)據(jù)流,控制流,程序操作,面向對象的理解

            1.3程序理解的技術

            結構層的理解技術有語句分析,表示程序單元之間的調用關系和被調用關系,與程序內部結構相關的程序控制流圖和數(shù)據(jù)流圖.

            1.語句分析技術:程序的詞法模式和語法模型

            2.程序流分析:數(shù)據(jù)流和控制流---首要任務發(fā)現(xiàn)控制結構,分析方法(必經(jīng)點分析和區(qū)間分析)。數(shù)據(jù)流分析是為了計算被分析程序在生成數(shù)據(jù)方面的行為,通常用于程序優(yōu)化。

            3.軟件結構圖:程序調用關系圖(函數(shù)調用關系圖)和系統(tǒng)結構圖。程序調用關系圖:對源程序中函數(shù)關系的一種靜態(tài)描述;系統(tǒng)結構圖反映的是系統(tǒng)中模塊的調用關系和層次關系,誰調用誰,時序關系。

            1.4程序理解工具

            閱讀源代碼是程序理解的一項重要的活動。常見的程序開發(fā)工具:程序切分器,靜態(tài)分析工具(有效工具,splint,Olink),動態(tài)分析工具。

            2Olink程序理解工具

            Olink是一個開源的C/C++工具,基礎或核心部分。

            Olink的源碼包:smbase(c++的包和字符串庫,替代C++標準庫中相應的庫),ast(生成AST的工具包),elkhound(用于管理GLR語法分析器,和bison功能相似,可以用來反分析任何上下文無關語法),elsa(在elkhound語法分析的基礎上,將C\C++程序生成為相應的AST,可以對程序進行部分類檢查,主要是與),libregion(基于區(qū)域的c語言內存管理庫),libqual(可序列化的多太的類型修飾符推理接口),platformmodel(C/C++標準庫的靜態(tài)模型)。

            書本上提供的網(wǎng)址Olink的網(wǎng)址是: http://www.cubewano.org/oink/downloads/2006-08-31/。然后打開后發(fā)現(xiàn)不知道導向了什么網(wǎng)站。

            看了一堆理論,聽作者吹了老久,感覺這個Oink工具好牛逼的說,原本想實踐一下了,結果卻是這樣的.很不高興.

            下一篇是關于splint的,因為內容比較多,就不放在一起了

            參考文獻:

            [1]軟件測試實驗指導教程/蔡建平, 清華大學出版社, 2009.11

          相關文章:

          軟件測試實驗學習筆記系列2 -- lint,splint的使用

          posted on 2013-08-05 10:23 順其自然EVO 閱讀(613) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄管理方向

          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 凤台县| 叙永县| 台北县| 韶山市| 安龙县| 江陵县| 柏乡县| 蒙自县| 长兴县| 正蓝旗| 招远市| 上虞市| 马山县| 高清| 鸡东县| 青冈县| 古交市| 金溪县| 平邑县| 台州市| 永春县| 长乐市| 崇明县| 申扎县| 花垣县| 汕头市| 巴彦淖尔市| 新民市| 织金县| 荣成市| 保德县| 虞城县| 武安市| 邵东县| 阳曲县| 滨海县| 揭西县| 贡嘎县| 塔城市| 峡江县| 商城县|