當前位置:首頁 » 視頻軟體 » 軟體測試怎樣理解需求
擴展閱讀
馬兒怎樣過河視頻 2025-06-28 07:56:14
新手怎樣快速開通原創 2025-06-28 07:43:01
墨魚需要怎樣清洗 2025-06-28 07:25:44

軟體測試怎樣理解需求

發布時間: 2022-10-23 06:36:06

⑴ 軟體測試之需求管理有哪些難點

每一位產品負責人、項目經理或業務分析師都需要了解需求管理的重要性。無論是傳統項目管理還是敏捷軟體開發,成功或失敗的基礎都取決於需求管理。

需求管理的方法不僅應用在敏捷研發或傳統項目管理之中,還適用於金融,製造,建築,能源,電信等其他行業。

有分析師報告稱,需求管理不善導致項目失敗的比率高達71%。與技術缺陷、超出時間期限或管理變革失敗等原因相比較,需求管理不善的後果更加嚴重,是項目失敗的最主要原因。

因此,在管理需求范圍和定義需求的工作中,團隊經常會花費會很大精力避免出錯。但是在實際的需求實施過程中仍然存在許多問題。

隨著項目與業務的復雜性逐漸增加,需求管理不再是簡單地管理需求文檔,記錄相關信息。如今,需求管理中更重要的是要使團隊(包括利益相關者)與項目目標保持同步,並構建正確的需求,保證團隊順利實施研發。

在本文中,我們將討論產品負責人、項目經理和業務分析師在需求管理中面臨的幾個難點。

01、 什麼是需求管理

需求管理就是要識別所有產品和服務的需求,以支持市場的職能。是一套流程,在市場中,一套策劃,執行,控制和監督產品的設計,價格,促銷,分銷的流程,目的是通過滿足組織和個人的需要而帶來業務

02、 需求池

需求管理難點之一是建立需求池並將其與業務體系關聯起來。需求只有與業務使用場景相結合時才有價值。產品負責人也可以將需求按照業務體系進行組織管理,使團隊成員能夠更好地理解需求。

什麼是需求池?

需求池是一種集中存儲需求的方法,將未規劃的,未開發的,評審中的和已規劃的等不同狀態的需求集中管理。需求池充當需求的唯一來源,方便產品負責人(包括利益相關者)查詢瀏覽。

需求信息如果不集中管理,會非常影響團隊協作。而僅依賴文檔和電子表格也無法解決這個問題,長期維護文檔會打斷團隊成員手頭的研發工作,因為通常文檔版本很多,不容易快速確定需求的變更、審批、實施進度等最新信息。

03、 變更需求產生的影響

在實際業務中,需求不僅僅是文字記錄,而是結構化的信息,具有多個依賴和引用關系。更改一個需求會產生對其他需求,包括史詩,特性,用戶故事,任務,缺陷或測試用例的一系列影響。

業務需求和項目復雜度逐漸增加,在研發過程中變更需求會產生怎樣的影響,現在也變得不好確認,包括對相關需求和目標用戶的案例也要進行調整。

因此,產品負責人手動維護表格或使用文檔,很難有效率地管理數百項需求以及變更。

04、 建立需求標准

產品負責人或項目經理面臨的另一個難點是:客戶或利益相關者會頻繁變更需求。客戶提出了一系列需求,無論是否確認了需求文檔,他們隨時都會想要變更需求。

如果項目需求范圍發生變化,新的需求可能會增加成本預算,甚至導致項目計劃重新安排。團隊很有可能會面臨預算超支或返工。

頻繁變更需求的主要原因在於:需求文檔編寫和確認過程中,利益相關者沒有完全參與進來。如果團隊要遵循標准化的需求制定方案,利益相關者應預先確認需求變更的可控范圍,團隊才能以此進行工作量和成本推算。

05、 版本管理

在項目進行過程中,客戶與利益相關者的一些需求變更沒有辦法避免。幾乎40%的需求至少要變更一次,大約10%的需求變更兩次甚至更多。

因此,產品負責人需要一個好的方式來管理這些需求以及變更記錄。讓團隊成員可以明確了解,在每個版本中需要做哪些新功能或優化。另外,合理地復用需求也可以極大地減少返工並提高團隊的生產力。

現在一些團隊仍然在使用Word和Excel進行需求管理,它們沒辦法解決項目實施過程中的復雜問題。團隊需要功能更強大的需求管理工具來進行改善和提高。

如果使用優秀的需求管理工具,如Jira、PingCode等,那麼就可以輕松解決所有上述問題。

上文內容不用於商業目的,如涉及知識產權問題,請權利人聯系我,我們將立即處理

⑵ 如何進行軟體需求分析

1.概念
需求的定義包括從用戶角度(系統的外部行為),以及從開發者角度(一些內部特性)來闡述需求.
關鍵的問題是一定要編寫需求文檔.我曾經目睹過一個項目中途更換了所有的開發者,客戶被迫與新的需求分析者坐到一起.系統的分析人員說:"我們想與你談談你的需求."客戶的第一反應便是:"我已經將我的要求都告訴你們前任了,現在我要的就是給我編一個系統".
百事通
而實際上,UGGs,需求並未編寫成文檔,因此新的分析人員不得不從頭做起.所以如果只有一堆郵件、會談記錄或一些零碎的未整理的對話,你就確信你已明白用戶的需求,那完全是自欺欺人.
需求的另外一種定義認為需求是"用戶所需要的並能觸發一個程序或系統開發工作的說明".有些需求分析專家拓展了這個概念:"從系統外部能發現系統所具有的滿足於用戶的特點、功能及屬性等".這些定義強調的是產品是什麼樣的,而並非產品是怎樣設計、構造的.而下面的定義則從用戶需要進一步轉移到了系統特性:
需求是指明必須實現什麼的規格說明.它描述了系統的行為、特性或屬性,是在開發過程中對系統的約束.
從上面這些不同形式的定義不難發現:並沒有一個清晰、毫無二義性的"需求"術語存在,真正的"需求"實際上在人們的腦海中,這個人們主要是指客戶,但一般情況下,用戶並不能描述自己的需要,只就需要系統分析人員根據用戶的自己語言的描述整理出相關的需要再進一步和客戶核對.系統分析員和客戶需要確保所有項目風險承擔者在描述需求的那些名詞的理解上務必達成共識.
任何文檔形式的需求(例如如下將要描述的需求規格說明書)僅是一個模型,一種描述.
2.需求分析的任務
開發軟體系統最為困難的部分就是准確說明開發什麼.最為困難的概念性工作便是編寫出詳細技術需求,這包括所有面向用戶、面向機器和其它軟體系統的介面.同時這也是一旦做錯,將最終會給系統帶來極大損害的部分,並且以後再對它進行修改也極為困難.
目前,國內產品的龐雜,一家企業可能有幾個系統並立運行,它們之間介面是系統開發人員最頭痛的問題.
對於商業最終用戶應用程序,企業信息系統和軟體作為一個大系統的一部分的產品是顯而易見的.但是對於我們開發人員來說,並沒有編寫出客戶認可的需求文檔,我們如何知道項目於何時結束?而如果我們不知道什麼對客戶來說是重要的,那我們又如何能使客戶感到滿意呢?
然而,即便並非出於商業目的的軟體需求也是必須的.例如庫、組件和工具這些供開發小組內部使用的軟體.當然你可能偶爾勿需文檔說明就能與其他人意見較為一致,但更常見的是出現重復返工這種不可避免的後果,而重新編制代碼的代價遠遠超過重寫一份需求文檔的代價,這些血的教訓正在國內的軟體開發者身上發生.
近來,我遇到一個開發小組開發包括代碼編輯器在內的一套內部使用的計算機輔助軟體.不幸的是,當他們開發完這個工具後,發現這個工具不能列印出源代碼文件,使用者當然希望有這個功能.結果這個小組只好手工抄寫源代碼文檔以供代碼檢查.這說明那怕需求明確無誤並構思准確,如果我們沒有編寫文檔,軟體達不到期望目標也只能是咎由自取了.
相反的情況,我曾見一個要集成到"錯誤跟蹤系統"中的簡單界面寫了一頁需求說明.而操作系統系統管理員在為處理腳本時發現簡單的一張需求清單竟是如此有用.他們依據需求對系統進行測試時,此系統不僅非常清晰地實現了所有必需功能,而且未發現任何錯誤.
事實上,需求文檔在開發過程中一直起指導作用.
3.需求分析過程
可把整個軟體需求工程研究領域劃分為需求開發和需求管理兩部分更合適,如圖4-1所示:
圖4-1 需求工程域的層次分解示意圖
需求開發可進一步分為:問題獲取、分析、編寫規格說明和驗證四個階段.這些子項包括軟體類產品中需求收集、評價、編寫文檔等所有活動.需求開發活動包括以下幾個方面:
確定產品所期望的用戶類別.
獲取每個用戶類的需求.
了解實際用戶任務和目標以及這些任務所支持的業務需求.
分析源於用戶的信息以區別用戶任務需求、功能需求、業務規則、質量屬性、建議解決方法和附加信息.
將系統級的需求分為幾個子系統,並將需求中的一部份分配給軟體組件.
了解相關質量屬性的重要性.
商討實施優先順序的劃分.
將所收集的用戶需求編寫成文檔和模型.
評審需求規格說明,確保對用戶需求達到共同的理解與認識,並在整個開發小組接受說明之前將問題都弄清楚.
需求管理需要"建立並維護在軟體工程中同客戶達成的合同" .這種合同都包含在編寫的需求文檔與模型中.客戶的接受僅是需求成功的一半,開發人員也必須能夠接受他們,並真正把需求應用到產品中.通常的需求管理活動包括:
定義需求基線(迅速制定需求文檔的主體).
評審提出的需求變更、評估每項變更的可能影響從而決定是否實施它.
以一種可控制的方式將需求變更融入到項目中.
使當前的項目計劃與需求一致.
估計變更需求所產生影響並在此基礎上協商新的承諾,這種承諾具體體現在項目解決方案上.
讓每項需求都能與其對應的設計、源代碼和測試用例聯系起來以實現跟蹤.
在整個項目過程中跟蹤需求狀態及其變更情況.
以上幾點說明是我總結了成功實施項目後系統分析人員的經驗,同時也根據國內外的其他系統實施的相關成功經驗,進行了總結.
4.需求的類型
下面這些定義是需求工程領域中常見術語的定義.
軟體需求包括三個不同的層次:業務需求、用戶需求和功能需求(也包括非功能需求).
1.業務需求(business requirement)反映了組織機構或客戶對系統、產品高層次的目標要求,它們在項目視圖與范圍文檔中予以說明.
2.用戶需求(user requirement) 文檔描述了用戶使用產品必須要完成的任務,這在使用實例(use case)文檔或方案腳本說明中予以說明.
3.功能需求(functional requirement)定義了開發人員必須實現的軟體功能,使得用戶能完成他們的任務,從而滿足了業務需求.
在軟體需求規格說明書 (SRS)中說明的功能需求充分描述了軟體系統所應具有的外部行為.軟體需求規格說明在開發、測試、質量保證、項目管理以及相關項目功能中都起了重要的作用.對一個大型系統來說,軟體功能需求也許只是系統需求的一個子集,因為另外一些可能屬於子系統(或軟體部件).
作為功能需求的補充,軟體需求規格說明還應包括非功能需求,它描述了系統展現給用戶的行為和執行的操作等.它包括產品必須遵從的標准、規范和合約;外部界面的具體細節;性能要求;設計或實現的約束條件及質量屬性.所謂約束是指對開發人員在軟體產品設計和構造上的限制.質量屬性是通過多種角度對產品的特點進行描述,從而反映產品功能.多角度描述產品對用戶和開發人員都極為重要.
下面以一個字處理程序為例來說明需求的不同種類.業務需求可能是:"用戶能有效地糾正文檔中的拼寫錯誤",該產品的包裝盒封面上可能會標明這是個滿足業務需求的拼寫檢查器.而對應的用戶需求可能是"找出文檔中的拼寫錯誤並通過一個提供的替換項列表來供選擇替換拼錯的詞".同時,該拼寫檢查器還有許多功能需求,如找到並高亮度提示錯詞的操作;顯示提供替換詞的對話框以及實現整個文檔范圍的替換.
從以上定義可以發現,需求並未包括設計細節、實現細節、項目計劃信息或測試信息.需求與這些沒有關系,它關注的是充分說明你究竟想開發什麼.項目也有其它方面的需求,如開發環境需求或發布產品及移植到支撐環境的需求.盡管這些需求對項目成功也至關重要,但它們並非本書所要討論的.
5.需求分析的原則
不重視需求過程的項目隊伍將自食其果.需求工程中的缺陷將給項目成功帶來極大風險,這里的"成功"是指推出的產品能以合理的價格、及時地在功能、質量上完全滿足用戶的期望.下面將討論一些需求風險.
不適當的需求過程所引起的一些風險:
1. 無足夠用戶參與
客戶經常不明白為什麼收集需求和確保需求質量需花費那麼多功夫,開發人員可能也不重視用戶的參與.究其原因:一是因為開發人員感覺與用戶合作不如編寫代碼有意思;二是因為開發人員覺得已經明白用戶的需求了.在某些情況下,與實際使用產品的用戶直接接觸很困難,而客戶也不太明白自己的真正需求.但還是應讓具有代表性的用戶在項目早期直接參與到開發隊伍中,並一同經歷整個開發過程.
系統人員在實踐過程中,也有些感覺,在實施一家公司的項目時,若無足夠的用戶參與,系統人員獲得的需求是片面的,不完整的,這樣系統在需求之初就埋下風險.
2. 用戶需求的不斷增加
在開發中若不斷地補充需求,項目就越變越龐大以致超過其計劃及預算范圍.計劃並不總是與項目需求規模與復雜性、風險、開發生產率及需求變更實際情況相一致,這使得問題更難解決.實際上,問題根源在於用戶需求的改變和開發者對新需求所作的修改.
要想把需求變更范圍控制到最小,必須一開始就對項目視圖、范圍、目標、約束限制和成功標准給予明確說明,並將此說明作為評價需求變更和新特性的參照框架.說明中包括了對每種變更進行變更影響因素分析的變更控制過程,有助於所有風險承擔者明白業務決策的合理性,即為何進行某些變更,相應消耗的時間、資源或特性上的折中.
產品開發中不斷延續的變更會使其整體結構日漸紊亂,補丁代碼也使得整個程序難以理解和維護.插入補丁代碼使模塊違背強內聚、松耦合的設計原則,特別是如果項目配置管理工作不完善的話,收回變更和刪除特性會帶來問題.如果你盡早地區別這些可能帶來變更的特性,你就能開發一個更為健壯的結構,並能更好地適應它.這樣設計階段需求變更不會直接導致補丁代碼,同時也有利於減少因變更導致質量的下降.
3. 模稜兩可的需求
模稜兩可是需求規格說明中最為可怕的問題.它的一層含義是指諸多讀者對需求說明產生了不同的理解;另一層含義是指單個讀者能用不止一個方式來解釋某個需求說明.
模稜兩可的需求會使不同的風險承擔者產生不同的期望,它會使開發人員為錯誤問題而浪費時間,並且使測試者與開發者所期望的不一致.一位系統測試人員曾告訴我,她所在的測試組經常對需求理解有誤,以致不得不重寫許多測試用例並重做許多測試.
處理模稜兩可需求的一種方法是組織好負責從不同角度審查需求的隊伍.僅僅簡單瀏覽一下需求文檔是不能解決模稜兩可問題的.如果不同的評審者從不同的角度對需求說明給予解釋,但每個評審人員都真正了解需求文檔,這樣二義性就不會直到項目後期才被發現,那時再發現的話會使得更正代價很大.
4. 不必要的特性
"畫蛇添足"是指開發人員力圖增加一些"用戶欣賞"但需求規格說明中並未涉及的新功能.經常發生的情況是用戶並不認為這些功能性很有用,以致在其上耗費的努力"白搭"了.開發人員應當為客戶構思方案並為他們提供一些具有創新意識的思路,具體提供哪些功能要在客戶所需與開發人員在允許時限內的技術可行性之間求得平衡,開發人員應努力使功能簡單易用,而不要未經客戶同意,擅自脫離客戶要求,自作主張.
同樣,客戶有時也可能要求一些看上去很"酷",但缺乏實用價值的功能,而實現這些功能只能徒耗時間和成本.為了將"畫蛇添足"的危害盡量減小,應確信:你明白為什麼要包括這些功能,以及這些功能的"來龍去脈",這樣使得需求分析過程始終是注重那些能使用戶完成他們業務任務的核心功能.
5. 過於精簡的規格說明
有時,客戶並不明白需求分析有如此重要,於是只作一份簡略之至的規格說明,僅涉及了產品概念上的內容,然後讓開發人員在項目進展中去完善,結果很可能出現的是開發人員先建立產品的結構之後再完成需求說明.這種方法可能適合於尖端研究性的產品或需求本身就十分靈活的情況.但在大多數情況下,這會給開發人員帶來挫折(使他們在不正確的假設前提和極其有限的指導下工作),也會給客戶帶來煩惱(他們無法得到他們所設想的產品).
6. 忽略了用戶分類
大多數產品是由不同的人使用其不同的特性,使用頻繁程度也有所差異,使用者受教育程度和經驗水平也不盡相同.如果你不能在項目早期就針對所有這些主要用戶進行分類的話,必然導致有的用戶對產品感到失望.例如,菜單驅動操作對高級用戶太低效了,但含義不清的命令和快捷鍵又會使不熟練的用戶感到困難.
7. 不準確的計劃
據統計,導致需求過程中軟體成本估計極不準確的原因主要有以下五點:頻繁的需求變更、遺漏的需求、與用戶交流不夠、質量低下的需求規格說明和不完善的需求分析.
對不準確的要求所提問題的正確響應是"等我真正明白你的需求時,我就會來告訴你".基於不充分信息和未經深思的對需求不成熟的估計很容易為一些因素左右.要作出估計時,最好還是給出一個范圍.未經准備的估計通常是作為一種猜測給出的,聽者卻認為是一種承諾.因此我們要盡力給出可達到的目標並堅持完成它.
6.需求分析人員和用戶的合作關系
優秀的軟體產品是建立在優秀的需求基礎之上的.而高質量的需求來源於客戶與開發人員之間有效的交流與合作.通常,開發人員與客戶或客戶代理人,如市場人員間的關系反而會成為一種對立關系.雙方的管理者都只想自己的利益而擱置用戶提供的需求從而產生摩擦,在這種情況下,不會給雙方帶來一點益處.
只有當雙方參與者都明白要成功自己需要什麼,同時也應知道要成功合作方需要什麼時,才能建立起一種合作關系.由於項目壓力與日漸增,所有風險承擔者有著一個共同的目標這一點容易被遺忘.其實大家都想開發出一個既能實現商業價值,又能滿足用戶需要,還能使開發者感到滿足的優秀軟體產品.
軟體客戶需求權利書列出了十條關於客戶在項目需求工程實施中與分析人員、開發人員交流時的合法要求.每一項權利都對應著軟體開發人員、分析人員的義務.而軟體客戶需求義務書也列出了十條關於客戶在需求過程中應承擔的義務.如果願意,可以將其作為開發人員的權利書.
客戶有如下權利:
1:要求分析人員使用符合客戶語言習慣的表達
需求討論應集中於業務需要和任務,故要使用業務術語,你應將其教給分析人員,而你 不一定要懂得計算機的行業術語.
2:要求分析人員了解客戶的業務及目標
通過與用戶交流來獲取用戶需求、分析人員才能更好地了解你的業務任務和怎樣才能使產品更好地滿足你的需要.這將有助於開發人員設計出真正滿足你的需要並達到你期望的優秀軟體.為幫助開發人員和分析人員,可以考慮邀請他們觀察你或你的同事是怎樣工作的.如果新開發系統是用來替代已有的系統,那麼開發人員應使用一下目前的系統,這將有利於他們明白目前系統是怎樣工作的,其工作流程的情況,以及可供改進之處.
3:要求分析人員編寫軟體需求規格說明
分析人員要把從你和其他客戶那裡獲得的所有信息進行整理,以區分開業務需求及規范、功能需求、質量目標、解決方法和其它信息.通過這些分析就能得到一份軟體需求規格說明.而這份軟體需求規格說明便在開發人員和客戶之間針對要開發的產品內容達成了協議.軟體需求規格說明書可以用一種你認為易於翻閱和理解的方式組織編寫.要評審編寫出的規格說明以確保它們准確而完整地表達了你的需求.一份高質量的軟體需求規格說明能有助於開發人員開發出真正需要的產品.
4:要求得到需求工作結果的解釋說明
分析人員可能採用了多種圖表作為文字性軟體需求規格說明的補充.因為如工作流程圖那樣的圖表能很清楚地描述出系統行為的某些方面.所以需求說明中的各種圖表有著極高的價值.雖然它們不太難於理解,但是你很可能對此並不熟悉.因此可以要求分析人員解釋說明每張圖表的作用或其它的需求開發工作結果和符號的意義,及怎樣檢查圖表有無錯誤及不一致等.
5:要求開發人員尊重你的意見
如果用戶與開發人員之間不能相互理解,那關於需求的討論將會有障礙,共同合作能使大家"兼聽則明".參與需求開發過程的客戶有權要求開發人員尊重他們並珍惜他們為項目成功所付出的時間.同樣,客戶也應對開發人員為項目成功這一共同目標所作出的努力表示尊重與感激.
6:要求開發人員對需求及產品實施提供建議,拿出主意
通常,客戶所說的"需求"已是一種實際可能的實施解決方案,分析人員將盡力從這些解決方法中了解真正的業務及其需求,同時還應找出已有系統不適合當前業務之處,以確保產品不會無效或低效.在徹底弄清業務領域內的事情後,分析人員有時就能提出相當好的改進方法.有經驗且富有創造力的分析人員還能提出增加一些用戶並未發現的很有價值的系統特性.
7:描述產品易使用的特性
你可以要求分析人員在實現功能需求的同時還要注重軟體的易用性.因為這些易用特性或質量屬性能使你更准確、高效地完成任務.例如,客戶有時要求產品要"用戶友好"或"健壯"或"高效率",但這對於開發人員來說,太主觀了並無實用價值.正確的應是:分析人員通過詢問和調查了解客戶所要的友好、健壯、高效所包含的具體特性.
8:調整需求,允許重用已有的軟體組件
需求通常要有一定的靈活性.分析人員可能發現已有的某個軟體組件與你描述的需求很相符.在這種情況下,分析人員應提供一些修改需求的選擇以便開發人員能夠在新系統開發中重用一些已有的軟體.如果有可重用的機會出現,同時你又能調整你的需求說明,那就能降低成本和節省時間,而不必嚴格按原有的需求說明開發.所以說,如果想在產品中使用一些已有的商業常用組件,而它們並不完全適合你所需的特性,這時一定程度上的需求靈活性就顯得極為重要了.
9:獲得滿足客戶功能和質量要求的系統
每個人都希望項目獲得成功.但這不僅要求你要清晰地告知開發人員關於系統"做什麼"所需的所有信息,而且還要求開發人員能通過交流了解清楚取捨與限制.一定要明確說明你的假設和潛在的期望.否則,開發人員開發出的產品很可能無法讓你滿意.
客戶有下列義務:
1:給分析人員講解你的業務
分析人員要依靠你給他們講解的業務概念及術語.但你不能指望分析人員會成為該領域的專家,而只能讓他們真正明白你的問題和目標.不要期望分析人員能把握你們業務的細微與潛在之處,他們很可能並不知道那些對於你和你的同事來說理所當然的"常識".
2:抽出時間清楚地說明並完善需求
客戶很忙,經常在最忙的時候還得參與需求開發.但無論如何,你有義務抽出時間參與"頭腦風暴"會議的討論,接受采訪或其它獲取需求的活動.有時分析人員可能先以為明白了你的觀點,而過後發現還需要你的講解.這時,請耐心一些對待需求和需求的精化工作過程中的反復,因為它是人們交流中的很自然的現象,何況這對軟體產品的成功極為重要.
3:准確而詳細地說明需求
編寫一份清晰、准確的需求文檔是很困難的.由於處理細節問題不但煩人而且又耗時,故很容易留下模糊不清的需求.但是,在開發過程中,必須得解決這種模糊性和不準確性.而你恰是為解決這些問題作出決定的最佳人選.不然的話,你就只好靠開發人員去正確猜測了.在需求規格說明中暫時加上待定(to be determined, TBD也可採用漢語拼音略寫"DQD:待確定")的標志是個不錯的辦法.用該標志可指明了哪些需要進一步探討、分析或增加信息的地方.不過,有時也可能因為某個特殊需求難以解決或沒有人願意處理它而註上TBD標志.盡量將每項需求的內容都闡述清楚,以便分析人員能准確的將其寫進軟體需求規格說明中.如果你一時不能准確表述,那就得允許獲取必要的准確信息這樣一個過程.通常使用所謂的原型技術.通過開發的原型,你可以同開發人員一起反復修改,不斷完善需求定義.
4:及時地作出決定
正如一位建築師為你修建房屋,分析人員將要求你做出一些選擇和決定.這些決定包括來自多個用戶提出的處理方法或在質量特性沖突和信息准確度中選擇折衷方案等.有權做出決定的客戶必須積極地對待這一切,盡快做處理、做決定.因為開發人員通常只有等你做出了決定才能行動,而這種等待會延誤項目的進展.
5:尊重開發人員的需求可行性及成本評估
所有的軟體功能都有其成本價格,開發人員最適合預算這些成本(盡管許多開發人員並不擅長評估預測).你所希望的某些產品特性可能在技術上行不通,或者實現它要付出極為高昂的代價.而某些需求試圖在操作環境中要求不可能達到的性能或試圖得到一些根本得不到的數據,開發人員會對此作出負面的評價意見,你應該尊重他們的意見.有時,你可以重新給出一個在技術上可行、實現上便宜的需求,例如,要求某個行為在"瞬間"發生是不可行的,但換種更具體的時間需求說法("在50ms以內",但若沒有準確的技術分析不能輕易下結論),這就可以實現了.
6: 劃分需求優先順序別
大多數項目沒有足夠的時間或資源來實現功能性的每個細節.決定哪些特性是必要的,哪些是重要的,哪些是好的,是需求開發的主要部分.只能由你來負責設定需求優先順序,因為開發者並不可能按你的觀點決定需求優先順序.開發者將為你確定優先順序提供有關每個需求的花費和風險的信息.當你設定優先順序時,你幫助開發者確保在適當的時間內用最小的開支取得最好的效果.在時間和資源限制下,關於所需特性能否完成或完成多少應該尊重開發人員的意見.盡管沒有人願意看到自己所希望的需求在項目中未被實現,但畢竟是要面對這種現實的.業務決策有時不得不依據優先順序來縮小項目范圍或延長工期,或增加資源,或在質量上尋找折衷.
7:評審需求文檔和原型
正如我們將在第1 4章討論的,無論是正式的還是非正式的方式,對需求文檔進行評審都會對軟體質量提高有所幫助.讓客戶參與評審才能真正鑒別需求文檔是否的確完整、正確說明了期望的必要特性.評審也給客戶代表提供一個機會,給需求分析人員帶來反饋信息以改進他們的工作.如果你認為編寫的需求文檔不夠准確,就有義務盡早告訴分析人員並為改進提供建議.通過閱讀需求規格說明,很難想像實際的軟體是什麼樣子的.更好的方法是先為產品開發一個原型.這樣你就能提供更有價值的反饋信息給開發人員,幫助他們更好地理解你的需求.必須認識到:原型並非是一個實際產品,但開發人員能將其轉變、擴充成功能齊全的系統.
8:需求出現變更要馬上聯系
不斷的需求變更會給在預定計劃內完成高質量產品帶來嚴重的負面影響.變更是不可避免的,但在開發周期中變更越在晚期出現,其影響越大.變更不僅會導致代價極高的返工,而且工期也會被迫延誤,特別是在大體結構已完成後又需要增加新特性時.所以一旦你發現需要變更需求時,請一定立即通知分析人員.
9:應遵照開發組織處理需求變更的過程
為了將變更帶來的負面影響減少到最低限度,所有的參與者必須遵照項目的變更控制過程.這要求不放棄所有提出的變更,對每項要求的變更進行分析、綜合考慮,最後作出合適的決策以確定將某些變更引入項目中.
10:尊重開發人員採用的需求工程過程
軟體開發中最具挑戰性的莫過於收集需求並確定其正確性.分析人員採用的方法有其合理性.也許你認為需求過程不太劃算,但請相信花在需求開發上的時間是"很有價值"的.如果你理解並支持分析人員為收集、編寫需求文檔和確保其質量所採用的技術,那麼整個過程將會更為順利.盡管去詢問分析人員為什麼他們要收集某些信息,或參與與需求有關的活動.
系統分析人員在開發過程中可能會遇到以下問題,一些很忙的客戶可能不願意積極參與需求過程,而缺少客戶參與將很可能導致不理想的產品.故一定要確保需求開發中的主要參與者都了解並接受他們的義務.如果遇到分歧,通過協商以達成對各自義務的相互理解,這樣能減少今後的摩擦.
7.需求文檔
需求開發的最終成果是:客戶和開發小組對將要開發的產品達成一致協議.協議綜合了業務需求、用戶需求和軟體功能需求.就像我們早先所看到的,項目視圖和范圍文檔包含了業務需求,而使用實例文檔則包含了用戶需求.你必須編寫從使用實例派生出的功能需求文檔,還要編寫產品的非功能需求文檔,包括質量屬性和外部介面需求.只有以結構化和可讀性方式編寫這些文檔,並由項目的風險承擔者評審通過後,各方面人員才能確信他們所贊同的需求是可靠的.
你可以使用以下三種方法編寫軟體需求規格說明:
用好的結構化和自然語言編寫文本型文檔.
建立圖形化模型,這些模型可以描繪轉換過程、系統狀態和它們之間的變化、數據關系、邏輯流或對象類和它們的關系.
編寫形式化規格說明,這可以通過使用數學上精確的形式化邏輯語言來定義需求.
由於形式化規格說明具有很強的嚴密性和精確度,因此,所使用的形式化語言只有極少數軟體開發人員才熟悉,更不用說客戶了.雖然結構化的自然語言具有許多缺點,但在大多數軟體工程中,它仍是編寫需求文檔最現實的方法.包含了功能和非功能需求的基於文本的軟體需求規格說明已經為大多數項目所接受.圖形化分析模型通過提供另一種需求視圖,增強了軟體需求規格說明.
如果解決了您的問題請採納!
如果未解決請繼續追問

⑶ 軟體測試工程師如何做好需求分析

軟體測試工程師如何做好需求分析

什麼是需求?
需求是產品必須完成的事以及必須具備的品質。
功能性需求
功能性需求是產品必須完成的那些事,要求一定的功能和品質。
例子:培訓機構的班主任可以給所在班級學員打考勤
非功能性需求
非功能性需求是產品必須具備的屬性或品質。諸如觀感、可用性、安全性和法律限制等。
例子: 平台用戶數為5萬人,每天登錄用戶數為10000左右,網路的帶寬為100M帶寬。在工作時間根據資料名稱條件進行搜索,可以在3秒內得到搜索結果。
這類需求通常在產品的功能確定之後(但並非總是如此)。也就是說,一旦知道了產品要做的事情,就可以確定它的行為方式,它需要具備什麼品質以及它的響應速度、可用性、可讀性和安全性。
限制條件
限制條件是全局性的需求。它們可以是對項目本身的限制,或是對產品最終設計的限制。
例子:南京平台必須在2010年開學的第一學期上線
客戶是在說,如果顧客不能在給定的時間前使用該產品,那麼它就沒有什麼用了。其效果是,需求分析師必須對需求進行限制,只包括那些在最後期限前能夠提供最大價值的需求。
需求分析的重要性
需求分析沒有做好的後果一般會有下列現象:
1、浪費時間和資源來滿足用戶並不需要的需求(過度實現一些功能);
2、開發出來的產品技術上先進,但不滿足用戶需求;
3、總是需要比較長的時間來達成對產品設計的.共識;
4、在產品設計,開發和測試工作中對於用戶需求的解釋不一致;
5、員工會厭倦因需求不斷被重新解釋而導致的返工;
6、未說明的或不正確的需求會導致員工與用戶間的不滿;
7、不穩定的產品,用戶的不滿意對我們未來的市場造成損失;
8、浪費時間,增加成本,使得在一些投標的項目中不能低價;
1、如果你在編碼的時候發現某幾行有誤,那麼改掉這幾行就行了。而如果在編碼階段發現需求有誤,那麼你很可能需要改變所有代碼來適應新的需求
2、在需求階段消除問題的代價最小,而如果需求問題等到產品發布出去後才發現的話,那修復的成本就會N倍的增加。
3、穩定的需求是軟體開發的關鍵。有了穩定的需求,軟體開發工作可能從結構設計到詳細設計到代碼到測試都會平穩順利的進行。
為什麼要做需求分析
1、“決策性”--要不要做這個產品,通過對市場需求的分析來決策項目是否需要立項;
2、“方向性”--良好的需求分析可以對項目人員明確方向,讓項目成員知道下面應該如何實施;
3、“策略性”--既然知道了為什麼要做需求分析,就需要了解什麼是需求分析,及如何做。需求分析並不是簡單的對與錯,比如說做一個產品,“做技術最先進的軟體,還是做最好賣的軟體”,這個需求有錯嗎,沒有,只能說需要從不同的地方去考慮,去定位。
如何進行需求分析
“ 需求分析”不代表“用戶要求什麼就是什麼”也不代表“我們能做什麼就做什麼”,做為需求人員,在進行需求分析的時候,首先應該明白用戶的需求,然後再加上 自己的分析處理過程,知道哪些我們現在能做,哪些我們做不了,哪些我們咬咬牙齒能做,需求人員在做需求分析的時候不能一味的成為客戶的傳話筒,要有自己的 分析。
一般可以從三個方面去考慮:
1、功能需求--產品應該完成哪些功能,即向用戶提供的功能,一般來說這個都是比較硬性的標准;
2、非功能性需求--用戶可能不能明確告訴你的一些需求,比如說性能達到什麼要求,可靠性方面,響應時間,擴展性,性能方面等,這塊的內容並不 是說用戶需要,而是說不知道需要做成什麼樣的,我們不能不做,做了只會對自己受益。要不然等到後期用戶使用感覺這慢,那不爽,那倒霉的還是是自己;
3、限制條件--在需求分析中需要考慮一些條件約束,規則等,比如客戶的約束,行業的約束,法律的約束以及自己的約束等,這些都需要在需求分析考慮清楚,要不然做出一款白人狂毆黑人的游戲給黑人玩,那就慘了……
測試需求分析的步驟
1 、 熟悉需求背景及商業目標:
a) 了解清楚項目發起的原因,是為了解決用戶的什麼問題。
b) 當前的解決方案是不是最優的,為什麼會這樣做?
2 、業務模型法:
a) 考慮本項目與外部系統的交互,劃分系統邊界(除了本項目的需求中要求做的事情,其他的都可以是外部系統,本系統和外部系統之間的交互就是系統的邊界),可以參考系統分析說明書。
b) 確定測試范圍和關注點。系統的邊界是測試的重點,特別需要關注邊界交互時的數據交互。 ;

⑷ 軟體測試從需求分析開始有什麼作用

首先肯定這個觀點,軟體測試確實需要從需求分析入手,但是,國內大多數的軟體公司的測試都是從集成測試開始的,甚至直接從系統測試開始,這樣做不符合一般的流程,但是也沒有什麼辦法,畢竟差距和國外有很大。
說說從需求分析開始的好處:首先,「盡早的了解被測系統」,這句經典的軟體測試原則就體現出來了,早入手,早了解,至於能否深刻了解,還是看需求評審做的是否充足;第二,如果在需求分析階段發現系統存在嚴重的Bug(此階段的bug最多),或者發現不可測的地方,可以及時的進行修改,避免了後期修改bug的巨大的成本浪費。以上兩點是最主要的方面,把握住這兩點就可以了。

⑸ 測試需求分析方法有哪些

什麼是測試需求?
確切地講,所謂的測試需求就是在項目中要測試什麼。我們在測試活動中,首先需要明確測試需求(What),才能決定怎麼測(How),測試時間(When),需要多少人(Who),測試的環境是什麼(Where),測試中需要的技能、工具以及相應的背景知識,測試中可能遇到的風險等等,以上所有的內容結合起來就構成了測試計劃的基本要素。而測試需求是測試計劃的基礎與重點。
就像軟體的需求一樣,測試需求根據不同的公司環境,不同的專業水平,不同的要求,詳細程度也是不同的。但是,對於一個全新的項目或者產品,測試需求力求詳細明確,以避免測試遺漏與誤解。
為什麼要做測試需求?
如果要成功的做一個測試項目,首先必須了解測試規模、復雜程度與可能存在的風險,這些都需要通過詳細的測試需求來了解。所謂知己知彼,百戰不殆。測試需求不明確,只會造成獲取的信息不正確,無法對所測軟體有一個清晰全面的認識,測試計劃就毫無根據可言。活在自己世界裡的人是可悲的,只憑感覺不做詳細了解就下定論的項目是失敗的。
測試需求越詳細精準,表明對所測軟體的了解越深,對所要進行的任務內容就越清晰,就更有把握保證測試的質量與進度。
如果把測試活動比作軟體生命周期,測試需求就相當於軟體的需求規格,測試策略相當於軟體的架構設計,測試用例相當於軟體的詳細設計,測試執行相當於軟體的編碼過程。只是在測試過程中,我們把「軟體」兩個字全部替換成了「測試」。這樣,我們就明白了整個測試活動的依據來源於測試需求。
測試需求的收集主要通過對測試依據進行分析整理,最後生成一個以測試的觀點出發的checklist(檢查表),用來作為測試該軟體的主要工作內容。檢查表的檢查要點包括需求的正確性、必要性、優先順序、明確性、可測性、完整性、一致性、可修改性:
在整個信息收集過程中,務必確保軟體的功能與特性被正確理解。因此,測試需求分析人員必須具備優秀的溝通能力與表達能力。
以上主要描述了測試需求相關理論和獲得測試需求樹的一般過程。為具體項目實施測試中提供了一套獲取測試需求樹的參考方案。實際的測試類型劃分和測試需求樹生成的形式或粒度,因項目而不同,需靈活應用。

⑹ 在軟體測試中什麼叫需求定義我要詳細敘述謝謝!!!大家~!~(^_^)

軟體工程一直以來都缺乏一個統一的定義,很多學者、組織機構都分別給出了自己的定義:

Boehm:運用現代科學技術知識來設計並構造計算機程序及為開發、運行和維護這些程序所必需的相關文件資料。

IEEE:軟體工程是開發、運行、維護和修復軟體的系統方法。

Fritz Bauer:建立並使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟體的一系列方法。
目前比較認可的一種定義認為:軟體工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。

軟體工程學的內容
軟體工程學的主要內容是軟體開發技術和軟體工程管理.
軟體開發技術包含軟體工程方法學、軟體工具和軟體開發環境;軟體工程管理學包含軟體工程經濟學和軟體管理學。

軟體工程基本原理
著名軟體工程專家B.Boehm綜合有關專家和學者的意見並總結了多年來開發軟體的經驗,於1983年在一篇論文中提出了軟體工程的七條基本原理。
(1)用分階段的生存周期計劃進行嚴格的管理。
(2)堅持進行階段評審。
(3)實行嚴格的產品控制。
(4)採用現代程序設計技術。
(5)軟體工程結果應能清楚地審查。
(6)開發小組的人員應該少而精。
(7)承認不斷改進軟體工程實踐的必要性。
B.Boehm指出,遵循前六條基本原理,能夠實現軟體的工程化生產;按照第七條原理,不僅要積極主動地採納新的軟體技術,而且要注意不斷總結經驗。
軟體工程(SoftWare Engineering)的框架可概括為:目標、過程和原則。
(1)軟體工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟體產品達到預期功能的程度。可用性指軟體基本結構、實現及文檔為用戶可用的程度。開銷合宜是指軟體開發、運行的整個開銷滿足用戶要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
(2)軟體工程過程:生產一個最終能滿足需求且達到工程目標的軟體產品所需要的步驟。軟體工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟體需求規約。需求分析生成功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟體系統結構,包括子系統、模塊以及相關層次的說明、每一模塊的介面定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執行的程序代碼。確認活動貫穿於整個開發過程,實現完成後的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。
(3)軟體工程的原則是指圍繞工程設計、工程支持以及工程管理在軟體開發過程中必須遵循的原則。

⑺ 怎麼能看懂軟體測試需求

軟體測試的需求需要你有一套思維邏輯:

我教給你一些方法:

  1. 去看產品的PRD文檔,一般的PRD文檔都會包含產品的流程圖以及原型圖,這些圖會幫助你理解這個產品的流程和邏輯,根據邏輯設計相關的TC。

  2. 看懂產品需求,要定位好這個產品的背景、目的、參與人員,為誰服務,這樣你才能理解這個產品是幹嘛的,知道是幹嘛,自然很容易理解它需要提供哪些功能。

  3. 從服務客戶的角度考慮,作為服務某種客戶的需求,它應該具備哪些能力,這樣可能不僅僅你能看懂需求,同時也能給需求提出相關性不足的問題,成為更加專業的測試工程師。

⑻ 什麼是測試需求

所謂的測試需求就是在項目中要測試什麼。我們在測試活動中,首先需要明確測試需求(What),才能決定怎麼測(How),測試時間(When),需要多少人(Who),測試的環境是什麼(Where),測試中需要的技能、工具以及相應的背景知識,測試中可能遇到的風險等等,以上所有的內容結合起來就構成了測試計劃的基本要素。而測試需求是測試計劃的基礎與重點。

軟體測試培訓老師也經常說,就像軟體的需求一樣,測試需求根據不同的公司環境,不同的專業水平,不同的要求,詳細程度也是不同的。但是,對於一個全新的項目或者產品,測試需求力求詳細明確,以避免測試遺漏與誤解。

(8)軟體測試怎樣理解需求擴展閱讀

如果要成功的做一個測試項目,首先必須了解測試規模、復雜程度與可能存在的風險,這些都需要通過詳細的測試需求來了解。所謂知己知彼,百戰不殆。

測試需求不明確,只會造成獲取的信息不正確,無法對所測軟體有一個清晰全面的認識,測試計劃就毫無根據可言。活在自己世界裡的人是可悲的,只憑感覺不做詳細了解就下定論的項目是失敗的。

測試需求越詳細精準,表明對所測軟體的了解越深,對所要進行的任務內容就越清晰,就更有把握保證測試的質量與進度。

⑼ 軟體測試需求分析有什麼作用呢

軟體測試需求分析的作用
1. 了解整個軟體的需求,明確軟體需要實現的具體功能
2. 為設計軟體測試方案、測試計劃提供依據
3. 仔細、詳盡的分析,可以更好的挖掘深層次的需求
4. 更早的暴露需求中存在的問題,減少時間和開發成本
5. 梳理測試流程、要點、難點,為設計測試用例提供思路和依據,方便測試過程的執行
6. 提供衡量測試覆蓋率的一個標准