Continuous Integration is an Attitude, Not a Tool
http://jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.html

很多人一提到CI(Continuous Integration), 都會誤解認為它就是一堆Tools所成的集合, 事實上不是這樣的.
首先我們來看agile的宣言

Contrary to popular belief, continuous integration is an attitude, not a tool. It's a shared agreement by the team that:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

CI 是會了達到宣言中的working software, 因而所產生的practices. 也就是說我們不只口頭上說我們要agile, 並且我們的做事方法上, 也會配合agile精神來改變.

那什麼是CI呢?

Assembling software every time code changes

“ … is a software development practice where  members of a team integrate their work frequency…”

Each integration is verified by an automated build (including test) to defect integration errors as quickly as
possible

所以CI是希望程式一有變動, 便能快速確認大家的程式碼, 是否還能運作正常, 讓軟體經常保持在可運作的狀況下.

這也就作者為什麼說CI 是一種態度一種觀念, 而不是一堆tools. 根據作者的經驗, 他的觀點如下,首先他認為CI是:
   1. When we get the latest code from the repository, it will always build successfully and pass all tests.
   2. We will check in our code every two to four hours. (他這裡的經驗是大約是每2~4小時check-in 一次)

他們practice的其中一種作法是:
   1. Before check-in, run the build and tests and make sure they pass.
   2. Tell people not to update from the repository because you're doing an integration.
   3. Check in.
   4. Go to a different machine (often a dedicated "integration machine"), get the latest code from the repository, and make sure latest changes build and pass there, too.
   5. Done--tell people they can update again.

當然要完成這些工作有很多種方法, 一般常見的是利用不同的tools來加速其進行, 這也就是為什麼大家誤解CI就是一堆Tools. 其實是先有這些觀念和流程, 然後才找出一堆tool來配合工作的進行.

當然每個tool有每個tool強項的地方, 不會有一個tool可以解決所有的事情. 所以作者也提到不要一想到CI, 就只記得CI server - CruiseControl, 它也只能完成步驟4的部分內容而已

希望大家對CI的認識, 不要再只是侷限於它是一堆Tools.


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

巴菲特選股重點
- from 巴菲特投資攻略圖解

A. 挑選企業的方法
1. 選擇簡單易懂的事
- 巴菲特的主要資訊來源, 通常是透過閱讀企業的年報而來
- 像決算短信, 有價證卷報告書, 年報, 事業報告書, 和決算公告, 都是有用的企業公開資訊
- 以身為投資的事件記者為目標: 收集情報, 親赴現場, 實際試用, 仔細分析

2. 選擇利潤穩定成長的企業
- 巴菲特對那些引起一時注目的股票並不感興趣, 他更感興趣的事那些長期以來成功且獲利持續成長的企業
- 雖說任何企業都無法保證未來的成長, 但是觀察過去的利潤是否穩定成長至少是一個衡量指標
- EPS是其中一個判斷指標
  EPS(每股盈餘, 該數值越高代表企業價值越高) = 稅後淨利(淨利應該歸給股東) /總發行股數
- 由於巴菲特要買的是能夠終生持有的股票, 他會追朔過去5年或10年的歷史數值, 並且審慎觀察未來是否也能穩定維持相同水準的數值

3. 選擇未來展望看好的企業
- 巴菲特感興趣的公司, 不僅事業內容必須簡單易懂, 還得具有能壓倒性贏過競爭對手的優勢
- 反之, 他把那些不具吸引力的事業稱為"大宗商品", 也就是那些當產品或服務沒有明顯特色時, 馬上會面臨削價競爭的事業
- 企業的護城河越大越安心
    強大的品牌
    優越的技術
    獨特的商業模式
    優異的設計


B. 鑑定經營者的方法
1. 經營者是否理性思考
- 倘若其經營者並非能幹且誠實之人, 盡管企業未來的展望一片光明, 巴菲特也絕對不會投資
- 巴菲特認為具有魅力的經營者是行事理智, 對股東誠實, 能夠打破慣例並獨排眾議的人
- 最能表現經營者想法的就是盈餘的分配方式, 也就是如何使用賺來的錢
- 一般經營者對於盈餘的用途有以下三種
    縱使投資效率不佳, 還是持續再投資
    收購其他公司以獲得成長機會
    將手頭上持有現金還給股東
-     巴菲特認為選擇"將手頭上持有現金還給股東", 才是最理智的行為

2. 是否誠實面對股東
- 巴菲特認定的卓越經營者, 應該具備誠實, 理智和活力. 其中以誠實最為重要
- 可藉由提出以下問題, 來看看經營者是否能好好回答
    企業的價值大約是多少
    負載能否如期償還
    在各種條件的限制下能否妥善經營
- 為了了解經營者對股東是否誠實以對, 方法之ㄧ就是親自出席股東大會, 看看
    公司是否尊股東為"主", 視己為"從"地對待股東
    公司能否真誠地回答股東的問題
- 檢視公司能否坦率地談論錯誤
    遇到不利於自己的話題時, 是否絕口不談獲巧妙迴避
    是否從錯誤或失敗中學習教訓
        
3. 能否戰勝模仿的誘惑
- 經營者無法抵抗模仿誘惑的原因
    想要沿襲以往的路線
    一有錢就會想要花掉
    老是愛與同業比較
    過度膨脹自己的能力
    經營者熱衷的事業往往會被合理化
- 巴菲特認為要評估經營者, 可以看看他過去的發言. 如果能在經營者的評估上多花點時間, 很快就能提前捕捉到財報數字代表的資訊
    詳加閱讀經營者對於未來營運計畫所做的說明
    對照之前的計畫和目前實施的程度
    以前的策略和現在的策略相較之下是否有什麼變化
    和競爭對手年報作比較, 看看營運方針上有哪些不同之處
- 但巴菲特也提醒我們, 在閱讀年報時有一些注意事項
    留意那些沒有按正規流程處理會計帳的公司
    對於那些大聲強調預期收益及成長可能性的公司, 要持保留態度
    留意那些不顯眼的財務報表附註. (通常那些附註往往就是隱藏經營者不欲人知的事實之處)

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

Top 40 Automated Testing Blogs
http://motevich.blogspot.com/2008/11/top-40-automated-testing-blogs.html

雖然標題是有關automated testing的blog, 不過我認為其實是有關software testing的blog, 所以大家可以參考一下

1.    Google Testing Blog, (various)
http://googletesting.blogspot.com/

2.    Performance Tidbits, Rico Mariani
http://blogs.msdn.com/ricom/

3.    Scott Barber's blog, Scott Barber
http://www.testingreflections.com/blog/74

4.    Collaborative Software Testing, Jonathan Kohl
http://www.kohl.ca/blog/

5.    Cem Kaner's blog, Cem Kaner
http://www.satisfice.com/kaner/

6.    Agile Testing, Grig Gheorghiu
http://agiletesting.blogspot.com/

7.    James Bach’s blog, James Bach
http://www.satisfice.com/blog/

8.    Creative Chaos, Matthew Heusser
http://xndev.blogspot.com/

9.    Advanced QTP, (various)
http://www.advancedqtp.com/

10. Corey Goldberg's blog, Corey Goldberg
http://coreygoldberg.blogspot.com/

11. The Braidy Tester, Michael J Hunter
http://blogs.msdn.com/micahel/

12. Tester Tested!, Pradeep Soundararajan
http://testertested.blogspot.com/

13. WilsonMar.com, Wilson Mar
http://www.wilsonmar.com/

14. Testing Hotlist Update, Bret Pettichord
http://www.io.com/~wazmo/blog/

15. Test Obsessed, Elisabeth Hendrickson
http://testobsessed.com/

16. My Load Test, Stuart Moncrieff
http://www.myloadtest.com/

17. Theo Moore's blog, Theo Moore
http://geekswithblogs.net/tmoore/Default.aspx

18. Thinking Tester, Shrini Kulkarni
http://shrinik.blogspot.com/

19. Observations on software testing and quality, Michael Bolton
http://www.developsense.com/blog.html

20. Quality through Innovation, Adam Goucher
http://adam.goucher.ca/

21. Easy way to automate testing, Dmitry Motevich
http://motevich.blogspot.com/

22. Software Testing Zone, Debasis Pradhan
http://software-testing-zone.blogspot.com/

23. JW on Test, James Whittaker
http://blogs.msdn.com/james_whittaker/

24. Mike Kelly's blog, Mike Kelly
http://www.testingreflections.com/blog/55

25. Questioning Software, Ben Simo
http://www.questioningsoftware.com/

26. London software testing news, (various)
http://testinglondon.wordpress.com/

27. Ankur Jain's blog, Ankur Jain
http://mercuryquicktestprofessional.blogspot.com/

28. Jeff Fry on Testing, Jeff Fry
http://testingjeff.wordpress.com/

29. The Software Inquisition, (various)
http://www.softwareinquisition.com/

30. 90kts, Tim Koopmans
http://www.90kts.com/blog/

31. Test this Blog, Eric Jacobson
http://www.testthisblog.com/

32. Stefan Thelenius about Software Testing, Stefan Thelenius
http://abouttesting.blogspot.com/

33. LoadRunner Tips and Tricks, Hwee Seong Tan
http://loadrunnertnt.com/

34. QuickTest Pro, Mohan Kumar Kakarla
http://quicktestprofessional.wordpress.com/

35. KnowledgeInbox, Tarun Lalwani
http://knowledgeinbox.com/

36. Alexander Podelko's blog, Alexander Podelko
http://www.testingreflections.com/blog/67

37. Software Performance Engineering & Testing, Charlie Weiblen
http://www.performanceengineer.com/blog/

38. Software Testing Blog, Unknown
http://software-testing-blog.blogspot.com/

39. Automated Chaos, Bas M. Dam
http://automated-chaos.blogspot.com/

40. Automated Web Test, Meena
http://www.automatedwebtest.info/
   

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

在面試QA時, 50 個常問的問題

Top 50 Software Testing/SQA FAQs you may be asked in an interview
http://software-testing-zone.blogspot.com/2007/01/top-50-sofware-testingsqa-faqs-you-may.html

在面試QA時, 你會苦於不知道要問什麼問題, 來確認是否有testing的經驗嗎? 這裡作者提供了50個Q & A, 讓你可以徹底了解candidate會些什麼. 雖然答案部分我不是很滿意, 但是還是可以參考一下.

當然這些問題, 不只在interview時可以問, 你也可以以試卷的方式, 來檢驗candidate的程度.

不過這好像只能問問QA lead 或QA manager, 在台灣基本上是不容易適用. 因為台灣軟體業重視品質的程度, 是乎還有待改進. 從公共工程的品質, 應該可略窺一二.


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

如何寫出一份好的Defect Report - (II)

這裡是另一篇, 也是講如何寫一份好的defect report的文章,他是出自Rex Black(Critical Testing processes)之手.

和上篇比較起來, 有些重點兩個作者都有強調, 我想你就可以知道這些部分一定非常重要, 否則就不會英雄所見略同.

不過這裡更強調是, 你必須要把你找到的defect好好消化, 不是只是囫圇吞棗地把它呈現出來. 像是isolate, generalize, compare和condense都是在做這樣的事. 它不希望defect report只是平鋪直述地, 把問題講出來而已, 而是希望programmers從中就能得知問題出在哪裡的線索.

我想你一定知道, 若是同一個問題, 由兩個QA來撰寫不同的defect report, 所顯示的精細程度, 有用性, 和可讀性一定大大不同. 某些人寫的就是簡單易懂, 直接命中要害, 一下就可以知道錯誤出在哪裡. 有些人寫的, 就是要跟他來來回回, 否則你還真不知他要表達什麼.

所以作者非常強調defect report的quality, 他認為這是QA工作的精華所在. 須知QA有很長的時間是花在寫defect report, 再加上programmers 和managers也同樣化很多時間在review, 你怎麼可以不謹慎呢?

1. Structure
- Good bug reporting begins with sold, organized testing
- It must be something other than just hacking on the product in an aimless attempt to break it
- Sloppy testing yields sloppy bug reports

2. Reproduce
- Reproducing the problem sharpens your understanding of the issue
- Reproducing the problem allows you to document a crisp set of steps that will re-create the failure.
- Please report intermittent bugs with a note about the intermittence

3. Isolate
- By changing some key variables, one at a time, in an attempt to change the behavior of the bug, you can write more insightful bug reports
- Good bug isolation builds tester credibility and gives the programmer a head start on debugging.
- Avoid getting into debugging or expending inappropriate amounts of time on trivial issues

4. Generalize
- Often, the symptom you see when you first find a bug is not the most general case.
- Trying to find the general rule for hoe the bug occurs deepens your understanding and help convince programmers and managers that the problem is not an isolated case

5. Compare
- Execute the same test with different builds in order to find more hints.

6. Summarize
- A good bug report includes a summary that communicates to the CCB or bug triage committee in a single sentence the essence and significance of the problem
- This summary is invaluable when it becomes time to priority the bugs
- It is the most important sentence in the bug report

7. Condense
- The best bug reports are neither cryptic commentary nor droning, endless, pointless documents
- Use just the words you need and describe only the steps and information that actually pertain to the bug being reported

8. Disambiguate
- The disambiguate is to remove confusing or misleading words that might make a reader wonder what I mean

9. Neutralize
- Attacking the porgrammer, criticizing the underlying error in the code, or using number or sarcasm to make a point generally back-fires.
- Bug report, once in a bug tracking system, often live forever and can be read by people not on the project team
- Try to be gentle and fair-minded in your words and confine your bug reports to statements of fact, not coniecture or hyperbole.

10. Review
- A bug report is a technical document. Peer reviews, inspections, walkthroughs are necessary

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

Close

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

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

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

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

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼