JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Engineering  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:測試是開發的第一步? [Re:qing]
singlelog

換回來



發文: 416
積分: 6
於 2003-10-16 04:18 user profilesend a private message to usersend email to singlelogreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
qing wrote:
在有限的時間內, 依據測試的計畫, 找出系統不符合規格的地方.

在 User 操作面上, 基準是 Use Case Specification 以及環繞 Use Case 的其他規格性文件. 對 unit testing 來說, 準則是 design document.

Unit Testing, Integration Testing, Regressing Testing, User Acceptance Testing. User 不會覺得測試類型不夠, 他會覺得測試怎麼不完整, 還有一堆毛病. 對了, 還有 stress testing.

test scenario 常常不夠. 所被排入測試的時間不夠久. 測試環境不夠, 或是不能逼近 production environment. 環境的不一致是測試的天敵.

測試時間大概佔開發週期三分之一到一半才會穩定. 不管你時間排多久, 他大概就是要這麼久才能夠穩定下來.

時間很難 plan, 通常會用 test scenario 的數量來看. 不過這是假設 programmer 天生英才, 一下子就能改完, 沒有遇到很難改的 defect. quality 的好壞, "理論上" 可以用各工作日找到的 defect distribution 來判斷. 有人還會畫依據 severiy 的圖.

測試怎樣才算做完? 時間到了就做完了呀 Big Smile 雖然我們都知道要有通過的標準, 比方 severiy 幾以上的不能超過幾個之類的.

這裡指的 defect 資料是指什麼?

有的, 1:2

有的, 有一定的 test case 撰寫流程. 當然 test case 也是從 use case 來的. 包含那些章節? 可以不要說嗎? Big Smile

搞了老半天,是我們兩個兄弟對談。Smile

好啦,因為這個thread冷掉了,我又要開始忙了,所以自己先提出我的看法好了。

1.你認為測試的目的是什麼?
我同意qing的看法。果然兩個人一起工作久了,共識會越來越高。Smile

我也認為測試是為了要找出系統跟規格不一致的地方。問題是我們再進行測試時,常常會有人不是這樣想。

例如UAT時,tester會被user challenge:『你們認為這樣子的系統合理嗎?』 『這符合我們商用系統的常態嗎?』當你的工作牽涉到主觀的評理時,其實就不是在做testing,而是在review requirement。然而,我們做測試的重點,不應該是在做requirement collection。光是確定系統是否符合spec,就已經做不完了。

這並不是說tester不能發現design/analysis的漏洞。只是說testing主要的功能,是在確定系統是依據規格來施工。至於規格是否是正確的,並不是testing最重要的重點。

2.你在進行測試個案設計時,基準又是什麼?你認為測試應該是base on analysis document, design document, or...?

事實上,我覺得當你在做白箱測試時,你的base是design document。再做黑箱測試時,你的base是analysis document,做灰箱測試時,你的base是sa+sd document。

什麼時候會做白箱測試呢?通常我們會在unit test,以及用robot, test program針對某個module/sub system的interface去做測試時,會做白箱測試。也就是說,會依照程式應該follow的邏輯,去測試每個可能的排列組合是否被cover到。

什麼時候會做黑箱測試呢?當我們透過user interface進行功能性的測試時,或是用real data 模擬真實狀況,沒有特別設計資料進行integration test時,這時候我們會假裝我們不了解系統的設計,完全從需求面去看待系統的behavior是否符合我們的預期。

灰箱測試是選擇性的黑箱測試。這是當我們了解程式設計邏輯後,我們在進行黑箱測試的測試個案設計時,會特別依照程式的邏輯來進行黑箱測試的測試個案設計。一般而言,在internal進行alpha test/function validation test/ integration test時,我們不會把系統當成真正的黑箱,因為這樣進行測試時的代價太高了。通常只有在UAT時,user才可能會把系統當作黑箱來進行測試。

舉個例子好了。有個欄位X,合理的data range是從1 ~ 65536。
在程式裡面,在X > 100時,會有特別的處理。
白箱測試會特別針對X> 100, X <= 100的狀況去設計測試資料。來看所有的條件判斷是否正確。所以可能會去測的資料是(99,100,101)

黑箱測試則通常會輸入下列值去看系統的behavior(-1,0,1,2,99,100,101,65535,65536,65537,abc...)

灰箱測試大概就只會看看(-1,0,1,2,99,100,101,65535,65536,65537,abc)

這裡會有一個衍生的問題,怎麼確定design document跟analysis document相符?怎麼確定analysis document是正確的,而且cover的夠完整?前幾天biologic認為
Biologic wrote:
利用 UI 測試出自己的 requirement 完不完整, 正不正確.

在 design phase 建立 test scenario, 然後經由 test scenario 來比對自己的 deisng 跟 analysis artifact 有沒有錯誤的地方(quote from悄悄話)

我個人認為,通常我們要解決這個問題,是透過review的機制來進行。如果要測試 design是否正確,這就牽涉到resource && schedule的問題了。test case的design,應該要經由另外一個獨立的test team來進行。

這個team必須以獨立的思考方式來規劃怎麼進行測試。最好不要讓designer本人來design test case,以避免有些時候,在做design的人會陷入一個固定的窠臼裡面,就會找不出自已的問題。人手不夠或是沒有test team時,team member應該要交叉,你來想怎麼測試我寫的,我來想怎麼測試你寫的。這樣會比較適合。

如果像biologic所建議的,在analysis/design完了以後進行測試,這樣的好處確實是可以先期發現問題。不過要考慮的就是對於resource跟schedule的impact。既然你希望早期發現問題,可是design的test,還是要讓獨立的test team 來design test case。也就是說這個test team需要等到design結束後,才能開始進行test case design。這在時效上會有影響。況且test team不光是要進行design的test case design,還要在同時進行coding的test case design。這樣子在人力與時間上都會有impact。

我建議折衷的方法是,進行test case review。邀請SA/SD都要列席review。雖然review並不容易落實,可是這樣子可能在實務上會比較有可能辦得到。

3.通常在你所參與的專案裡面,你們會做那幾種類型的測試?你覺得夠嗎?user覺得夠嗎?

我通常會做的是unit test(做的通常不 solid,除了沒有採用JUnit以外,很難去verify才是管理上的問題。可是如果連unit test 的scenario也要reivew,這樣子可能會死人Tounge。)、system integration test、system test、UAT、pilot run、load test、regression test。某些時候會特別做stress test。

做這麼多種,其實user不知道我們到底做了些什麼。像qing講的,通常是test case cover的scenario夠不夠多的問題。

不過我本來這個問題是要問大家的。Smile

4.在做測試時,你們所遇到最大的問題在哪裡?

我遇到最大的問題是,大家都低估測試的effort。

第一個就是真正測試所花的時間遠超過預期。一開始預估的測試時間根本不夠,後來估計時還是太樂觀。

另一個大問題是,沒有足夠又 qualified的tester。台灣人那種寧為雞首不為牛後的觀念很重。tester在軟體公司通常被當作二等公民。很多老闆都認為tester不需要什麼太高深的know-how。(修正一下,軟體公司內,除了很有概念的tester以外,幾乎每個人都這樣想。)

5.你認為測試的時間應該佔整體開發時間大概多長?如果你是iterative的開發,大概要佔整個iteration的幾分之幾?waterfall呢?一開始預計的時間跟後來真正的時間有很大的差距嗎?如果有的話,你覺得問題出在那裡?

嗚...老師,qing偷抄人家的答案。Smile

我認為新的案子的話,測試時間通常要佔project time的二分之一,系統才會真正的穩定下來。做現有案子的改寫,或是公司一直都做同類型的專案的話,這個時間可以縮短。用iterative的話,要看在哪個iteration,要做哪些測試。早期的iteration,可能要測的東西比較單純,可是到了越後來的iteration,雖然東西incremetal的增加了,可是testing還是要cover先前已經test ok 的部分,以找出有沒有side effect。所以類似robot的 automatic testing tool會很有用。我自己的看法是應該也是佔1/3 ~ 1/2。(我只有做過幾個iterative的專案,走的也沒有非常follow rup,所以數據僅供參考。)

通常我估這麼長的測試時間,都會被狠砍。不是我估的話,就比較少人估這麼久。不過大多數被砍掉後的預估時間跟實際執行時間都有很大的落差。問題我剛剛提過了原因。

6.你們會怎麼去plan測試所需要的時間與所要投入的人數?怎麼判斷現在的quality好壞?在專案一開始時,怎麼預估?quality有沒有什麼明確判斷的指標?否則怎麼宣告測試已經做完了?

plan的這個問題我沒有標準答案,因為我們的testing team人太少,要測的東西太多。所以programmer : tester大概是10+ :1。不過因為programmer會兼任unit test的tester,所以大概可以算是5+:1。時間我通常抓整個duration的一半。我通常判斷的法則是SA+SD : coding : testing = 2 : 1 : 3。

希望人數最好是tester : programmer = 1 : 2或是可以達到1:1。

判斷 quality的好壞。我通常是看defect成長的速率是否趨緩,defect累計數目vs時間曲線是否漸漸收斂?high severity defect數量有沒有降下來的趨勢?

預估的方式大概是先抓coding時間,再反推回來。

另外一個常用的宣告這次的test cycle已經結束的判斷法則,是執行完所有預計執行的test case後,所有severity 3以上的defect都已經被解掉了。並且每個解掉的patch,都有小規模的驗證過沒有 side effect(通常會選擇幾個 major scenario做regression test)。

7.你們會收集那些defect資料?收集到defect資料以後,接下來呢?

我會收集:defect submit時間/developer/subsystem/severity/status/fixed date/tester/symptom/reproduce procedure/expected behavior

收集到之後會請tester去follow defect status。接著我會定期觀察整個系統的bug 分布(overall/by subsystem /by programmer)。接著可能會視狀況安排code review/design review/test case review。

至於background information的部分,我大概說的差不多了。只剩下test case的部分。

test case裡面通常會有test case number/test data/scenario/expected result/associated test scripts, test data creation scripts...

嗯,好像還漏了很多可以討論的主題,像是test data , enviroment ...很多 topic可以討論。想睡了,就先這樣先。


reply to postreply to post
我的書:專案管理Happy書!

我的網站:diggirl.net

my blog http://tinyurl.com/36gcye
話題樹型展開
人氣 標題 作者 字數 發文時間
41267 [精華] 測試是開發的第一步? worookie 284 2003-10-12 16:32
38291 Re:測試是開發的第一步? singlelog 731 2003-10-14 00:00
37256 Re:測試是開發的第一步? Biologic 1237 2003-10-14 10:18
37780 Re:測試是開發的第一步? Biologic 889 2003-10-14 11:33
38528 Re:測試是開發的第一步? qing 1563 2003-10-15 15:53
40137 Re:測試是開發的第一步? singlelog 5623 2003-10-16 04:18
37073 Re:測試是開發的第一步? Biologic 5626 2003-10-16 10:18
36710 Re:測試是開發的第一步? singlelog 1850 2003-10-16 11:37
36964 Re:測試是開發的第一步? arthuroy 2576 2003-10-16 02:29
36568 Re:測試是開發的第一步? weihuo 214 2003-10-22 15:37
36429 Re:測試是開發的第一步? weihuo 240 2003-10-22 15:49
36556 Re:測試是開發的第一步? singlelog 235 2003-10-22 16:05
36407 Re:測試是開發的第一步? weihuo 106 2003-10-23 12:23
37483 Re:測試是開發的第一步? singlelog 600 2003-10-28 12:53
34297 Re:測試是開發的第一步? dadaoshan 1147 2004-10-26 18:10
33559 Re:測試是開發的第一步? 新手上路 706 2005-01-05 03:41
34658 Re:測試是開發的第一步? pychang 293 2005-10-16 14:36
36820 Re:測試是開發的第一步? platstar 148 2003-10-12 23:08
36725 Re:測試是開發的第一步? Biologic 251 2003-10-12 23:29
36742 Re:測試是開發的第一步? popcorny 241 2003-10-12 23:35
36583 Re:測試是開發的第一步? platstar 190 2003-10-13 23:11
36951 Re:測試是開發的第一步? metavige 599 2003-10-13 14:44
38862 Re:測試是開發的第一步? popcorny 587 2003-10-12 23:29
36845 Re:測試是開發的第一步? tempo 428 2003-10-13 11:34
37530 Re:測試是開發的第一步? singlelog 1300 2003-10-13 12:09
36775 Re:測試是開發的第一步? Biologic 509 2003-10-13 14:33
36695 Re:測試是開發的第一步? JustJava 5 2003-10-14 12:16
36658 Re:測試是開發的第一步? singlelog 110 2003-10-14 12:18
36603 Re:測試是開發的第一步? anthonychen 125 2003-10-14 12:19
36681 Re:測試是開發的第一步? singlelog 284 2003-10-14 12:27
36703 Re:測試是開發的第一步? JustJava 441 2003-10-14 12:28
36729 Re:測試是開發的第一步? singlelog 1387 2003-10-14 12:59
36571 Re:測試是開發的第一步? Biologic 1140 2003-10-14 13:53
36804 Re:測試是開發的第一步? singlelog 1100 2003-10-14 14:31
36646 Re:測試是開發的第一步? Biologic 1131 2003-10-14 14:40
36723 Re:測試是開發的第一步? singlelog 348 2003-10-14 15:34
36510 Re:測試是開發的第一步? Biologic 80 2003-10-14 14:49
36561 Re:測試是開發的第一步? arthuroy 415 2003-10-16 02:40
36728 Re:測試是開發的第一步? JustJava 484 2003-10-14 13:32
36671 Re:測試是開發的第一步? singlelog 408 2003-10-14 15:39
36465 Re:測試是開發的第一步? Biologic 324 2003-10-14 17:24
36653 Re:測試是開發的第一步? JustJava 191 2003-10-14 13:39
36626 Re:測試是開發的第一步? weihuo 1049 2003-10-17 10:04
37444 Re:測試是開發的第一步? singlelog 2837 2003-10-20 00:42
36458 Re:測試是開發的第一步? weihuo 1018 2003-10-20 10:38
36602 Re:測試是開發的第一步? singlelog 1424 2003-10-20 11:09
36468 Re:測試是開發的第一步? qing 511 2003-10-21 22:47
36717 Re:測試是開發的第一步? singlelog 400 2003-10-22 10:16
36462 Re:測試是開發的第一步? weihuo 343 2003-10-20 16:44
36528 Re:測試是開發的第一步? Biologic 455 2003-10-20 17:37
36749 Re:測試是開發的第一步? singlelog 918 2003-10-20 19:43
» JWorld@TW »  Software Engineering

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8