如何找出Legacy Code中的Bad Smells

Smells Like Legacy Code
http://www.testearly.com/2006/12/14/smells-like-legacy-code/


如果你要知道你程式碼中的健康狀態, 你要如何檢查呢?

就像身體健康檢查一樣, 你必要知道你想檢查哪些問題(肝臟, 心臟或是過敏等等), 接著再看有哪些index可以呈現相關的狀態, 然後健檢人員會使用工具來做檢查, 最後你就會拿到一堆數據, 並且告訴你在哪個範圍內是好的, 還是有問題的. 如果真的是有問題, 醫生還會告訴你, 要做什麼事情會讓情況好轉.

對於程式碼也是一樣的, 你要先知道你想看的bad smells是什麼, 接著就看有怎樣的index, 可以表達目前的狀態如何. 然後你就用一些tools來parse source codes, 看看它的狀態如何. 如果不是很好, 這時候一些refactoring 或是design pattern, 便可以來應用看看.

作者列了三個samples讓大家看看, 並且告訴大家說他已經開始收集這些資料, 希望他功能圓滿的那天, 可以分享給我們知道.
1.
Smell: Conditional Complexity
Measure: Cyclomatic Complexity
Tools: IDE, CCMetrics, Source Monitor, JavaNCSS, Eclipse Metrics
Refactoring: Extract Method, Extract Class, Replace Conditional with Polymorphism
Pattern: Abstract Factory, Strategy

2.
Smell: Long Method
Measure: Number of Lines in Method
Tools: IDE, PMD, Eclipse Metrics, CheckStyle, Source Monitor, FxCop
Refactoring: Extract Method
Pattern: Abstract Strategy

3.
Smell:
Measure: Depth of Inheritance (DIT)
Tools: IDE, PMD, Source Monitor
Refactoring: Replace Inheritance with Delegation, Pull Up/Push Down Method
Pattern: Delegation



kojenchieh 發表在 痞客邦 留言(0) 人氣()

Can Test Automation Tools Replace The Human Testers?
http://software-testing-zone.blogspot.com/2008/10/automation-tools-replace-manual-testers.html

Oct 22th, 2008
Posted by Debasis
Published in Software Testing Zone

kojenchieh 發表在 痞客邦 留言(2) 人氣()

Money雜誌專欄摘錄
- 2008/12

多賺一份薪, 多存一口糧
by 李美虹

經濟不景氣時, 除了省著用錢外, "開源"絕對是最好的因應方式.

只是想賺兩份薪, 也並非輕而易舉.如果正職工作是朝九晚五, 那麼還比較容易. 如果正職已經忙得不可開交, 勢必也會排擠掉兼差的時間. 這時候就一定要找"高時薪"的兼差工作, 才能在正職以外如願開闢另一個薪水帳戶

兼差通常有兩種, 一是多賺一份薪, 一是為下一份工作鋪路. 若是以錢的角度來說, 只要妥善運用兼差外快, 對於提升生活品質, 財富累積的速度, 都會有正面效益. 若是為下一份工作鋪路, 除了考量薪水, 時間彈性等客觀條件外, 就得要再評估兼差工作的未來發展性, 縱使錢少或者辛苦些, 但只要對未來轉職有加分效果,  就值得嘗試.


值得我危機入市的幾檔股票
by 童再奧

危機入市三戰略. 資金分"235分配法則"入場:
20%在4000點以上進場, 被套牢也無所謂
30%在4000點以下進場
50%等W底出現才進場

(
註: W底
股票的價格在連續兩次下跌的低點大致相同時,形成的股價走勢圖形,又被稱為雙重底。兩個最低點的連接線叫做支撐線。雙重底的特點是,兩個低價支撐點位置相當,而且整個股價走勢中,股價的變動與成交量的變動向同一個方向變動。

雙重底的二個谷底是市場對價格底限的測試,經過二次測試不破顯示測試成功,代表市場認為的低點。但測試成功不代表價格便會反轉,價格須在頸線帶量突破,則趨勢的反轉型態才告確立。
)


度過景氣寒冬的3個對策
by 林奇芬

以目前各大經濟機構對2010年的經濟預測普遍都高於2009年, 經濟情勢很有機會在2009年打底, 2010年回升. 因此如何面對未來挑戰的一年呢?
1. 防失業, 最好準備6個月到一年的生活準備金
- 未來一年各行各業可能面臨減薪或失業危機, 要先準備好生活準備金
- 建議把金額拉高到6個月到一年, 以活存或定存方式持有

2. 減少頻繁的投資, 別讓手續費吃掉你的錢
- 每一次投資都要非常謹慎, 最好降低投資頻率, 不要賠了價差又賠了手續費

3. 存知識, 累積未來賺錢能力
- 要積極充實理財知識, 深切檢討自己投資的盲點與衝動, 密切掌握經濟環境的變動, 才能領先掌春暖花開的到來

kojenchieh 發表在 痞客邦 留言(0) 人氣()

如何學習white box testing

How to learn white box testing
http://www.michaeldkelly.com/blog/archives/214

在討論一個好的QA要具備什麼條件時, 曾經提到QA要能懂code, 要能做white box testing. 可是對於大部分的QA來說, 這對他們來說是一個很大的挑戰. 如果你是科班出身, 我想應該會比較簡單. 但如果非科班出身, 那確實有很多東西要學

以下是一些建議方向
1. Learn the basics of computer science
我想有些入門的compter science科目是值得學習一下, 像是data structure, operating system, database, assemblers, compilers, interpreters, algorithms, software engineering 和 discrete mathematics. 這些都是科班生都要學習的科目.
不要認為他們太專業了, 這些對於提昇你內功有很大的幫助. 但是千萬要記住, 通常越是基本功, 練起來都是越枯燥, 越無趣.

2. Get comfortable working in a language
C#是個值得學習的語言, 尤其如果你的受測軟體只在Windows平台上, 那更是要學. 基本上它能support的功能, 提供的程式庫應有盡有, 再加上它其實很popular, 學了不會有害處.
如果是跨平台, Perl還是首選, 畢竟用的人還是最多, 該有的modules, resources, 和examples都十分全, 要會Perl的工作也算不少.
作者本身是比較喜歡Ruby. 他自己本身學過Pascal, C, C++和Java
但是不管你選擇哪種語言, 最重的是要能夠很順暢的運用它. 即使你無法寫出複雜的程式碼, 但至少你也要能看懂它

3. Practice writing unit tests, stubs, and harnesses
再學習一個程式語言時, 最好的方法是一直練習它. 那寫unit test, stub, 和harness便是一個很好的選擇.
因為這些東西可以不用寫的太複雜 (因為你可以自行決定要做到多少), 但是它提供很好的練習機會. 並且也可以幫助你測試工作的進行, 因為你可以藉由它控制你想要的測試狀況(這正是使用mock object的好時機).

4. Download and play with tools
用tool當然很需要, 它可以幫助加速你工作的進行.
尤其是你要做一些分析的工作時, 像是network packet monitor, performance monitor, code coverage tool, memory usage monitor, static analysis tool等, 都可以讓你快速的得到你想要的答案. 否則這些工作若只是manually的進行的話, 你可能會瘋掉
作者認為你在opensourcetesting.org., 應該可以找到不少好工具幫你

5. Learn about security testing
作者認為security testing是white box tester的終極挑戰, 因為他不但要有 security的knowledge外, 你還要懂code, 並且其他computer science的knowledge也都是要懂. 這樣當你發現線索時, 才能搭配相關的knowledge找出答案.
作者推薦了一個不錯的網站 Open Web Application Security Project (OWASP), 可以幫助你做security testing, 大家可以去看看
http://www.owasp.org/index.php/Main_Page


kojenchieh 發表在 痞客邦 留言(0) 人氣()

什麼時候測試可以停止?


什麼時候已經測夠了, 可以停止了,  這個問題是QA常常會被問到的, 也是其中一個不容易回答的問題. 可是這也是你無法逃避的問題, 因為每次product 要release時, 你就要面對一次, 即使沒有人問你, 你自己也會問自己是不是可以出貨了.


以下是常見的的criteria
1. All the high priority bugs are fixed.
- 這通常是最重要的, 如果重要的bug沒解, 是不敢出貨的
- 不過通常僅限於重要的bug, 至於所有bug都要解掉這件事, 好像不是每個人都願意買單的. 所以這裡會有些落差存在, 需要事先和manager and RD溝通, 否則最後會沒有共識.

2. The rate at which bugs are found is too small.
- 通常這是要看是否bug submission ratio是否下降, 也就是看是否有收斂的跡象. 如果還是在向上發展, 當然是無法結束.
- 即使現在bug已經解完, 並且目前沒有發現新bug, 但是若是目前submission ratio值是很高, 也不可能瞬間忽然降成0. 所以這通常意味著, 其實受測系統裡面還有很多潛藏的bug,  只是目前還沒被抓出來. 所以還是要降低到某個程度才是比較save的狀況.

3. The testing budget is exhausted.
沒錢自然就沒什麼好說的, 當然就停止測試啦!!

4. The project duration is completed.
時間了也是個無可奈何的指標, 這有可能時當初schedule就有問題, 或是測試規劃的有問題. 導致時間不夠使用.

5. The risk in the project is under acceptable limit.
如果risk很低, 是project可以接受的範圍當然是無所謂啦!! Manager說了算!! 呵呵~~~

其實測試是否可以停止,是否足夠, 這要看你是否收及足夠的information. 畢竟測試是個information-gethering的流程, 如果你有足夠的資訊, 讓你可以掌握目前project品質的狀態, 你自然可以很清楚知道目前測試是否已經夠了, 可以結束了.

所以當你不知道是否測試可以結束時, 先問問自己你是否掌握專案的狀況. 如果不知道, 當然是回答不了啦!!

    
Reference
1. When should Testing stop?
http://creativetesters678.blogspot.com/2008/07/when-should-testing-stop.html

2. Chapter 8 Manaing the Testing Project, Lesson Learned in Software Testing.
Lesson 185 "Enough testing" mean "enough informaiton for my clients to make good decisions"

kojenchieh 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼