What Is A User Story
- form User Stories Applied: For Agile Software Development

最近team要開始採用user story 的方法, 因此需要花一些時 間來研究, 要如何套用會比較合宜. 我基本上相信, 要套用一個新的aprroach, 應該是花時間熟悉它是什麼, 和想辦法試試看是否能原汁原味的採用.

公司之前有很多team 在採用一些新的methodology, 大多是採用一個, 就怨恨一個, 常常會認為那方法不適合在這個地方執行. 可是在我看來, 你既沒花時間研究它, 也沒有心要要全面使用它, 或是套用他所有規則, 自然就不會成功.

就像Agile來說, 大家只知道要做iteration, 可是卻沒有採用要達成iteration, 所要使用相關的practices. 因此run下來, 大家只是很累地快速deliver了幾個版本, 可是是否快速反應user需求, 或是仍能維持適當的品質水準, 這些事情反而變成不是大家討論的重點.

有鑒於這些教訓, 小弟想想還是要花時間研究一下, 希望自己在run 完後, 也不會一直怨恨.

首先, 就先開始拜讀User Stories Applied: For Agile Software Development 一書, 從了解什麼是User Story開始.

What Is A User Story
1. Describes functionality that will be valuable to either a user or purchaser of a system
2. Example
    - A user can search for jobs.
    - A company can post new job openings.
    - A user can limit who can see her resume.
3. Not good examples
    - The software will be written in C++.
    - The program will connect to the database through a connection pool.
    
Three Aspects of A User Story
1. A "Written Description" of the story used for planning and as a reminder
2. "Conversations" about the story that serve to flesh out the details of the story
3. "Tests" that convey and document details and that can be used to determine when a story is complete

Written description
1. Short heading, typically one or two lines
2. Often written on an index card
3. Used throughout the project for
    - Planning
    - Reminder

Conversations
1. Used to uncover the details of the story
2. Takes place throughout the project, e.g.,
    - When estimating the story
    - When implementing the story
3. Notes from these conversations can be added to the index card
    - the conversation is the key, not the note on the story card.
    
Tests
1. Specify and describe details about a story as tests, e.g., some of the details uncovered during the conversation
2. Use the tests to determine when a user story is complete, i.e., acceptance tests
3. Write the tests on the back of the index card

Big User Story
1. It is better to have more stories than to have stories that are too large.
2. Epics (Big user stories) can be split into two or more stories of smaller size
3. We do not continue splitting stories until we have a story that covers every last detail.
    - We stop when it is a very reasonable and realistic story
4. Rather than writing all these details as stories, the better approach is for the development team and the customer to discuss these details.




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

要注意重要的事, 而不是每件事

See Everthing That Matters
http://blog.abakas.com/2008/08/seeing-everything-that-matters.html

Thursday, August 28, 2008
Posted by Catherine Powell
Published in http://blog.abakas.com/

在測試時, 假如你要檢查所有事情, 那你會要看哪些東西呢?

System logs
GUI
OS logs
Processes
Files in and files out
Network traffic - to and from your box and broadcast traffic
User actions and reactions
Mouse movements
Keystrokes

有沒有覺得很過癮啊? 我想你一定覺得一點都不好玩, 因為你根本不可注意到每件事情

當你發現有太多information, 你可能的選擇是都不去理會它. 這不是因為你偷懶, 這是人的本性. 有人有做過這樣的實驗
When asked to make a choice between 6 kinds of jam, consumers picked one.
When asked to make a choice between 24 kinds of jam, consumers simply walked away.
你可以在這裡找到這份研究報告:
http://www.columbia.edu/~ss957/articles/Choice_is_Demotivating.pdf

所以人們在這樣的狀況下, 會做的事情就是filtering
但是有效率的engineer和沒有效率的engineer差別就在這裡: 如何適當地的filiter掉一些information的能力. 也就是排除掉不重要的, 只看重要的部份

所以我們的目標不是去看所有的事情, 而是看重要的事情

當然講的很容易, 那要如何做到呢? 這裡有一些作者整理出來的rules
* Look through old issues. What were the clues that led to the real answer?

* Spend time with the system. Getting a sense of what the system does when its behaving normally will help you understand what is an anomaly and what's not. Look in a different area every time - logs one day, process table one day, GUI one day.

* Mix it up. Work in different areas of the product so you don't become overly familiar with any one area and start to miss things. You want to keep a sense of slight surprise about each area of the product.

* Explain what's going on. Pair with someone and walk them through what's happening to the system. Make sure you can explain the entire work flow, start to finish.

當然這些是要花時間去學習的. 如果你經常去練習, 你會發現你會越快, 越容易找到問題, 你也會更有信心. 所以請花時間去學習如何以有效filtering的方式, 去檢查你的受測系統

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

超低利率將帶來4大改變
2009 Money 雜誌 1月號

1. 定存不再收歡迎
- 低利率使資金離開銀行, 進入消費與投資領域

2. 汽車及房市可望受益
- 人們增加消費及投資意願, 主要會反映在哪裡呢? 從理性角度分析, 主要會反映在需要舉債進行大額消費上. 畢竟, 只有不到1%的超低利息, 將激發人們對於原先高價物品需求, 潛意識裡的耐久財渴望將蠢蠢欲動.
- 其中最主要的投資就是汽車和房市. 這就是為什麼每當有降息消息傳出, 股市中營建及資產類股, 就會上漲反應的原因所在.

3. 債卷將逐漸失去吸引力
- 隨著各國央行利率已處歷史低點, 甚至逼近零利率而降無可降的窘境, 短期卷及長期卷殖利率對於降息預期的反應已經鈍化, 亦即債券價格很難再續漲.
- 短期內, 債卷型基金可能還有一波小行情, 但是2009年基本上不會再出現先前的牛市; 加上政府大量發行新債, 將增加市場籌碼的供應, 目前的新政府發行價格已經充分反映, 甚至過度反應寬鬆貨幣政策, 未來債卷將逐漸失去吸引力.

4. 股市本益比將提高
- 假如你以20元買進一檔股票, 且該檔股票每股盈餘(EPS)為1元, 則本益比為20倍( = 股價 / EPS). 同樣的, 如果將這20元存入銀行, 而銀行的年利率是5%, 則每年也可以收到利息1元. 也就是說, 投資本益比20倍的股票, 與投資年利率5%的定存, 有相同的報酬率.
- 但是利率降到很低, 股市的本益比將順勢提高, 使得目前的股價看起來都顯得物美價廉, 資金流向股市等投資領域是必然的趨勢
- 目前是因為股市還在打底, 舵數投資人沒有信心, 只要股市出現利空不再下跌, 開始有落底的跡象, 資金自然會流入股市投資, 產生資金行情.

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

如何讓QA樂意幫助RD成功

My 2009 advice for programmers (on making - or keeping - testers happy)
http://blogs.msdn.com/alanpa/archive/2009/01/03/my-2009-advice-for-programmers-on-making-or-keeping-testers-happy.aspx


有人問到作者
As a programmer I don't like to see bugs (and I don't like the QA ranting about the qaulity of my work either).
Could you post your "2009 advice to programmers" on how to make testers happy

作者首先對於ranting這個字有點concern, 認為提問者可能和QA之間的溝通出了一點問題, 也可能是把bug report看得太嚴重了. 作者認為bug report只是呈, 現有關於proudct quality的資訊, 但是這並不是RD quality的資訊. 它只是要幫助product quality要更好.

個人我認為有bug並不是完全和RD有關, 有時候錯誤的requirement, tight schedule, 和溝通上的落差, 都會造成有bug出現. 只是每個bug要會要有負責處理的owner, 但並不是代表這owner就是始作庸者, 或是代表他的quality , performance不好.

作者接下列出了一些注意事項, 讓RD可以注意, 以幫助RD和QA cowork的更順暢

1. 不要對QA大呼小叫的
- They’re not bottom feeders lucky to have a job, and they’re not developers who couldn’t cut it.
- Most of us have chosen to be testers because we’re good at it and it gives us an opportunity to have a huge impact on software quality.
- The better we work together, the better job you’re going to do in the end.
- Software development is a joint effort between programmers and testers – if you want to be successful, you need a good relationship with your testers.

2. 要撰寫Unit Tests
- Don’t make it easy for me to find bugs.
- Testers aren’t asking you to find every single bug, but at least test enough of your own code that testers won’t find bugs in basic functionality.
- The harder it is for testers to find bugs in your code, the more they will respect you.
- When testers begin finding complex bugs that you never thought could exist, you will respect them more too.

3. 多思考Testability
- Testable software is well designed software.
- Consider the SOCK model (Simple, Observable, Control, and Knowledge).
- Think about testing during design and implementation – ask yourself “’how will we know this works?”

4. 不要怕會衝突
- Conflict is fine (and expected), but everyone needs to feel that their voice is heard.
- When you disagree, explain why you disagree, and don’t expect to resolve every conflict.

5. 要多溝通
- Spend time talking about challenges of your roles.
- Understanding the other side helps you both do your job better.

6. 不要認為Bug Report是針對個人而來的
- Note to testers: bug reports are NOT your avenue for belittling developers
- Bug reports are a necessary side effect of the testers job.
- Bugs are just bits of information that you need to act on.

7. 不要因為QA找到你程式中的Bug就覺得他們很討厭
- You should be surprised, or maybe even embarrassed depending on the details of the issue.

8. 不要覺得不好意思去提供一些測試的建議
- E.g. "It's going to be important to test how the string fields are translated between component x and component y", or "I’m worried that the component we’re leveraging from team z will cause compat problems, can you spend some time investigating?"


當然啦, 我個人認為QA某些事情上, 也是有努力的空間. 下次來找找, 是否有RD對QA的建言.

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

為什麼需要做Exploratory Testing

explaining exploratory testing
http://blogs.msdn.com/james_whittaker/archive/2009/01/08/explaining-exploratory-testing.aspx

January 08, 2009
Posted
by James Whittaker
Published in JW on Test

公司最近有介紹Exploratory Testing 的sharing, 在會議中發現大家幾乎都不知道這是什麼, 因此希望這篇文章可以多幫忙了解一點為何要做Exploratory Testing


軟體測試之所以複雜, 是在於它有過多可能的組合. (在我認為是接近無限多):
- inputs
- code paths to state
- operational environment.
這三種的情況, 前兩種的數量接近無限多, 第三種是很多, 所以combine起來後, 狀況幾乎是無法想像的多.

所以不管你採取什麼方法, Scripted Testing (也就是事先規劃) 或是 Exploratory Testing (一邊學, 一邊規劃, 和一邊測試), 要完整測試是不可能的事

然而Exploratory Testing的好處是, 讓QA能在測試過程中, 根據他所學到, 所收集到的, 然後來決定接下來要整麼調整, 怎麼進行接下來的測試. 而不是只是follow up之前規劃好的test cases 或是test plan.

這是最主要比Scripted Testing(泛指事先規劃的方法)佔優勢的地方.

你可以想像, 如果你若是要在季賽前, 要預測 Super Bowl (美國橄欖球超級杯大賽) or Premier League(英超聯賽)的贏家, 你會不會認為是一件非常難的事情.

因為你需要觀察team如何來運作, 進攻; 或是主力球員是否整季都健康, 沒有受傷; 或是教練和球員整合程度. 這些都是變因, 這些資訊會隨著賽季的展開, 你才能逐步調整你的預測, 然後會對的機會, 才會越來越高.

同理, 再軟體測試上也是一樣, Exploratory Testing也是在過程中, 一方面根據之前的歷史資料, 所學會的domain knowledge, 再加上目前狀況的需求, 不斷再調整所要進攻的方向, 已確定你所要測試的重點

所以有效的使用Exploratory Testing, 可以幫助你在面對軟體測試複雜的狀況, 能夠更有信心去deliver quality software.

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

Close

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

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

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

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

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼