qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          測試人員的腦子里到底在想什么

           目前開發人員對測試人員的工作有一些不太理解:用戶不可能進行的操作,測試人員非要進行操作,甚至找出一些開發人員都沒有想到的操作;有時還設計一些用戶沒有的流程進行測試;還有時提出一些用戶沒有提出的要求,比如非要增加一個列表排序功能;測試組的數據庫服務器本身就是一臺PC機,配置不高,運行復雜程序比較慢,非要提出來要求修改。等等、等等。在開發任務不太忙的時候還能忍受,如果開發任務很緊的時候就容易發生摩擦了。

            測試人員到底是怎么想的?怎么有時總是往牛角尖里鉆呢?怎么總是讓人搞不懂?后續章節里就簡單的說說“測試人員的腦袋里到底在想什么呢?”

            測試人員測試考慮問題基本有幾個方面:

          “測試人員的腦子里到底在想什么呢?”(一)

            在一個項目中,測試人員與開發人員的良好合作往往起到事倍功半的作用。縱觀一個成熟的項目,測試與開發都是緊密合作、相得益彰的。在軟件行業說明舉例中大家都習慣于用微軟IBM、HP等國際大企業來說明,也確實如此,這些大公司都是一些好的借鑒。好像有這么一個規律:凡是做的好的項目,測試與開發的合作也都是比較好的。而在國內一些企業里,由于軟件工程發展相對晚一些,這方面的經驗比較少,好多項目中測試人員和開發人員經常會發生一些摩擦、甚至沖突,一些有經驗的管理人員、開發人員和測試人員還比較好一些,而經驗較少的人員表現比較突出,如果再加上一些管理方面不夠到位的話這種沖突就比較嚴重了,有的項目測試人員和開發人員甚至到了互相不能容忍的地步。這不是夸大其辭,確認經歷過這樣的公司和這樣的人,往往是經驗越豐富的人員對測試與開發的作用越理解的比較透徹。

            追其原因,主要是因為測試和開發的工作內容雖然相同,但考慮問題的角度卻各異。這樣有時候站在這個角度看到的問題與另一個角度看到的問題是不相同的。有時這種不相同就會導致爭議發生。如果雙方都能夠站在對方的角度考慮一下就會明白對方為什么要提出這樣的問題。但是站在對方的角度來考慮不是說說就能明白的,有時非得親身體驗一回不可,否則還是有一些不理解。更何況對方是怎么想的、原則是什么都不一定能夠說的很清楚。

            往往會聽到這樣的評價:測試人員不知道怎么想的,總是做一些用戶不可能進行的操作;我真服了測試人員,不是好好的測試功能,不知道都在想些什么,非要搞一大堆沒用的數據錄入;我看測試人員故意找茬,本來好好的功能非要鉆牛角尖,找出幾個沒用的BUG來表現自己的水平。等等。

            后續章節就測試人員考慮問題的思想因素做一說明,試圖起到拋磚引玉的作用,供開發人員和測試人員來參考。文章中的描述或用詞不妥之處也希望大家指出來我盡快更正,提前道謝了!

          “測試人員的腦子里到底在想什么呢?”(二)

            系統是否做了該做的事情?還有就是系統是否做了不該做的事情?

            今天,在用戶現場的測試人員打電話回來:“我們的系統出現了一個大的問題:通過前臺界面修改一條記錄沒有成功,系統也很正確的進行了提示,可是后臺系統卻把修改信息發了出去,其他廠家開發的系統接收到消息后同時進行了響應的修改,并且把修改成功的信息發送回來了,可是我們的系統卻沒有成功修改,導致業務不能正常進行,這樣的系統根本就不能放行。”

            這個案例就是一個很好的說明。測試人員在測試的時候首先會考慮系統是否實現了預期的功能-前臺界面修改記錄不成功進行提醒,但同時還要考慮系統是否做了不該做的事情,在這個案例中就是既然沒有修改成功,那就不應該發送消息給其他系統要求修改相關信息。

            這種問題多發生在功能之間的接口或者是多個人開發的系統中。例如在航天史上有名的案例:美國發射火星探測器,整個研發過程都比較嚴密,但是最終登錄失敗了。問題的原因就在于系統出現了問題:火星著陸與著陸后出現不銜接。著陸后系統運行應該在著陸的數據基礎上運行,而項目研發的時候著陸后的系統運行實在數據清空的基礎上運行,根本就沒有考慮到實際情況。

            這種情況開發人員與測試人員容易發生爭議的地方是:開發人員認為我做的系統或功能沒有問題,我已經測試通過。有的還會說當初沒有告訴我要這樣做,或者是別人沒有在我的基礎上考慮,或者別人沒有給我傳送我需要的數據。這時如果項目組織不夠好的話測試人員往往要協調多名開發人員或開發團隊來解決問題,有如果不樂觀的話會吃力不討好,無人理睬。

          “測試人員的腦子里到底在想什么呢?”(三)

            不僅要進行合法性的測試,同時還要考慮非法的是否可以進行。

            測試人員認為合法輸入或流程等一定能夠正常進行,同時非法的輸入或者流程不能夠進行,系統應該有所判斷并有相關信息提示。為什么要有提示?不一定所有使用系統的人都知道哪些是非法的。

            舉個很簡單的例子:數據錄入的時候,如果沒有進行非法檢查,一些非法字符進入系統很可能會給以后造成很大的數據錯誤,比如一些保留字、特殊字符等等。例如在一個文本框中輸入一個單引號(‘)成功的話,在數據庫中有時執行一條SQL語句的時候會把單引號做為SQL命令而導致SQL腳本執行不成功或者錄入錯誤數據。試想如果在遠程緊急救護系統中把緊急搶救時間1分鐘錯誤成10分鐘后果會是什么?如果關鍵時刻系統出現崩潰會是什么后果?那就不是BUG了,是殺人!

            這種情況開發人員往往會說:測試的都是些什么呀?不痛不癢。能不能發現一些重要的、深層的BUG呀?豈不是這個不中要的BUG如果把數據放行進入數據庫,后面就會出現重要的、深層的BUG了。有時對這些BUG不置可否。

          “測試人員的腦子里到底在想什么呢?”(四)

            健壯性、穩定性

            這是測試人員和開發人員最容易產生爭議的問題。測試人員總是從各個角度進行測試,尤其是各個非法操作角度進行測試,測試人員想:不能因為用戶的誤操作導致系統出錯或者崩潰,所以盡量考慮各種非常情況,有的情況開發人員都覺得有點變態了。下面是測試人員和開發人員的一段對話,從中可以看出一些不同點:

            開發人員:“用戶輸入數據時怎么可能按住鍵盤不放呢?你這樣按著不放能不出錯嗎?”

            測試人員:“用戶是不會故意按著鍵盤不放的,但是有可能不小心會用手或者書之類的東西壓著鍵盤,如果發生這樣的事情,我們的系統總不能崩潰吧?怎么著也應該給個提示或者警告一下。”

            有時候用戶是會發生錯誤的,人嗎,誤操作總是難免的,如果有了誤操作系統就出一點小錯,用戶還能忍受,如果出打錯或者崩潰,用戶估計會有意見了。測試人員正式從這個方面進行考慮的。

           易用性

            一般經常與用戶接觸的人員會對易用性理解深刻,用戶覺得操作繁瑣會要求系統修改的,上帝不滿意了你能不管嗎?

            測試人員說了:我操作都感到麻煩,用戶會操作的舒服嗎?

            這是測試人員對待系統在易用性方面的心態。

            比如測試人員說“在查詢結果中增加一個排序功能或者模糊匹配功能吧,要不查出這么多的數據,要找用戶要的那個數據太不容易了。”

            “這個增加功能太慢了,我都等的有點不耐煩了!”

            有時這些提示會被開發人員忽略掉的。

          “測試人員的腦子里到底在想什么呢?”(五)

            安全性
            (略)

            響應速度、容量、壓力負載

            “這個增加功能太慢了,我都等的有點不耐煩了!”如果測試人員覺得時間長,用戶也會有這種感覺的,更何況到用戶使用的時候數據量可能會更多,隨著用戶數據量的增加,速度還會下降的。有時測試人員提出有關速度等性能問題的時候就是基于這個思路提出來的。

            盡可能多的發現BUG

            測試人員的職責就是找BUG,盡可能多的發現BUG,不管BUG是嚴重的還是輕微的,都要提出來。如果有時系統相對穩定或者測試人員不熟悉系統的時候,會發現很多輕微的BUG,比如顯示錯字、位置不對等等,開發人員會認為這些問題都不是問題而輕視測試人員,從而造成矛盾。

            提前、盡早、不斷

            測試人員的原則之一。提前發現問題有助于盡早的解決問題降低成本(時間、人力、金錢等成本),也有助于對系統有全盤的把握。

            不斷測試原則比較典型的矛盾是這樣:

            開發人員:“能不能一次測試完就告訴我有多少問題?總是沒個完。”

            要知道BUG是永遠都存在的,不可能一下子發現全部問題的。

            足夠好的測試

            測試不是無休止的,所以即使你想進行完全的測試是不可能的,這在好多教科書中都有介紹,再加上測試是有成本的,需要花費時間、金錢、人力資源等成本的,有時過多的測試對企業來說是虧本的,因此測試有一個結束時間。但是總不能在不該停止測試的時候停止,否則系統中包含很多問題怎么辦?因此測試既不能過度,也不能過少,進行足夠好的測試就可以了。

            這怎么會有矛盾呢?可以看一看開發人員的這句話就明白了:“用戶都發現問題了,測試人員怎么不測試了呢?害的我們費這么大勁去修改。”

            管理方式(處理方式)

            有的管理人員對測試認識比較深刻,只要是測試人員發現問題,就要求開發人員必須限期修改完成,而不是對問題進行分析、評估并根據開發人員的工作量進行適當的安排。這樣有時開發人員容易與測試人員造成矛盾:這么簡單的問題也要提出來,而且這么多小問題,我哪有時間去改那!測試人員也不高興了,我沒有錯呀,我都把問題發現了,提前告訴你不是很好嗎?要是到了用戶那里豈不是麻煩了?我做了好事不但不感謝,反倒成了我的不是了。但是測試人員也不愿意得罪開發人員呀,所以有時矛盾發展結果就成了開發人員與測試人員私下里達成協議:不記錄問題,與雙方都有利。

            爭議處理流程
            (略)

            缺陷處理成本  環節少
            (略)

          posted @ 2011-12-01 15:52 順其自然EVO 閱讀(169) | 評論 (0)編輯 收藏

          軟件Web測試中應用性能測試的探析

           一、引言

            跟著收集手藝的迅速成長,尤其是WEB及其應用軌范的普及,各類基于WEB的應用軌范以其便利、快速,易操作等特點不竭成聞敉件開發的重點。與此同時,跟著需求量與應用規模的不竭擴年夜,對WEB應用軟件的正確性、有用性和對WEB處事器等方面都提出了越來越高的機能要求,對WEB應用軌范進行有用的系統的測試也逐漸成為人們研究的主要課題。

            今朝可以見到各類WEB處事器平臺,然而按照Mereury的研究陳述,98%的WEB處事器都沒能達到人們所期望的機能,平均只能闡揚人們所期望機能的1/6擺布。WEB機能測試能夠確定影響WEB處事器機能的關頭身分,年夜而可以有針對性地進行剖析和改良,避免WEB處事器研究和優化過程中的盲目行為;同時,它也是拔取分歧的WEB處事器的主要參考。

            跟著WEB應用軌范使用越來越普遍,針對其機能測試的要求也越來越多,然而因為WEB軌范綜合了年夜量的新手藝,諸如HTML、JAVA、Javascript、VBScript等,同時它還依靠良多其它的身分,好比Link、Database、Network等,使得WEB應用軌范測試變得很是復雜。例如:WEB壓力測試是評價一個WEB應用軌范的首要手段,它的測試就是一個代表性的方面。

            在整個web應用的測試中,機能測試占很是主要位置,因為機能直接紡暌鉤了Web應用所供給處事的質量水平。Web應用設計的復雜性和用戶使用的不成展望性給若何切確地展望它的機能帶來了很年夜的挑戰,而且跟著Web應用的規模越來越年夜、用戶越來越多,這個挑戰變得加倍嚴重。文中就若何切確地設計負載測試進行了深切研究,提出了對用戶導航、用戶延遲進行建模的體例來設計負載測試,以使負載測試能夠切確地模擬現實用戶情形和展望Web應用的機能。最后應用工具loadrunner進行負載測試拭魅戰。

            WEB應用軌范的測試有別于傳統軟件的測試,它有其自身的特點。下面我們進行斗勁深切的談判。

            二、WEB測試手藝

            (一)WEB應用軌范系統結構

            WEB應用軌范采用B/S結構,它是伴跟著Internet手藝的不竭前進,由C/S結構改良和成長起來的新型系統結構。在這種結構下,用戶界面完全經由過程WWW瀏覽器實現,一部門事務邏輯在前端實現,可是首要事務邏輯則在處事器端實現,形成所謂3tier結構。B/S結構操作不竭成熟和普及的瀏覽器手藝實現原本需要復雜專用軟件才能實現的強年夜功能,并節約了開發成本,是一種全新的軟件系統機關手藝。這種結構更成為當今應用軟件開發的首選系統結構,今朝最風行的mi?鄄crosoft.net也是在這樣一種布景下被提出來的架構。

            傳統的軟件一般采用C/S結構,此結構把數據庫內容放在遠程的處事器上,而在客戶機上安裝響應軟件。C/S軟件一般采用兩層結構,C/S結構在手藝上很成熟,它的首要特點是交互性強、具有平安的存取模式、收集通信量低、響應速度快、利于措置年夜量數據。可是該結構的軌范是針對性開發,變換不夠矯捷,維護和打點的難度較年夜。

            (二)WEB測試的內容與目的

            在很多時候我們都把測試的目的定位為尋找軟件的BUG,而且是盡可能的找出BUG來,而測試人員所做的工作就是找軟件的短處,只要找出短處就可以了,這樣很輕易帶了一系列的問題。好比測試人員給某網站做測試,并遞交了一份簡單的測試陳述:“當100用戶配合按某提交按鈕時,發生年夜量的提交失蹤敗”。對于測試人員來說,他已經完成了他自己的使命,找出了BUG,可是,這樣的測試陳述對于開發人員和項目打點者卻毫無用處。陳述中并未說起造成提交失蹤敗的原因,是硬件資本不足、收集問題、支撐軟件參數設置錯誤仍是應用開發問題等等。

            測試的目的是證偽,但不能片面的理解為簡單的找不BUG就可以了。軟件測試應該履歷以下四個軌范:

            1、測試人員描述發現的問題(找到BUG);

            2、測試人員具體說明是在何種情形下測試發現的問題,搜羅測試的情形、輸入的數據、發現問題的類型、問題的嚴重水平等情形;

            3、測試人員協同開發人員一路去剖析BUG的原因,找出軟件的缺陷地址;

            4、測試人員按照解決的情形進行分類匯總,以便日后進行軟件設計的時候供給參考,避免往后呈現近似軟件缺陷。

            (三)擬定WEB測試打算

            當我們明晰了測試的目的之后,真正起頭針對一個WEB應用軌范進行測試的時候,我們需要擬定一套具體的測試計劃,這樣才能順遂的完成所有的測試內容,打算的內容歸納為以下幾步:

            1、首先對被測的WEB應用軌范進行需求剖析,即對你所做的測試做一個簡要的介紹,搜羅描述測試的方針和規模,所測試的方針要實現一個什么樣的功能,總結根基文檔,首要勾當。

            2、寫出測試策略和體例,這里搜羅測試起頭的前提,測試的類型,測試起頭的尺度以及所測試的功能,測試經由過程或失蹤敗的尺度,竣事測試的前提,測試過程中碰著什么樣的情形終止和怎么措置后恢復等。

            3、確定測試情形的要求(搜羅軟件和硬件方面),選擇合適的測試工具。

            4、首要針對你測試的行為,描述你測試的細節,搜羅測試用例列表,進度表,錯誤品級剖析,對測試打算的總結,和在測試過程會呈現的風險剖析等。

            (四)測試的類型

            WEB測試的類型搜羅內容測試、界面測試、功能測試、機能測試、兼容性測試、平安性測試等情形。內容測試、界面測試和兼容性測試都斗勁簡單,在此不再細談。WEB的功能測試與傳統的軟件測試區別不年夜,主若是在毗連測試方面有點區別,數據的傳遞方面會稍微復雜點。因為WEB軟件都是采用B/S結構,客戶端所需的處事都是由處事器供給的,所以主若是測試處事器上軟件運行的機能。WEB應用軌范的測試搜羅客戶端毗連處事器速度方面的測試和壓力測試這兩方面,機能測試的軌范:

            第一,剖析產物結構,明晰機能測試的需求,搜羅并發、極限、設置裝備擺設和指標等方面的機能要求,需要時基于LOAD測試的不異測略需同時考慮不變性測試的需求。

            第一,剖析應用場景和用戶數據,細分用戶行為和相關的數據流,確定測試點或測試接口,列示系統接口的可能瓶頸,一般是先主干接口再支線接口,并完成初步的測試用例設計。

            第三,依據機能測試需乞降確定的測試點進行測試組網設計,并明晰分魄鬃曾方案的主要水平或優先級作為取舍評估的依據,需要時在前期產物設計中提出撐持機能測試的可測試性設計方案和對測試工具的需求。

            第四,完成機能測試用例設計、分類選擇和依據用戶行為剖析設計測試規程,并籌備好測試用例將用到的測試數據。

            第五,確定采用的測試工具。

            第六,進行初驗測試,以主干接口的可用性為主,按照測試結不美觀剖析機能瓶頸,經由過程迭代保證根基的指標等測試的情形。

            第七,迭代進行周全的機能測試,完成打算中的機能測試用例的執行。

            第八,完成機能測試評估陳述。

            在進行機能測試的時候,我們需要知道一些有用的機能指標,下面我們來列出一些首要的機能指標:

            一是,通用指標(指Web應用處事器、數據庫處事器必需測試項):

            ● ProcessorTime:指處事器CPU占用率,一般平均達到70%時,處事就接近飽和;

            ● Memory Available Mbyte:可用內存數,如不美觀測試時發現內存有轉變情形也要注重,如不美觀是內存泄露則斗勁嚴重;

            ● Physicsdisk Time :物理磁盤讀寫時刻情形。

            二是,Web處事器指標:

            ● Avg Rps:平均每秒鐘響應次數=總請求時刻/秒數;

            ● Avg time to last byte per terstion(mstes):平均每秒營業劇本的迭代次數;*Successful Rounds:成功的請求;

            ● Failed Rounds:失蹤敗的請求;

            ● Successful Hits:成功的點擊次數;

            ● Failed Hits:失蹤敗的點擊次數;

            ● Hits Per Second:每秒點擊次數;

            ● Successful Hits Per Second:每秒成功的點擊次數;

            ● Failed Hits Per Second:每秒失蹤敗的點擊次數;

            ● Attempted Connections:考試考試鏈接數。

           三是,數據庫處事器指標:

            ● User 0 Connections :用戶毗連數,也就是數據庫的毗連數目;

            ● Number of deadlocks:數據庫死鎖;

            ● Butter Cache hit:數據庫Cache的射中情形。

            (五)測試工具介紹

            1、ACT(或者MSACT)。ACT是微軟的Visual Studio 和Visual Studio.NET帶的一套進行軌范測試的工具,ACT不單可以記實軌范運行的具體數據參數,用圖表顯示軌范運行狀況,而且安裝和使用都斗勁簡單,結不美觀閱讀也很便利,是一套較理想的測試工具。

            Microsoft Web Application Stress Tool (WAS):這個工具和ACT一樣是微軟的產物,可是這個工具沒有和Visual Studio集成,可以零丁使用。感受這個軌范此刻還在測試,可是一些根基的功能已經很完整,可以完成ACT幾乎所有功能,而且WAS使用加倍簡單,設置也加倍完整了然。這個工具的此吐矣閩特點是,它的報表是純文本文件,而不是風行的HTML文件名目,但內容方面一點也不減色。

            2、Open System Testing Architecture (OpenSTA)。OpenSTA的特點是可以模擬良多用戶來訪謁需要測試的網站,它是一個功能強年夜、自界說設置功能完整的軟件,但這些設置年夜部門需要經由過程Script來完成,是以在真正的使用這個軟件之前,必需進修好它的Script編寫。如不美觀需要完成很復雜的功能,Script的要求還斗勁高,當然,這也是它的利益,一些軌范員不會在意這些Script的。這個軟件完全免費而且源代碼可以下載,可以自己改削達到特定的要求。

            3、PureLoad。PureLoad是基于Java的測試工具,它的Script代碼完全使用XML,所以這些代碼的編寫很簡單,它的測試報表包含文字和圖形并可以輸出為HTML文件。因為是基于Java的軟件,所以可以經由過程Java Beans API來增強軟件功能。

            4、QALoad。QALoad不單單測試WEB應用,還可以測試一些后臺的工具,好比SQL Server等,只若是它撐持的和談,都可以測試;此外一點,QALoad不單可以測試Windows,而且可以測試AIX, HP-UX 和 Solaris等系統。可是,這款軟件價錢很高。

            5、LoadRunner。Mercury LoadRunner是一種展望系統行為和機能的負載測試工具。經由過程以模擬上萬萬用戶實施并發負載及實時機能監測的體例來確認和查找問題,LoadRunner能夠對折個企業架構進行測試。經由過程使用LoadRunner,企業能最年夜限度地縮短測試時刻,優化機能和加速應用系統的發布周期。

            對于財年夜氣粗的年夜公司而言,這款軟件可能斗勁適合,它的功能和QALoad對比八兩半斤,市道上馳譽的公司如IBM、SUN、Oracle等都用這個軟件。可是它的價錢也高不成攀,和功能成正比。

            三、進一步的工作與談判

            跟著周全質量打點思惟在軟件開發規模的應用和不竭向前推進,軟件測試也由最初的僅僅針對軟件制品擴展到了針對軟件半制品甚至過程產物的全過程測試,這是對軟件測試的一種必然擴充。WEB測試也會跟著這一思惟,不竭地擴展到WEB軟件的各個生命周期中去,這將使WEB應用軌范取得更高的質量,這也是我們往后需要進一步研究的內容。出格是對WEB壓力測試自順應模子的試探才剛剛起頭,有良多不足之處,例如:今朝的測試人機交互較多,而自動完成的軌范較少等,這些都有待日后的改良。

            除了前面介紹的WEB壓力測試外,今朝WEB測試的首要研究熱點還有:WEB應用測試的框架研究,WEB應用軌范測試的對象模子研究及其應用,WEB測試的高度自動化研究等等,都將是未來一段時代內的研究重點。

          posted @ 2011-12-01 15:50 順其自然EVO 閱讀(210) | 評論 (0)編輯 收藏

          實時控制軟件的質量

           如何確保嵌入式實時控制軟件的質量?對這類軟件的生產過程如何進行有效的質量控制?這是一個重要的研究課題。為解決軟件危機而產生和發展起來的軟件工程成功地解決了軟件開發中存在的許多問題。它不僅對軟件開發、設計和生產有直接影響,而且對提高軟件質量有顯著成效。實踐表明,使用軟件工程方法,可達到一般的質量要求。但當軟件質量要求更高時,則必須在實施軟件工程的同時,采取一些專門的可靠性工程技術和方法,以保證需求的可靠性。

            軟件工程是指按照工程的規律來組織軟件的生產與開發。軟件工程化要求以軟件質量控制為核心,緊緊抓住軟件生產方法、需求分析、軟件設計、軟件生產工具、測試、驗證與確認、評審和管理等8個主要環節(圖1)。

            軟件生產方法

            軟件是產品。從產品的意義上說,所謂軟件開發應為軟件生產。軟件應采用工程化、結構化和規范化方法進行生產。軟件工程化是指使用軟件工程的理論、技術、要求和管理等來規范軟件開發過程中的全部活動。硬件生產已有一套成熟的工程化方法,軟件要向硬件學習,使軟件硬化,把軟件看作是軟件工廠中的產品。

            軟件規范化是指在軟件生存周期中,軟件的生產活動必須嚴格遵循各項軟件規范和標準。經驗證明,沒有規范就沒有產品,也就沒有軟件。執行規范必須動真格。執行規范工作量是大些(工作量主要在文檔、審查、驗證、評審和管理上),但受益卻是明顯的。由于軟件開發過程規范提高了軟件質量,這樣不僅減輕了損失,而且還促進了軟件的生產進度,提高了軟件的生產率。

            軟件結構化是指軟件生產過程中采用了結構化分析和結構化設計方法。

            軟件需求分析

            軟件需求分析的目的是使軟件設計人員和用戶之間進行全面和深入的溝通,以明確用戶所需的究竟是一種什么樣的軟件。需溝通的主要內容有:將要開發的軟件所涉及的概念、定義、目標、指標、功能、控制邏輯、算法、環境、時序、執行過程和特點等。通過需求分析產生的軟件規格說明書是此后軟件設計、調試和測試工作的基礎,是軟件評審、鑒定和驗收的依據之一。因此,需求分析是軟件生產中的一個首要步驟。一份軟件規格說明書的質量優劣,一方面取決于需要分析深入的程度,另一方面取決于系統分析員刻畫軟件需求的正確性、完整性、合理性和一致性達到的程度。

            眾所周知,軟件怕修改,更怕需求變更。原因在于:

            ● 軟件修改的工作量大,關鍵軟件的任何修改,必須經歷一個調試、測試、驗證與確認的步驟。

            ● 花費的代價高,經試驗考核過的軟件,又要更改軟件需求,即使是只改了一個參數,也需要對更改的軟件作重復考核。有的實時控制系統一次試驗的代價是相當大的。

            ● 軟件修改的牽涉面廣,往往有牽一發而動全身的問題。尤其是由多個分系統組成的系統(例如軍事指揮的C3I系統),任何·一項修改均要考慮是否會影響其他的分系統。

            軟件可靠性需求分析要求全面、細致和深入。

            不難看出,軟件需求分析的過程,也是軟件設計方案的醞釀過程。通過分析應得出用戶需求的正確性、合理性和完整性的結論;同時,也應得出軟件付諸實現的可行性、可靠性和安全性的結論。軟件需求分析的銜接關系見圖2。





          軟件設計

            軟件也和硬件一樣,它的質量是設計出來的,生產出來的。其中,設計對軟件質量具有關鍵性的影響。設計的重要性可從圖3看出,其中(a)為經歷了設計步驟后的效果,在軟件使用和維修階段,軟件的問題少;反之,(b)為跳過設計步驟,到了使用和維修階段,軟件問題成堆,到了不可收拾的地步。基于這種情況,應強調:軟件設計未完成,不得轉入軟件編碼階段。

            良好的軟件設計與所采用的軟件設計方法、設計工具和設計準則有關。軟件設計方法主要有面向數據流的設計、面向對象的設計和面向數據的設計方法等。這些方法均有其優缺點和不同的應用領域。目前,大多數嵌入式的實時控制軟件使用的是面向數據流的設計方法。該方法的目標是以一種全局的軟件觀點和體系結構設計的角度派生出程序結構。

            面向數據流的設計又稱為結構化設計。它強調模塊化、層次化和自頂向下等設計思想。這些思想的根本目的是對復雜問題的解決采用一個簡化過程以獲得滿意的答案。通過這種簡化,縱有千頭萬緒也能理得清清楚楚。一個設計準則是要將復雜的問題簡化,切忌將簡單的問題復雜化。好的程序設計語言,無疑對設計高質量的軟件是有益的。例如,Ada語言,與一般語言比較,它所特有的一些語言成分旨在突出軟件可靠性和安全性,便于軟件維護,便于實行程序的層次式管理和提高程序的易讀性、高效性等。

            軟件可靠性設計主要將軟件的檢錯、避錯、容錯和異常處理技術灌輸到軟件設計中去,設計時應處處關心:

            ● 控制邏輯的完整性;

            ● 軟件與硬件、軟件與軟件界面之間的協調性;

            ● 人機交互的有效性;

            ● 信息交換的正確性;

            ● 設備控制的安全性;

            ● 時序控制的合理性;

            ● 數學運算中變量定義域的合法性。

            軟件生產工具

            軟件生產的主要工具是軟件試驗臺(Software Testbed)或軟件開發平臺。在軟件需求分析的同時,就要考慮到這類軟件開發環境的創造。它應滿足下列要求:

            (1)它的組成、結構、性能、功能和工作的方式與狀態,力求與實際系統一致。優點是:

            ● 它與實際系統出現的故障現象是一樣的,便于故障隔離。

            ● 軟件試驗臺與實際系統的軟件可彼此互相復制,便于軟件開發過程交替上升。

            ● 具有互補性,試驗臺有局限性的問題可在實際系統解決;實際系統上有困難的,代價太大的檢測活動可在試驗臺上進行。

            (2)配上多媒體工作站,提供軟件測試過程中綜合信息的顯示和生產真實工作環境中的音響效果。

            (3)配備實時數據采集器。

            (4)能支持實時與非實時兩種運行方式的調試活動。

          軟件試驗臺是輔助軟件調試、測試、試驗和驗證的重要工具。在某種程度上可以得出這樣的結論:沒有軟件試驗臺就不能順利地開發出實時控制系統軟件。原因在于:

            (1)這類復雜的軟件在實際系統上開發是不可能的,其代價太大,效率太低,效果太差。

            (2)軟件開發是個做細致研究、分析和不斷探索的過程,軟件試驗臺能適應這種工作方式。

            (3)它是軟件編程、調試、測試、集成和試驗的綜合環境。

            (4)它是支持軟件原型化開發方法的重要手段。

            一般來說,實時控制系統軟件的第一個原型是在軟件試驗臺上開發出來的。有了軟件原型,就有了與用戶深入討論、分析和確認軟件需求的基礎。實踐證明,經過軟件試驗臺測試通過的軟件,基本上能用于實際實時控制系統的系統聯調、測試、試驗和系統驗收。

            軟件測試

            從軟件生存周期看,軟件測試是卡住軟件質量,尤其是卡住軟件可靠性的最后一道關口。但軟件測試并不僅僅局限于這個階段,而應貫穿于軟件開發的全過程(見圖4)。應解決這樣一個認識問題——用于實時控制系統一類的復雜軟件,自認為沒有錯誤的想法是不切合實際的。因此,測試的主要目的是:

            1)對軟件的質量或可接受性作出判斷;

            2)發現問題。

            從圖4看出,會產生錯誤的階段是在需求說明、設計和編程過程中。這些錯誤若不排除,均會遺傳到測試階段,甚至會遺傳到使用階段。利用測試用例測出問題進行故障分類、故障隔離和故障消除等步驟,直到獲得滿意的測試結果為止。

            測試用例的編寫格式和內容如圖5所示。測試的設計。難就難在試圖利用這組測試用例能找出軟件的全部問題。格式中含有測試管理信息——測試用例標識和執行史。測試用例標識是按一定規律統一為每個測試例賦予的代號,便于需求追蹤。執行史中有測試日期、測試結果(給出結論:通過/失敗)、版本號和主管的測試者簽字,這些都是有保存價值的資料。測試用例是需要精心設計、編寫、評審、使用、管理和保存的。


            軟件測試要求在測試過程中,采集軟件可靠性數據,并利用軟件可靠性模型進行可靠性評估。分析其是否達到了預期的可靠性要求。并據此作出該軟件能否放行的決斷。若不滿足要求,需繼續進行測試,直到滿足要求為止。可見這是一項十分花精力的活動。

           軟件驗證與確認

            軟件驗證(Verification)和確認(Validation),簡稱為V&V 或V2。驗證和確認的區別在于:驗證關心的是確保軟件模塊或功能內在的正確性;確認則表明要與規定的需求進行比較是否滿足要求,它所關心的是該軟件產品的價值。

            軟件驗證與確認是貫穿于軟件開發過程中十分細致的軟件檢驗活動。每個開發階段的結果可認為是下一開發階段的一個規格文件,但要進入下一階段之前必須對該結果作出確認。驗證和確認的主要方法有:代碼走查、審查、測試和正確性證明等。代碼走查就是對軟件文檔進行書面檢查。它通過人工模擬執行源程序的過程,檢查軟件設計的正確性。人工模擬也像計算機執行那樣,可以仔細推敲、校驗和核實每一步的執行結果,進而確定其執行邏輯、控制模型、算法和使用參數與數據的正確性。

            審查是軟件驗證和確認中的一個主要方法,可彌補其他方法的一些不足之處。它是一種用形式的、有效的和經濟的方法查找設計和編程中的錯誤。審查的主要目的是1)找出軟件中的缺陷;2)核實是否符合需求;3)早期生產評價;4)過程評價等。由第三方進行軟件評測工作是十分重要的,其評測工具軟件對軟件進行靜態的和動態的評測,能發現軟件設計的缺陷、瓶頸和多余物等。值得指出的是,用于軟件測試的各種方法、技術、工具和措施等,對提高軟件的可靠性都是必要的,但不是充分的。這就表明,其中任何一個手段,均不能絕對保障軟件的可靠性,但只要能發現軟件中任何一個微小的錯誤,就起到了它的作用。

            軟件評審

            從某種意義上說,軟件中的多數錯誤是人為的。軟件評審是軟件生產過程中過濾軟件錯誤的一個“濾波器”。軟件評審涉及評審的組織機構、管理、準則、類別、內容、文件和要求等。

            一般要求在軟件研制階段的里程碑點進行軟件評審。評審的主要類別有:軟件定義評審、軟件需求評審、概要設計評審、詳細設計評審、軟件實現評審和軟件驗收評審等。

            評審的原則:

            ● 某階段未通過階段評審不得進入下一個軟件研制階段;

            ● 評審時對事不對人,評審的是產品,而不是評審生產者;

            ● 評審就要挑刺,找問題、缺陷和隱患;

            ● 評審組的人員面越廣越好;

            ● 評審組不作無休止的爭論和辯駁,將爭論點記錄下來,供以后甄別;

            ● 評審只是提出問題,沒有解決問題的任務;

            ● 使用“評審檢查單”以提高評審的效果;

            評審的作用:

            ● 技術把關,避免軟件人員的想當然;

            ● 概念溝通,吸收用戶和總體人員參加,審查軟件人員理解的正確性;

            ● 集思廣益,吸收有關的分系統人員參加,從不同側面確認軟件的協調性;

            ● 總結匯報,使實時控制系統總指揮、總設計師了解軟件生產的進度、問題和要求,作出新的部署。

            評審很容易走過場、走形式。評審效果的好壞,與當事人(軟件人員)密切相關。基于有問題才需要評審,不能輕信自己的軟件,導致對評審產生對立情緒。對評審出的問題進行整理、分類和匯總,不忽視任何一個細小的疑點。

            軟件管理

            科學的管理能夠出可靠性、出效果、出效益。軟件的管理工作不完善、不嚴格,是引起意外事故的原因之一。軟件管理主要包括軟件項目管理、軟件配置管理、軟件可靠性管理和軟件質量管理等方面。

            軟件項目管理的內容包括軟件開發過程管理、軟件可靠性度量、風險管理(包括風險分析和估計)、確定項目任務、建立可操作的工程計劃等。軟件項目管理是軟件管理工作的第一層。需要強調的是,它不是一個階段,也不僅僅是個步驟,而是貫穿于整個軟件開發工程中的一個層次。從其管理內容來看,這是一種十分重要的管理工作。其管理的好壞,直接影響產品的質量。這項管理尚處于起步狀態,是個薄弱環節。軟件配置管理是軟件人員和管理人員確定、組織和開展軟件修改的手段,目的是在軟件修改過程中設法少犯差錯來最大限度地提高軟件產品的生產率。軟件配置管理涉及軟件配置項和基線的確定。

            軟件配置項可理解為在軟件生產的某個階段應具備的軟件文檔和保存軟件的介質等。軟件基線(基準)又稱里程碑。軟件配置項經軟件驗證、確認、評審和認定后,形成了軟件基線,也就成了該階段的一個基準。下一個階段只能在這個基準上進行開發活動。

          軟件配置管理要求:

            ● 軟件修改必須遵循軟件更改規范;

            ● 未經批準的更改,任何人無權修改;

            ● 更改后必須測試、驗證和確認;

            ● 軟件驗收,必須對相應的軟件進行評審。

            具備評審的條件包括:相對該基線的軟件配置項齊全、有測試結果和測試分析報告及軟件優化報告。

            文檔管理是一項十分艱巨而又瑣碎的工作,要求:文檔編寫必須規范、文實相符、文文相符、描述具有一致性、確切性和簡明性、簽署完整、職責明確。軟件可靠性管理作了一些初步的嘗試。在軟件生產過程中,設計了軟件可靠性數據采集表格。對軟件中的需求、模型、設計、編碼和定義域等方面的錯誤均要填表。填寫產生該錯誤的時間(計算機執行的累計時間)、錯誤性質、出錯原因和排除錯誤的結果等。

            主要問題與解決方法

            對實時控制系統軟件工程化的重要性的認識尚處于起步階段,重視程度也不平衡。主要問題:

            (1)部分系統的軟件開發由硬件人員承擔。硬件、軟件、模型設計均由一個組完成,仍是典型的“自編、自導、自演”小作坊的工作方式。

            (2) 還不太習慣于軟件工程化、規范化、結構化和模塊化的軟件生產方法。往往跳過了軟件設計階段,而是先有編碼,為了軟件檢查才補設計。

            (3)缺少配套的軟件測試工具。試圖利用實時控制系統進行軟件的調試、測試、驗證、確認和試驗工作,這樣的軟件測試必然是不完整的,也是有局限性的,更是不科學的。

            (4)實時控制系統軟件可靠性工程的研究是自發的,未納入實時控制系統研制計劃,影響這項工作的深入開(5)需要解決實時控制系統軟件工程化方面的若干模糊認識:

            ● 軟件就是編程;

            ● 沒有測試工具照樣可以開發出軟件;

            ● 舍不得在軟件可靠性上化成本;

            ● 出了問題,才發現軟件似乎比硬件更重要。

            (5)實時控制系統軟件可靠性指標不好定。原因是軟件可靠性的評估涉及模型、方法、工具和條件等問題。當前,要求軟件的可靠性為100%,對軟件是不公正的,也是過于苛刻的。

            建議

            (1)軟件可靠性工程也是一項涉及面很廣的系統工程,應加強這項技術的研究力度。尤其要結合具體實時控制系統設置研究課題,使實時控制系統軟件的生產過程同時也是軟件可靠性工程的實施過程。使自發的可靠性工作成為有計劃、有組織和有目標的研究工作。

            (2)適用于嵌入式計算機的實時軟件,例如實時操作系統、Ada語言等,應像美國國防部那樣,要強制推行。

            (3)計算機技術發展很快,軟件技術及軟件可靠性工程技術也發展很快,應對重點實時控制系統的軟件人員定期組織培訓。

            (4)為了解決軟件生產的小作坊問題,可否考慮逐步推行實時控制系統軟件人員考核制,作出資格認證。



          posted @ 2011-12-01 15:47 順其自然EVO 閱讀(144) | 評論 (0)編輯 收藏

          測試活動中如何應對關鍵風險

           測試關鍵風險指的是在測試活動中發生的對測試進程和測試結果又重大影響的阻礙性問題和突發事件。

            這一輪的轉測試版本,有新的測試需求。需要所有的測試員都學會搭建一個比較復雜的測試工具。而且這個步驟是整輪測試的關鍵點。如果沒有正確配置,整個測試進程都會停滯。

            在配置方式完全正確的情況下,配置好此工具的時間需要2-3個小時。然而目前要驗證工具是否配置正確的唯一方式就是執行基礎測試用例,此用例執行完成下來需要花費1-2個小時。也就是說一次的配置不正確,花費的代價就是4到5個小時。一天的工作時間包括加班也就10個小時。如果兩次都出現錯誤,一整天的時間就浪費了。而且此工具的配置還因為測試場景不同配置方式也有部分差異,所以每個測試員所需要面對的問題都會不一樣。

            目前手頭上有的資源就是一份配置說明(不包含每個場景的細節配置),一個有過成功配置經驗的老員工。下班后測試經理組織培訓,叫一個有此工具配置經驗的老員工給大家講解配置步驟,要求大家必須在2天內都能上手。測試員培訓完以后發現這個任務存在很大的風險,并且不可控。整個的轉測試時間只有6個工作日,按照正常的版本測試周期,5天再加上每天加班3個小時,基本可以按時完成任務,突然冒出這么個復雜的東西,根本無法完成任務。因為多個場景可以同時配置,有測試員提議:找專人來負責。測試經理答曰:“找你你愿意干嘛?要是找我,我肯定不干,我付不起責任。”

            碰見這問題,測試經理關注的是不可控風險對整個測試進度和測試質量的影響,測試員關注的則是對自己任務進度的影響,延時以后可能會有更多的加班,原本有10個功能點要驗證,應為趕進度只驗證了9個,發生漏測!

            測試經理站在全局角度可以要求測試員必須在2天之內學會配置,但是真的在2天之內所有測試員都能學會嗎?在轉測試之前,測試經理和TSE沒有對新的測試需求進行詳細分析,沒有評估新的測試需求包含的風險,沒有詳細的了解員工對新測試需求的理解和掌握程度,沒有參考測試員對技能的掌握來設定任務時間。

            個人認為,在以后的轉測試之前,測試經理一定要詳細的分析每一項新的測試需求,及時的將新需求達到每個測試員,務必要詳盡的羅列此出存在的風險項,結合測試員對新需求的掌握和理解程度來確定風險的大小,再根據風險的可控性來適當的延長測試時間,并且及時的對薄弱環節進行加強培訓。當風險發生以后要及時的做出評估和分析,分析風險發生的原因找出解決方案,評估風險對測試進度和質量的影響,結合實際情況確認是否需要調整測試方案。

            風險發生后,測試員需要積極的面對,參與分析給出自己的意見,不能推卸責任。測試經理不能盲目的施加壓力,測試員壓力的大小也會直接影響到測試質量。還有一點,作為一個測試經理,必須要擔負起責任,對于風險,測試員有責任,但更大的責任在于測試經理,是你沒有事先沒有充分分析,才導致風險發生。你付不起責任誰負責任?大家共同的在做同一件事情,測試經理在帶頭,大家走錯路了,最大的責任肯定在測試經理。大家團結一條心才能順利的度過各種難關,達到零漏測的目標。

          posted @ 2011-12-01 15:28 順其自然EVO 閱讀(136) | 評論 (0)編輯 收藏

          測試活動中如何應對關鍵風險

           測試關鍵風險指的是在測試活動中發生的對測試進程和測試結果又重大影響的阻礙性問題和突發事件。

            這一輪的轉測試版本,有新的測試需求。需要所有的測試員都學會搭建一個比較復雜的測試工具。而且這個步驟是整輪測試的關鍵點。如果沒有正確配置,整個測試進程都會停滯。

            在配置方式完全正確的情況下,配置好此工具的時間需要2-3個小時。然而目前要驗證工具是否配置正確的唯一方式就是執行基礎測試用例,此用例執行完成下來需要花費1-2個小時。也就是說一次的配置不正確,花費的代價就是4到5個小時。一天的工作時間包括加班也就10個小時。如果兩次都出現錯誤,一整天的時間就浪費了。而且此工具的配置還因為測試場景不同配置方式也有部分差異,所以每個測試員所需要面對的問題都會不一樣。

            目前手頭上有的資源就是一份配置說明(不包含每個場景的細節配置),一個有過成功配置經驗的老員工。下班后測試經理組織培訓,叫一個有此工具配置經驗的老員工給大家講解配置步驟,要求大家必須在2天內都能上手。測試員培訓完以后發現這個任務存在很大的風險,并且不可控。整個的轉測試時間只有6個工作日,按照正常的版本測試周期,5天再加上每天加班3個小時,基本可以按時完成任務,突然冒出這么個復雜的東西,根本無法完成任務。因為多個場景可以同時配置,有測試員提議:找專人來負責。測試經理答曰:“找你你愿意干嘛?要是找我,我肯定不干,我付不起責任。”

            碰見這問題,測試經理關注的是不可控風險對整個測試進度和測試質量的影響,測試員關注的則是對自己任務進度的影響,延時以后可能會有更多的加班,原本有10個功能點要驗證,應為趕進度只驗證了9個,發生漏測!

            測試經理站在全局角度可以要求測試員必須在2天之內學會配置,但是真的在2天之內所有測試員都能學會嗎?在轉測試之前,測試經理和TSE沒有對新的測試需求進行詳細分析,沒有評估新的測試需求包含的風險,沒有詳細的了解員工對新測試需求的理解和掌握程度,沒有參考測試員對技能的掌握來設定任務時間。

            個人認為,在以后的轉測試之前,測試經理一定要詳細的分析每一項新的測試需求,及時的將新需求達到每個測試員,務必要詳盡的羅列此出存在的風險項,結合測試員對新需求的掌握和理解程度來確定風險的大小,再根據風險的可控性來適當的延長測試時間,并且及時的對薄弱環節進行加強培訓。當風險發生以后要及時的做出評估和分析,分析風險發生的原因找出解決方案,評估風險對測試進度和質量的影響,結合實際情況確認是否需要調整測試方案。

            風險發生后,測試員需要積極的面對,參與分析給出自己的意見,不能推卸責任。測試經理不能盲目的施加壓力,測試員壓力的大小也會直接影響到測試質量。還有一點,作為一個測試經理,必須要擔負起責任,對于風險,測試員有責任,但更大的責任在于測試經理,是你沒有事先沒有充分分析,才導致風險發生。你付不起責任誰負責任?大家共同的在做同一件事情,測試經理在帶頭,大家走錯路了,最大的責任肯定在測試經理。大家團結一條心才能順利的度過各種難關,達到零漏測的目標。

          posted @ 2011-12-01 15:28 順其自然EVO 閱讀(145) | 評論 (0)編輯 收藏

          對軟件測試工作的反思

           我這個人做完一件事情喜歡反思和總結,這個習慣一直保留著。在測試部做了兩個月,雖然我對測試還是門外漢,只做了一些具體工作,但忍不住把自己的想法寫了個系統文章,其實提意見我的看法是領導一般不反感,只要你的意見系統,有建設性,不針對個人攻擊就好。

            下面就是我當時寫的對測試工作的反思,有些是參考了一些資料,結合自己總結寫的。

          軟件測試工作的反思

            測試人員的配置:測試人員必須包括三類人,專業測試人員,熟練測試人員和對軟件完全不熟悉的新人。專業測試人員主要負責測試規劃和測試大綱,極限測試環境設計,熟練測試人員主要負責按規定完成大綱測試,屬收斂性測試,新人主要負責易用性和界面合理性測試,屬發散性測試,發現的各類問題由專業測試人員分析并給出解決對策。

            測試文件的準備:提前準備好軟件測試需要的圖、工藝文件,OFFICES,TXT,其它CAD設計文件測試標準文件,而不是臨時去找

            測試軟件的準備:應該提供不同的操作系統數據庫平臺測試環境,必要的話提供多臺測試機器,減少人工浪費在安裝環境上的時間。

            測試機器的準備:應給測試人員配置相對好的機器,以提高測試速度和效率,同時一定要配置相對差的機器,模擬在用戶現場極端運行環境和速度。

            業務測試的準備:(針對當時軟件測試主要是功能測試的情況)應該設計大量的業務測試流程,流程可以從開發,市場,實施部門配合,給予解決。

            測試階段的劃分:應該分開發測試(非常反感開發不懂操作,也不自行測試就提交測試人員驗證的模式),功能測試,極限測試,BUG測試(主要是測試歷史環境下有記錄的BUG),現場測試(主要是易用性和測試業務流程)

            對測試大綱的意見:

            1、測試內容不全面,缺少測試文件樣例,測試軟件版本號

            a)很多軟件存在的功能測試大綱沒有涉及,我自己把只要能夠用的功能都測試了一遍,超出了規定測試大綱的內容,發現了很多新錯誤,當時公司測試水平也確實有限,所謂軟件測試就是兩個臨時員工負責。

            b)軟件功能之間組合連續測試不完善,很多功能單獨是好的,但如何把管理軟件功能串合起來用的測試流程不清晰,需要測試人員自己發揮

            2、極端環境測試得不夠

            對空數據,大數據,大量網絡并發等環境下測試很不夠,往往這個時候能測試出很多問題,例如軟件運行效率

            3、對誤操作或非法操作給系統帶來的影響測試大綱無體現

            測試大綱都是要求你如何如何操作,應得到何種結果,但問題是用戶不一定會這樣操作,但我這里隨意操作常常造成死機,這也是我對測試大綱很不滿意的,軟件應該做到即使是用戶誤操作系統有提示或者沒反應,而不是死機,更不是要求實施人員去培訓正確的操作。

            4、測試動作量化不夠

            例如同一功能測試次數,測試頻率,測試速度都應有規定,例如某一功能測試100次,可能才出現一次BUG,如果只測試10次可能就是OK的,或者連續使用10次就會出現BUG,但單獨使用沒問題,這些應該也體現的測試大綱,而不是讓測試人員自己去測。

            5、測試中對開發人員的開發功能邏輯了解不夠,無法自覺測試潛在的功能缺失和沖突或干擾(后來我才曉得這叫白箱測試)

            6、對軟件的宜人性,友好性,WINDOWS下程序風格一致性,簡潔性沒有任何評估

            7、沒有以用戶層面對設計的功能和動作進行挑剔。

            8、缺乏軟件測試質量保障體系(后來開目花了大力氣建設了測試體系,通過CMM3級評估)

            9、沒有單位時間內任意測試過程中死機紀錄,只測功能的實現性,沒有系統穩定性指標,實時性,同步性等效率量化指標

            10、沒有參照軟件的對比測試

            11、沒有前期積累的測試文獻

            12、測試工作不應該僅僅成為開發的完善工具,還要承擔一部分探索開發方向的作用,甚至一定程度上和開發交融(這個觀點我現在不支持,要求太高了,主要是當時我對自己測試太有信心了)

            測試目的:

            1)檢查出軟件中的功能設計不足或BUG以保證能滿足用戶正常使用

            2)在說明書中明確一些常見錯誤操作以防止用戶誤操作或給出解決方法

            3)對一些一時難以解決的難點,導致的問題給用戶一個解釋或變通的方法

            根本目標:

            保證開目軟件的易學易用穩定的優勢,以優質產品占領市場,贏得口碑。

          posted @ 2011-12-01 15:25 順其自然EVO 閱讀(202) | 評論 (0)編輯 收藏

          測試過程中的評審工作及關注事項

          測試過程中的評審工作及關注事項

          公司的軟件開發EPG過程規范中對測試領域的工作及其規范做了細致的說明,雖然是CMMI3+,不過還是有些地方只是官樣文章,是形而上的東西,在實際工作中不具備任何的指導作用。所以我們領導覺得這個可以自己重新定義一些在測試思維上較為技術性的東西納入到測試領域的規范當中,而我負責關于用戶需求評審系統測試用例評審的檢查點整理工作。由于用戶需求評審能夠有助于測試人員系統測試工作的開展,所以下面就用戶與需求評審所需要準備的工作、用戶需求評審時所要思考的問題、系統測試用例評審過程中所需要考慮的一些檢查點進行簡單的列舉。這些內容都是個人經驗總結,并不能應用于所有類型的系統,所以請不要拿來硬套,因為不同行業、不同類型的系統特征是不同的,我所關注的只是我所負責的保險系列業務系統。

            用戶需求評審準備工作

            》向用戶或者BA/SA索取原始需求文檔;

            》仔細閱讀需求文檔,大致估算系統改動;

            》向開發人員了解預計的開發工作量,并且相互印證系統改動的估算;

            》了解需求排期,預估測試所需人力,估算時需要考慮關聯影響測試;

            》了解相同和接近的版本周期內的其他需求和版本,預估測試環境和人力是否足夠,如果有可能資源不足則及時升級并且邀請測試經理參與需求評審會議。

            用戶需求評審問題清單

            》本需求提出的背景:現有功能有什么樣的問題、由什么市場、行業的變化所導致?

            》本需求所要實現的目標:操作流程簡化、業務成本降低或者客戶滿意度提高等等?

            》本需求是否有前置和后續需求排期?其優先級是否合理,實現情況分別是怎樣的?

            》本需求的內容是否會與現有業務邏輯或者系統邏輯的沖突?如果有,該如何解決?

            》本需求所包含內容是否有冗余:與現有某些系統功能或流程重復,造成重復開發?

            》本需求是否有足夠的資源去實現,包括測試人力、開發人力或者測試環境等資源?

            》本需求完成之后的效益是否足夠抵消其在IT版本的成本投入?是否可能會出現在這個需求上“得不償失”或者說“入不敷出”的情況?

            》本需求用戶驗收測試有什么樣的案例?對應的數據類型和數據量的需求是怎樣的?

            》本需求的UAT所需要的時間應該有多少?用戶是否有足夠的測試人力投入?IT應該保證的最短UAT時間需要多少天?

            》UAT人員是否有就此需求測試的其他特殊要求或疑問?如果有,這些要求是否合理、是否有必要、是否需要IT同事支持或者是否有變通解決方法?

            系統測試用例評審關注點

            》用例描述、操作步驟、預期結果和數據使用等信息是否準確、完整、無歧義;

            》用例是否包含了足夠多的業務類型分支或數據場景分支;

            》用例中是否設計了操作源表包含百、萬、百萬甚至億級數據,結果集輸出包含十、百、千等不同級別的數據場景,對其性能是否可接受是否有可行的驗證方法;

            》用例是否考慮了用戶使用的頻率,若使用非常頻繁,那么是否需要做并發測試;

            》被測功能是否為無操作界面的系統自動任務,若無操作界面,那么用例中是否考慮了用戶測試的方法;若有界面,是否有界面規范性性檢查測試用例(CQ中有界面變更項為是的需求);

            》對于查詢、報表類功能:

              >> 用例設計是否包含對查詢結果完整性、顯示格式、排序等方面的檢查;

              >> 用例是否包含足夠的必輸項和頁面控制的檢查,空值查詢的數據庫消耗是否正常;

              >> 用例對不同查詢條件的組合場景設計是否充分;

              >> 用例是否檢查了對于有導出EXCEL等文本的情況,導出查詢是否同步修改;

              >> 報表生成過程中是否涉及后臺數據的變化,即:是否涉及中間表、臨時表的使用,如有使用,那么用例是否包含對計算過程中的中間表、臨時表的數據正確性檢查;

              >> 用例是否考慮了現有測試數據庫的數據是否滿足測試要求,是否需要造數據或者導生產數據,測試數據與用戶驗收測試是否可以共用等因素;

            》對于業務操作類功能:

              >> 被測功能中是否包含查詢功能,如果包含則參見查詢、報表類功能評審檢查點;

              >> 用例中對操作產生的數據狀態的流轉是否有清晰的說明;

              >> 用例是否包含了對可逆數據的反復正向、逆向操作結果正確性的檢查;

              >> 對于可能發生的異常,是否設計了足夠多的場景,對于發生異常之后的應用健康度是否有檢查,在異常場景中,是否包含對產生臟數據的可能性的檢查;

              >> 對于涉及EAI、ETL等數據同步的功能或涉及不同數據庫或數據表之間數據交換的功能,是否有對不同數據庫、數據表的字段和前后臺字段類型、長度一致性的檢查;

              >> 針對本需求的修改點,是否設計了對其關聯功能或潛在關聯影響的測試用例,關聯影響分析的依據是什么;

              >> 對界面操作的后臺日志記錄是否有檢查其完整性和正確性,是否有單獨開發監控程序的必要;

              >> 用例的優先級是怎樣的,對應功能不可用的情況下,其他測試用例的執行是否受到影響,對于這種情況是否有規避的方法;反之本測試用例是否受制于其他測試用例執行結果的正確性,如果是則又該如何解決;

              >> 用例執行的前置條件是否清楚,如:測試執行時是否需要依賴特殊外設或者硬件資源、關聯系統的版本進度和質量等;

              >> 是否需要為本用例所對應的功能新建功能點或分支,用例是否需要加入到回歸測試用例中,本測試用例是否可自動化,是否可以立即自動化,自動化腳本開發預計需要多少時間;


          posted @ 2011-12-01 15:18 順其自然EVO 閱讀(333) | 評論 (0)編輯 收藏

          查看Linux系統的其他參數

           1、用vmstat來監控Linux系統的整體性能

            vmstat是一個相當全面的性能分析工具,可以用來觀察系統的進程狀態、內存使用情況、虛擬內存的使用情況、磁盤的I/O、中斷、上下文切換、CPU的使用情況等性能信息。建議熟練掌握此命令。舉例如下:

        1. [root@localhost ~]# vmstat 1 4  
        2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  
        3.  r b  swpd  free buffcache si sobibo  incsus sy idwa st  
        4.  0 00225159234310474124800023100010000  
        5.  0 002251592343104741248000010341930010000  
        6.  0 002251592343104741248000010171470010000  
        7.  0 002251592343104741248000010281830010000
        8.   其中:

            procs

            r:等待運行的進程數。

            b:處在非中斷睡眠狀態的進程數。

            w:被交換出去的可運行的進程數。此數由Linux計算得出,但Linux并不耗盡交換空間。

            memory

            swpd:虛擬內存使用情況,單位為KB。

            free:空閑的內存,單位為KB。

            buff:被用來作為緩存的內存數,單位為KB。

            swap

            si:從磁盤交換到內存的交換頁數量,單位為KB。

            so:從內存交換到磁盤的交換頁數量,單位為KB。

            io

            bi:發送到塊設備的塊數,單位為塊。

            bo:從塊設備接收到的塊數,單位為塊。

            system

            in:每秒的中斷數,包括時鐘中斷。

            cs:每秒的環境(上下文)切換次數。

            cpu

            按CPU的總使用百分比來顯示。

            us:CPU使用時間。

            sy:CPU系統使用時間。

            id:閑置時間。

            標準情況下r和b值應該為:

            r<5,b≈0

            假設輸出的信息中:

            r經常大于3或4,且id經常少于50,表示CPU的負荷很重。

            pi、po長期不等于0,表示內存不足。

            disk經常不等于0,且在b中的隊列大于2或3,表示io的性能不好。

            2、查看系統內核

            查看系統內核主要是為了掌握其版本號,為安裝LVS等軟件做準備。我們可以用命令uname -a來查看,如下所示:

        9. [root@localhost ~]# uname -a  
        10. Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri 
          Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
        11.   簡化的參數命令如下:

          [root@localhost ~]# uname -r

            2.6.18-194.el5如果要查看系統是32位還是64位,可以用如下命令:[root@localhost /]# ls -lF /| grep /$此命令會查找是否有/lib64的目錄,有則表示系統為64位,無則表示系統為32位。大家記住一點,64位的CPU系統架構可以安裝32位或64位的系統,而32位的CPU架構只能安裝32位的系統。查找情況如下所示:

        12. drwxr-xr-x  2 root root 4096 03-13 04:02 bin/  
        13. drwxr-xr-x  4 root root 1024 03-08 16:44 boot/  
        14. drwxr-xr-x  5 root root 4096 03-27 00:58 data/  
        15. drwxr-xr-x 11 root root 3800 03-17 07:27 dev/  
        16. drwxr-xr-x 101 root root 12288 03-26 08:47 etc/  
        17. drwxr-xr-x  4 root root 4096 03-09 10:34 home/  
        18. drwxr-xr-x 11 root root 4096 03-13 04:02 lib/  
        19. drwxr-xr-x  7 root root 4096 03-13 04:02 lib64/  
        20. drwx------  2 root root 16384 03-08 16:33 lost+found/  
        21. drwxr-xr-x  2 root root 4096 2010-01-27 media/  
        22. drwxr-xr-x  2 root root 0 03-16 16:23 misc/  
        23. drwxr-xr-x  2 root root 4096 2010-01-27 mnt/  
        24. drwxr-xr-x  2 root root 0 03-16 16:23 net/  
        25. drwxr-xr-x  2 root root 4096 2010-01-27 opt/  
        26. dr-xr-xr-x 142 root root 0 03-16 16:22 proc/  
        27. drwxr-x--- 17 root root 4096 03-28 11:30 root/  
        28. drwxr-xr-x  2 root root 12288 03-13 04:02 sbin/  
        29. drwxr-xr-x  2 root root 4096 03-08 16:35 selinux/  
        30. drwxr-xr-x  2 root root 4096 2010-01-27 srv/  
        31. drwxr-xr-x 11 root root 0 03-16 16:23 sys/  
        32. drwxrwxrwt  5 root root 4096 03-28 04:02 tmp/  
        33. drwxr-xr-x 15 root root 4096 03-08 16:40 usr/  
        34. drwxr-xr-x 21 root root 4096 03-08 16:47 var/
        35.   另一種常見方法是通過file命令來判斷系統中的文件是32位還是64位的,以此作為判斷系統的依據,如下所示:

        36. [root@localhost /]# file /sbin/init  
        37. /sbin/init: ELF 64-bit LSB executable, AMD x86-64, 
          version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked 
          (uses shared libs), for GNU/Linux 2.6.9, stripped
        38.   此結果表示系統為64位的。

            3、查看服務器使用的Linux發行版的相關信息

            下面的命令可查看服務器使用的Linux發行版的名稱、版本號及描述信息等:

        39. [root@localhost /]# lsb_release -a  
        40. LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-
          noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch  
        41. Distributor ID: CentOS  
        42. Description: CentOS release 5.5 (Final)  
        43. Release: 5.5
        44.   Codename:Final如果Centos5.5或以前的版本沒有此命令,我們可以通過yum -y install redhat-lsb來安裝。

            4、查看系統已載入的相關模塊

            Linux操作系統的核心具有模塊化的特性,因此在編譯核心時,無須把全部的功能都放入核心。可以將這些功能編譯成一個個單獨的模塊,待需要時再分別載入。比如說在安裝LVS+Keepalived時,我們經常會用lsmod來查看lvs模塊是否已經載入,如下所示:

        45. root@localhost ~]# lsmod| grep ip_vs  
        46. ip_vs_wrr 35905 1  
        47. ip_vs 122113 3 ip_vs_wrr5.在Linux下查找PCI設置
        48.   有時需要在Linux下查找PCI設置。這時可以用lspci命令,它能列出機器中的PCI設備信息,比如聲卡、顯卡、Modem、網卡等的信息,主板集成設備的信息也能列出來。lspci讀取的是hwdata數據庫。可能有讀者和我一樣,最關心的還是網卡型號。

        49. [root@localhost ~]# lspci | grep Ether  
        50. 06:07.0 Ethernet controller: Intel Corporation 82541GI
          Gigabit Ethernet Controller (rev 05)  
        51. 07:08.0 Ethernet controller: Intel Corporation 82541GI
          Gigabit Ethernet Controller (rev 05)
        52.   網卡的監控一般用命令miit-tool和iptraf,這個知識點將在后面講解。

            本文主要從服務器的CPU、內存、硬盤性能、負載及其他方面詳細說明了Linux服務器的整體性能狀態,希望大家能夠通過以上所列的方法來了解自己的Linux服務器的性能狀態,這對工作會有很大幫助。





          posted @ 2011-12-01 14:59 順其自然EVO 閱讀(618) | 評論 (0)編輯 收藏

          MySQL主從配置的一些總結

           一、做了mysql主從也有一段時間了,這兩天檢查磁盤空間情況,發現放數據庫的分區磁盤激增了40多G,一路查看下來,發現配置好主從復制以來到現在的binlog就有40多G,原來根源出在這里,查看了一下my.cnf,看到binlog的 size是1G就做分割,但沒有看到刪除的配置,在mysql里show了一下variables:

          mysql>show variables like '%log%';

            查到了,

          | expire_logs_days | 0 |

            這個默認是0,也就是logs不過期,這個是一個global的參數,所以需要執行

          set global expire_logs_days=8;

            這樣8天前的log就會被刪除了,如果有回復的需要,請做好備份工作,但這樣設置還不行,下次重啟mysql了,配置又恢復默認了,所以需在my.cnf中設置,

          expire_logs_days = 8

            這樣重啟也不怕了。

            現在我在生產環境下的做法是將此時間設為0,然后備份mysql日志文件,然后再手動清理此文件。

            想要恢復數據庫以前的資料,執行

          mysql>show binlog events;

            由于數據量很多,查看起來很麻煩,光打開個文件就要閃半天,所以應該適當刪除部分可不用的日志

            并且如果使用的時間足夠長的話,會把我的硬盤空間都給吃掉。

            1、登錄系統,/usr/bin/mysql

            使用mysql查看日志:

        53. mysql>show binary logs; 
        54. +—————-+———–+ 
        55. | Log_name | File_size | 
        56. +—————-+———–+ 
        57. | ablelee.000001 | 150462942 | 
        58. | ablelee.000002 | 120332942 | 
        59. | ablelee.000003 | 141462942 | 
        60. +—————-+———–+
        61.   2、刪除bin-log(刪除ablelee.000003之前的而沒有包含ablelee.000003):

        62. mysql> purge binary logs to ′ablelee.000003′; 
        63. Query OK, 0 rows affected (0.16 sec)
        64.   3、查詢結果(現在只有一條記錄了):

        65. mysql> show binlog events\G  
        66. *************************** 1. row ***************************  
        67. Log_name: ablelee.000003  
        68. Pos: 4  
        69. Event_type: Format_desc  
        70. Server_id: 1  
        71. End_log_pos: 106  
        72. Info: Server ver: 5.1.26-rc-log, Binlog ver: 4  
        73. 1 row in set (0.01 sec)  
        74. (ablelee.000001和ablelee.000002已被刪除)  
        75. mysql> show binary logs;  
        76. +—————-+———–+  
        77. | Log_name | File_size |  
        78. +—————-+———–+  
        79. | ablelee.000003 | 106 |  
        80. +—————-+———–+  
        81. 1 row in set (0.00 sec)  
        82. (刪除的其它格式運用!)  
        83. PURGE {MASTER | BINARY} LOGS TO ‘log_name’  
        84. PURGE {MASTER | BINARY} LOGS BEFORE ‘date
        85.   用于刪除列于在指定的日志或日期之前的日志索引中的所有二進制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為第一個。

            例如:

        86. PURGE MASTER LOGS TO 'mysql-bin.010'
        87. PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';

        88.  二、現在手上蠻多項目的數據庫用的是MySQL,由于權限等原因,暫時不方便部署Nagios監控MySQL主從復制,所以我一般在從機上配置了SHELL腳本用來監控MySQL的主從狀態(設置為每十分鐘運行一次),并且每次出問題時將確切日期寫進錯誤日志,方便事后排查原因,腳本內容如下:

        89. #!/bin/bash 
        90. #check MySQL_Slave Status 
        91. #crontab time 00:10 
        92. MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'
        93. MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'
        94. STATUS=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running"
        95. IO_env=`echo $STATUS | grep IO | awk ' {print $2}'
        96. SQL_env=`echo $STATUS | grep SQL | awk '{print $2}'
        97. if [ "$MYSQLPORT" == "3306" ] 
        98. then 
        99. echo "mysql is running" 
        100. else 
        101. mail -s "warn!server: $MYSQLIP mysql is down" yuhongchun027@163.com 
        102. fi 
        103. if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ] 
        104. then 
        105. echo "Slave is running!" 
        106. else 
        107. echo "####### $date #########">> /data/data/check_mysql_slave.log 
        108. echo "Slave is not running!" >> /data/data/check_mysql_slave.log 
        109. mail -s "warn! $MySQLIP_replicate_error" yuhongchun027@163.com << /data/data/check_mysql_slave.log 
        110. fi
        111.   建議每十分鐘運行一次。

          */10 * * * * root /bin/sh /root/mysql_slave.sh

            記得在每臺MySQL從機上分配一個yuhongchun的用戶,權限大些也沒關系,只限定在本地運行,如下所示:

        112. grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101"
        113. grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101";
        114.   腳本設計思路:

            1、此腳本應該能適應各種各樣不同的內外網環境,即IP不同的環境;

            2、讓腳本也順便監控下MySQL是否正常運行;

            三、innodb_buffer_pool_size的設置。

            這個參數定義了InnodDB存儲引擎的表數據和索引數據的最大內存緩沖區大小。和MyISAM存儲引擎不同,MyISAM的key_buffer_size只緩存索引鍵,而innodb_buffer_pool_size卻是同時為數據塊和索引塊 做緩存,這個特征和Oracle是一樣的,這個值設得越高,訪問表中數據需求的I/O就越少。在一個專用的數據庫服務器,可以設置這個參數達機器物理內存的80%,我現在一般的做法是配置成物理內存的 1/4,比如8G內存的生產數據庫,我一般會配置成2G左右。

            四、測試了很長一段時間的MySQL的負載均衡,最后綜合了老男孩和其它技術高手的意見,最終決定還是用LVS+Keepalived來作為MySQL的負載均衡,這是因為后端機器超過10臺時,LVS的性能還是最好的;如果在3-5臺左右,HAProxy也可以很輕松的搞定工作。

            五、大家都很清,磁盤I/O總會成為數據庫的性能瓶頸,這時候我們應該如何在生產環境下選擇合適的RAID級別呢?

            1、如果數據讀寫都很頻繁,可靠性要求也很高,最好選擇RAID10;

            2、如果數據讀很頻繁,寫相對較少,對可靠性有一定要求,可以選擇RAID5;

            3、如果數據讀寫都很頻繁,但可靠性要求不高,可以選擇RAID0。

            4、對于核心業務的數據庫主從同步,建議從機的備份時間往后延遲一段時間,通常的做法是延遲一天左右。

          posted @ 2011-12-01 14:49 順其自然EVO 閱讀(155) | 評論 (0)編輯 收藏

          測試如何處理好和開發的合作關系

           日常的工作中,每天都會與開發工程師打交道。我們服務的核心對象也是開發同學,和開發同學保持較好的合作關系,很大程度上影響了測試工作的好壞。

            談談自己的一點看法:

            1、加強開發團隊對缺陷和測試人員的重視程度,規范開發測試流程,從根源上解決問題。 開發和測試的矛盾來自于缺陷,也終止于缺陷。 開發團隊的領導技術覺悟,可能會直接影響到成員和測試人員的合作,如果開發團隊領導對缺陷都視而不見,對測試認知度有限,開發同學就可能會對bug產生抵觸情緒。 采用適當的培訓來提高開發團隊對測試工作的認識,可以使開發同學提高代碼質量意識,更加尊重測試的工作。如果可以有一個非常明確的開發測試流程,并能夠將代碼質量計算 到每個人的能力考核范圍內,那么測試的工作會好做很多。目前公司很多的需求跟進、代碼review工作都理所當然的由測試來負責推進,這種現狀其實不利于測試人員解脫出來,專注于測試 本身。

            2、引入缺陷統計工具 缺陷解決周期及質量可以一目了然,提供給開發和測試同學一個渠道去查看團隊成員的代碼質量、缺陷頻率、線上代碼存在的隱患等等。 同時,對于某一個項目來說,缺陷統計工具提供的數據可以做為一個數據倉庫以提供各位老大們做各種數據挖掘,比如某一個項目在引入自動化測試框架后,bug頻度和數量是否了 下降,某開發團隊引入code coverage工具后,首版本嚴重級別相同的bug數量是否有降低。

            3、簡化開發測試間的缺陷溝通渠道,避免無效bug。 我們可以先來個換位思考,如果我們來做開發,什么樣的bug我們樂意改,什么樣的bug我們最討厭?

            我大概想了想,有幾下幾種:

            最喜歡的bug:

            1)容易改的;
            2)可以讓代碼更簡潔的;
            3)不需要重構的;
            4)改完了有種成就感的;
            5)這個bug不被發現可能影響重大的;
            6)可以讓我有技術成長的;

            ......

            最討厭的bug:

            1)費了半天勁但發現是個無效bug,測試根本沒搞清楚需求是什么;
            2)吹毛求疵的小問題,而且很費時間的問題;
            3)可能是個問題,但我從bug描述上根本看不出是什么地方出了問題;
            4)我只是遺忘了一個sql腳本,結果QA給我提個P0級別bug,至于么?
            5)測試庫都是垃圾數據,你們為什么不清一下就總說程序有問題?

            ......

            綜上,應該盡量做到以下幾點:

            1)前期的需求明確,達到開發和測試認識一致是前提;

            2)bug的描述盡可能清晰,優先級盡可能準確,盡可能深刻,最好深入到代碼級,避免重復的bug;

            3)減少隨機測試帶來不可重現的bug,如有可能,盡量所提bug都是可以重現的;

            4)能夠和開發同學說明bug的嚴重性和可能帶來的具體風險;

            5)減少對開發同學的技術依賴,建立技術尊重。比如自動化部署、獨立掌握測試環境、了解一定的代碼邏輯等等。

            4、引用臺企的一句話“Work Smart”

            1)注意bug提交的時機。嚴重的bug如果在上線前才提出來,大家都會很窩火,開發即使不埋怨心里對測試的信任度也會打折。同時,目標對象的心情也很重要,即使你很資深,開 發人員關機了準備走,或者和女朋友約了吃飯,這個bug被處理的可能性肯定很小的。

            2)對事不對人。一個標題鮮明的嚴重bug列表也許會讓pm覺得項目問題很多,同時也會讓開發很“沒面子”,特別是一堆無關緊要的問題被標紅和羅列成一屏幕的時候,會引起很 大的反感。這種情況應該盡量避免發生。同時,測試應該盡可能只就事論事,討論bug盡可能理智和克制,有耐心,避免和開發同學因為bug爭吵。這樣才能夠很好的說服開發修改 缺陷。

            3)和開發搞好私人關系,做開發的朋友:   盡可能站在開發角度考慮問題,特別是開發同學遇到困難的時候,使開發同學認識到測試不僅僅是找茬,而是在協助他完成他的工作。這樣既能夠解決問題,又能夠交個朋友, 何樂而不為?

            以上僅是個人一點想法,歡迎拍磚!謝謝!

          posted @ 2011-12-01 13:23 順其自然EVO 閱讀(223) | 評論 (0)編輯 收藏

          僅列出標題
          共394頁: First 上一頁 354 355 356 357 358 359 360 361 362 下一頁 Last 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 江山市| 和平区| 布拖县| 潢川县| 花莲县| 长春市| 溧阳市| 高平市| 平阴县| 巴青县| 德阳市| 宝兴县| 东乡族自治县| 新兴县| 乐都县| 昆明市| 景宁| 阿克陶县| 柳河县| 定结县| 伽师县| 眉山市| 公安县| 亳州市| 洮南市| 山阳县| 桑植县| 凤台县| 左贡县| 万荣县| 营山县| 阿拉尔市| 宝鸡市| 武乡县| 谷城县| 玛纳斯县| 庆云县| 固原市| 彰武县| 双峰县| 新化县|