基本上系統廠商為了保障自己的商譽,所以自己內部可以會先針對系統的弱點(因為系統是自己設計的,所以自己會比較清楚弱點在那邊)進行壓力測試。等到一切都沒有問題了,才會把系統交付到客戶的手中,再依客戶所提的需求來進行壓力測試。
經過了這麼多的測試,沒有測出系統重複給位的問題,這是誰的問題?首當其衝的,高鐵應該要負第一個責任,但說老實話,我不覺得高鐵的責任最大,User之所以為User就是因為他沒有能力成為Developer。或者換一個角度來說,高鐵的主力應該是focus在他在高速鐵路的經營管理上面,這才是他們的專業。因此系統維運應該是高鐵系統技術部門的責任,但談到系統開發,他們沒有那麼熟悉倒是可以被接受的。
「測試」是系統開發中重要的一環,個人設計撰寫的程式,都免不了要自己先小測一下;而多人共同開發的系統程式,測試就更不可或缺,以避免初期規劃上的瑕疵。不過,測試的廣度與深度會隨著測試者本身的經驗有很大差異;同樣的系統、同樣不是自己撰寫的程式,有些測試者沒有辦法發現系統中的漏洞,可是較有經驗的測試者往往一測就可以抓出一些罕為人知的問題。
台灣的系統廠商有時候會很不重視這一個測試這一個環節,因為「測試」本身看起來並不具生產力,所以往往是程式寫完了就直接丟給使用者去測,但不幸的,使用者並不一定十分了解這一個系統規劃,因此測試的時候,也頂多UI(User interface,使用者操作介面)測一測看有沒有順就好了,至於系統運作上的盲點,一般的使用者是沒有能力去測的。
所以問題還是回歸到系統開發廠商身上,測試人員是否有足夠的經驗來規劃及進行系統全面性的測試?還是他們只是跟一般的使用者一樣,使用者介面測一測就放行了呢?如果真的測得夠深入,方式也夠全面,那為什麼會有重複劃位的情況產生呢?我想台鐵售票系統這個案例不只在系統設計與開發上是一個好的提醒,也在「測試」的這一件事上是一個好的教案。
是故,談到高鐵售票系統的測試,ㄟ…我相信高鐵人員應該是有測過,也應該對UI做了很多調整—所以他們才可以在維運後,很順利地操作系統、很用力地賣票,甚至連賣出重複劃位(而且還劃了三次)的票還渾然不知。
只不過,開發廠商的測試人員可能也對會有話要說:「…專案經理交待的測試我都做了啊!…」
專案經理的責任?
專案管理中,專案規格確認與風險掌握是專案成敗的關鍵因素。所以理論上,在專案規格的部份,專案經理或多或少會參與系統分析師的作業以確保規格上沒有瑕疵;而在風險管理的部份,專案經理應該盡可能地把可能造成風險的例外狀態的預想出來,以做好風險的管理,必要時透過測試的規劃以減少例外狀況的產生。
那高鐵售票系統的「一位三賣」算是「例外」還是「常態」呢?這就是這一個案例有意思的地方。售票系統「一個位子不可以賣三次」這個規範,對於老經驗的技術人員而言根本是 common sence ,所以有可能不會在規格(spec.)上特別去規範,對風險管理與測試規劃的部份,因為是「common sence」所以理論上它是一個「常態」,因此具有規劃經驗的專案經理應該不會把這樣的「常態」條列在風險管理之中。
這個案子很「神」的地方就在於一般被認為是「常態」卻成了「例外」。不過,如果專案經理的經驗夠豐富,一開參與軟體規格制定的時候,他就會事先意識到這樣的問題,所以即使是視為「common sence」而沒有特別定義在文件中,也會利用先前的規格制訂作業或之後的壓力測試來把這個問題突顯出來。
在什麼樣的情況,專案經理會沒有注意到這些問題呢?第一種、在專案經理過度信任系統設計、開發、測試人員。第二種就是專案經理其實沒有足夠的軟體開發專業知識或經驗以至於他有足夠的敏感度來「發現」這個問題。我不是很確定高鐵售票系統的開發廠商所面臨的是什麼樣的難處,不過,上述的第二種情況是滿值得被探討的。 (未完,請繼續最後一頁)
繼續閱讀: 人員的素質才是關鍵>>
26.蓓蓓 於 2008/11/12 11:59 回應
這家軟體公司是翱騰嗎?25.匿名 於 2007/09/22 09:08 回應
高鐵售票系統的委外廠商其品管和測試部分,是某家南軟園區內輔導CMMI的廠商所輔導的,結果是一團亂,原因在於該顧問公司雖然號稱是軟體工程專家,但實際上卻是個只做過測試,沒有實際專案開發經驗的人,自然是會失敗囉!24.肯得雞 於 2007/08/24 12:26 回應
這不是售票系統而是自動收費系統
所以流程比一般的售票系統複雜
另前面幾位說的很對
這不是資料庫的問題
而是區間票未考慮周詳造成
學校教是很基本的
而如何活用這些東西
甚至更上一層樓
又是另一個門檻
23.lulu 於 2007/08/06 13:40 回應
我只知道我去買票時問題一堆~網路預訂的票要前30分鐘取~~可是未取的並無法立即拋出給等待買票的人...重點好不容易從台南回台北都沒位子的情況下,買了三小時後的一班台南到台中..想說從站回來好了(別問我為何不改搭客運..因為高鐵都蓋在鳥不生蛋的地方..抱小孩又拖行李再回市區坐也很累)...又回說不能喔~~會罰錢..很危險~~可是真的再下去小孩快受不了了...只好硬坐...結果是..車上有一堆空位回台北..都有地方坐..不知道他們的票務系統是怎樣規劃的呀?王今坐過三次都一肚子鳥氣~~22.路人 於 2007/08/04 15:03 回應
推好文……還是比較喜歡這一篇………
一個系統專案的運作本來就是一個team work 的關係,高鐵系統的問題,在這個專案下的成員是誰都推不了責任……專案經理、DBA、程式設計師、系統分析師、測試人員都有他們自己在這個專案中應該盡的本份……也在這個team work 的關係下,讓專案中的成員可以彼此互相地互補與支持,好讓專案可以順利的完成……
如作者所說的:「……想想看,同樣在CMMI的流程規範下,如果換上另外一組比較有經驗的技術人員?測試人員?或者專案經理呢?或許就會是另一個故事了。從上述的討論中,我們會發現,技術人員、測試人員以及專案經理三者之一,只要其中之一(其它兩者都可以不需要)有意識到這問題,其本上就不會有「一位三賣」的情況了……」
三組人馬中,只要有其中一組,想到這一個問題,一票三賣的情況,應該就不會發生了……
這也是這個案子好玩的地方……這三組人員為什麼都沒有意思到這個問題?
要死不死,這三組人員的經驗都不夠嗎?(不太可能吧,這是國家級的專案耶)
還是三組人員都無心是這件事上呢?
是誰(或者什麼因素)造成了這三組人員在同一個案子上都沒拿出應有的品質呢?
看得出來,這作者好像有點想避而不談這個問題……
不過他也留下了反省的空間………
21.看戲的 於 2007/08/03 13:00 回應
從高鐵談大型公共建設軟體開發專案(上)-連結
從高鐵售票系統談大型公共建設軟體開發專案(下)-
連結
20.DuanSun 於 2007/08/03 09:22 回應
高鐵這個案子在台灣軟體業引起這麼大的事件,既然大家這麼關心這個案子,如果高鐵同意的話,也許開發商可以考慮乾脆開個研討會,跟大家分享這個案例,總比大家你一言我一語的妄自推斷來得好,多麼具影響力的活教材,值大家瞭解,提升台灣整體軟體專案的經驗,也許有點糗,大家都在討論他們的缺失,但我想他們一定有考量到其他我們不知道的因素,所以乾脆開誠佈公吧.19.匿名 於 2007/08/02 22:37 回應
對於作者的觀點文中作者沒有考慮的Muti_thread的觀念
高鐵的訂票程式90%以上是Muti_Thread的開發方式
不是Signal_Thread可以解決的來
這一種狀況不得不多在Muti_Thread的狀況之下
有部份的邏輯是沒考慮到Lock的問題
而且這樣問題也不一定會在StressTest或Integation Test的狀況之下測的出來