招募SDET來當QA是必要的嗎? 正確的嗎?

我想這篇真的很值得大家看一下.

尤其是你在掙扎, 是否要效倣Microsoft hire大量的SDET來做QA的工作時, 這裡提出了不同的見解, 提出了這樣的作法的盲點在哪裡.

此外在後面, 作者和James Bach所提到QA和RD想法上的差別, 我想是非常一針見血的見解. Enjoy it

What's an SDET - II
http://xndev.blogspot.com/2009/03/whats-sdet-ii.html

March 06, 2009
Posted by Matthew
Published in Creative Chaos


我想很多人都看過"The art of software testing", 在書中最有名的例子, 是測試一個三角形的程式. 讓我先回顧一下這個題目

有一個程式, 會讀入三角形的三邊長, 然後會輸出這個三角形是何種三角形. 比如說, 正三角形, 等腰三角形, 一個普通的三角形, 和不是三角形等等.

作者認為, 書中的回答是非常RD style的答案, 為什麼呢? 作者解釋如下:

作者認為如果你只是注意input 和expected results, 那你心中只看到這樣的東西

my $triangle_type = get_triangle_type($sidea, $sideb, $sidec);

然後你會做以下的測試
- The basic equivalence classes,
- The boundaries,
- Maybe measure statement coverage - maybe even branch coverage,
- Perhaps have a bunch of negative tests like entering words instead of numbers,
- A "length" of a negative number
- In the days of MS-DOS where you had a single user sitting at a single computer typing in one value at a time, that might be just fine.

但是作者認為, 在現在的環境中, 只做對了一半. 因為通常我們的程式, 會放在web上執行, 或是做成 web service讓別人呼叫. 因此你可能還需要考慮以下問題

- Does it render correctly in all browsers? IE6, IE7, FF2, FF3, Safari?
- Does it look pretty? Is the user interface usable?
- What happens if I resize the browser? Does the new rendering make sense?
- If I click tab through the various inputs instead of using the mouse, does the change in order make sense?
- If I press the "ENTER" or "RETURN" key, does that trigger the submit button?
- What happens if I click "submit" twice in a row - really fast?
- What happens if, after I click submit, I click the back button? Do I go back to the main screen or do I get one of those bizarre "This page was generated dynamically do you want to re-post?" error messages?
- What if I am visually impaired? Can I turn up the font or does the Cascading Style Sheet "lock" down the user experience? If I can crank up the font is it visually appealing?
- What if I am blind? Can I use the application by a tool for the blind like Lynx? Do all of the images have "alt=" tags?
- Is the web service reasonably fast? What if it's used by 100 users all at the same time? (Note: This was never a problem on MS-DOS, where you only had one user at a time)
- Can I run the application on my 1024x600 netbook? The ads said my netbook was good "for web surfing"
- Can I run the application on my Cell Phone?
- If I come in from a chinese, korean, or italian system but I know english, does the user experience make sense?
- What if I don't know English? Should our software be localized? If yes, what localizations?

這就是會什麼作者覺得書上的答案是不夠的, 這個三角形的例子是不夠理想的, 因為它只著重在某一類型的測試, 而忽略了其他類型的測試.

所以作者認為如果你只是hire RD來當 QA, 其實是一件很危險的事. 因為他很可能都只是注意到前半部的測試 : code, code, and statement coverage, 而不會去想到後半部的測試.

作者還認為, 我們在前半部份的測試,通常都做的很好. 但是對於後半部的測試, 我們經常是缺乏根據使用者的經驗, 來建立一些在real world會遇到的測試


以下是作者認為Microsoft對QA的態度
===============================================
Now, the Microsoft Guys claim to be doing it right.

They want Software Design Engineers in Test (SDETs) who can do *both* entry-level developing *and* critical investigation of software under test - and there are some people who fit into that category.

But that's like saying you want excellent sprinters who are also world-class distance runners - while they do exist, there just ain't that many of those people on the planet.

Those that are here can usually find gainful employment, and not all of them want to live in Washington State, China or India.

The result is that, as an employer, you'll either have to (A) Pay an relative large sum for these people, (B) Have a bunch of open positions while you look for people with the right mix, or (C) Compromise, hiring people who are, for example, good devs you think might make good testers.

This runs the serious risk of developer myopia.

===============================================

之後作者和他同事James Bach (有名的software testing作者)討論過, 以下是Jame Bach的意見

The words that you quoted [Matt talking about MS's view of testers] represent an attitude that systematically misunderstands testing as a purely (or primarily) a technical activity the object which is to produce "test cases." I too had that attitude, early in my career.

I grew out of it as I came to understand, through my experiences as a test manager, that a test team becomes stronger when it hosts a variety of people with a variety of backgrounds.

Through the ordinary action of teamwork, a diverse group of thinkers/learners exploits the knowledge and skills of each for the benefit of all.

My attitude about testing is deeply informed by a study of cognitive psychology, which is the study of how people think, and epistemology, which is the study of how people can know what they know. ...

When you approach testing not as hot-dogging with test tools or techniques, but rather as a process of human minds encountering human artifacts and evaluating them in human terms for other humans, you eventually realize that the testing process is harmed when any one point of view or way of thinking comes to dominate it.

I would like at least one programmer on my test team. Maybe a few.
In some cases (such as in testing development tools) I will need everyone to be a programmer.

However, I do not treat programming ability as the center of gravity for testing.
Instead I look for rapid learning, high tolerance for uncertainty, and general systems reasoning.
Even then, I don't need EVERYONE to be good at those things.

=======================================================
之後是作者的想法:

I'd use different rhetoric and be less critical, but I understand what James is saying.
As testers, we tend to have developer-envy.
The reality is that the two skills are separate, distinct, and complementary.
(Unless, say, you are testing a compiler or a debugger. Are you?)

Now, can a non-developer-tester be a more effective by picking up a little code?
Absolutely. I have an undergraduate degree in Math/CS and a Master's in CIS, of which I am extremely proud - not to mention a decade with a title of developer on my business card.
AND it took me years to fight my way through developer myopia to see the whole picture of software testing.

Developers tend to think in terms of automatable business processes - when exactly what needs to be done up front isn't clear, developers claim that the requirements are "inconsistent" and refuse to program.

The whole picture of testing might include some repeatable elements, but it also includes empirical processes - which adapt through learning as they happen.
This is not a straightforward business process to automate. Developer-Envy doesn't help our craft, it hurts it.


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

理想的Agile工作環境

The Ideal Agile Workspace
http://blog.mountaingoatsoftware.com/the-ideal-agile-workspace

March 5th, 2009
Posted by Mike Cohn
Published in Mike Cohn's BLog

作者認為一個理想的Agile 工作環境, 需要具備以下狀況

1. 引人注目的大型圖表 (Big Visible Charts)
- Agile teams like to hang the charts on their walls.
- Charts like these provide a strong visual reminder of the current state of the project.
- What is shown on these charts will get the attention of team members so display charts showing the most important information for that sprint.
- There are some items could on the charts
    * sprint burndown chart, showing the number of hours remaining as of each day of the current sprint.
    * the number of passing customer acceptance tests
    * the pass/fail status of tests by day
    * print and release burndown charts
    * number of new stories introduced to the product backlog per sprint, and more.

2. 額外回饋的機制 (Additional feedback devices)
- For example:
    * A lava lamp that is turned on whenever the automated build is broken.
    * Use flashing red traffic lights to indicate exceptional conditions such as an issue on a production server.
    * Ambient orbs and Nabaztag rabbits, which are wireless programmable devices that can also be configured to change colors, speak messages, or wiggle their ears as a team desires.
- Devices like these make a workspace more dynamic, unobtrusively bringing into it information the team may find helpful.

3. 每個人都在同一工作場所 (Everyone on your team)
- Each person on the team should ideally be able to see each other person on the team.
- This absolutely includes the ScrumMaster and ideally includes the product owner.
- I do understand, however, that product owners often have responsibilities to other groups outside the development team and so may sit near them instead.
- Still, in an ideal world the product owner would be visible to everyone in the team workspace.

4. 在這Spint中的工作清單 (The sprint backlog)
- One of the best ways to ensure that everything necessary is completed in the sprint is to make the sprint backlog visible.
- The best way to do that is by displaying the sprint backlog on a wall, ideally in the form of a task board.
- A task board is usually oriented in rows and columns with each row containing a particular user story and one index card or sticky note for each task involved in that story.
- Task cards are organized in columns, minimally including “To Do” “In Process,” and “Done.”
- In this way, team members are able to see work progressing across the task board during the sprint and all work to be done is visible at all times.

5. 整個專案的工作清單 (The product backlog)
- One problem with running an endless series of sprints is that each can feel disconnected or isolated from the whole of a planned released or related set of new capabilities.
- A good way to reduce the impact of this problem is by displaying the product backlog somewhere clearly visible.
- This can be as simple as keeping the shoebox full of user stories written on index cards on a table in the middle of the team’s space.
- Even better, tack the index cards with those upcoming user stories on a wall where all can see them.
- This allows team members to see how the user stories they are working on in the current sprint relate to others that are coming soon.

6. 至少要有一個大白板 (At least one big white board)
- Every team needs at least one big whiteboard.
- Locating this in the team’s common workspace encourages spontaneous meetings.
- One developer may start using the board to think through a problem; others may notice and offer to help.

7. 要有私人和寧靜的空間 (Someplace quiet and private)
- As important as open communication is, there are times when someone needs some peace and quiet.
- Sometimes this is for something as simple as a private phone call.
- Other times it can be to think through a particularly challenging problem without being interrupted.

8. 食物和飲料 (Food and drink)
- It’s always a good idea to have food and drink available.
- These don’t need to be fancy, and they don’t even need to be provided by the organization.
-  It could  buy a small under-desk refrigerator and share the expense of buying water bottles or soda for it.
- Other teams buy a coffee machine, depending on team preferences.
- Some teams rotate bringing in snacks, both healthful and not.

9. 對外的窗戶 (A window)
- One of the nice things about an open workspace is that windows are shared.
- Even if the view is only of our parking lot and can only be seen across three messy desks, at least I can see the window and some natural light.


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

Hyper-V, ESX, XenServer的被參考趨勢

Comparing Search Trends of Hyper-V, ESX, XenServer
http://blog.vmlogix.com/2009/03/12/comparing-search-trends-of-hyper-v-esx-xenserver/

March 12th, 2009
Posted by Srihari Palangala
Published in Virtual Lab Automation BLog

之前在上Performance Testing的課程, 有學員問我是否virtualization 已經很普及了, 是否會在VM上執行performance testing, 或是在上面執行loading很重的程式.

老實說, 我並沒有這樣的經驗. 因此在網路上簡單找了一下, 發現有人做這樣的比較: Hyper-V, ESX, XenServer被search的狀況.


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

"創意黏力學"摘要

相信大家在網路上, 曾經聽過這樣的一個小故事

慶祝期中考結束是個傳統。這個男生去參加上星期六晚上的慶祝。
他喝了很多酒,而且有些女孩對他有興趣,於是邀請他參加另一個慶祝會。是在另一樓公寓,他們繼續地喝酒,並吃了一些不知名的藥。
等他再醒來,發現他全身赤裸地在浴缸中,而且浴缸裡滿滿的都是冰。
他看了自己的胸部,發現上面用口紅寫了“打110,否則你會死“。
他接著看到了一支電話就在浴缸旁,於是他就打了電話到110去。110建議他檢查自己的背,而他只發現了兩條九寸長的切割傷口在背部下方。
110要他馬上躺回滿是冰的浴缸,並馬上派一組急救隊來。在仔?檢查之後他的腎臟被偷了!
在黑市裡,一對腎臟值30,000元!

接著我們再來看另一個故事, 有關 電影院爆米花.

美國農業部建議每個人正常飲食量不該超過20公克的飽和脂肪, 但是每包(中包)爆米花平均含有37公克的飽和脂肪, 桶裝爆米花無疑必超過三位數. 主要罪魁禍首是椰子油, 戲院都是用它來爆玉米, 但是它含有大量的飽和脂肪.

公益科學中心被指示要登一個廣告的廣告, 他們想了很久要如何製作, 才能喚醒大家對這個議題的重視. 因為37公克這個東西很抽象, 我們會想那是很壞的不好(像抽菸), 還是普通的不好(像吃餅或喝奶昔)? 此外飽和脂肪是什麼東西, 這個字眼既枯燥又學究, 誰會理它?

最後他們的廣告想法如下:

在電影院中買到的”牛油”爆米花, 所含會阻塞血管的脂肪量, 超過
一份培根加蛋的早餐+
一份大麥克漢堡加薯條的中餐 +
一份全套的牛排晚餐

在電視攝影機前展示了這套油膩大餐, 一整天的不健康食物量, 全擺在桌上.

這段節目立即造成轟動, 成為CBS, NBC, ABC, CNN的頭條, 也上了今日美國報, 洛杉磯時報的頭版.

這個觀念讓人記住了, 大批的罷吃爆米花, 銷售量大跌.

所以什麼想法才能被黏得住? 好的想法往往難出人頭地, 但是荒誕的盜腎事件, 卻是不斷流傳. 為什麼呢?

通常一般溝通的訓練會包含這些東西, eye contact; gesture; repeat; practice; say joke, storey first, 有幫助, 但是大家還是記不住.

本書作者提到一件事: 知識的詛咒(The Curse of Knowledge):

 係指凡事不能設身處地去思考,過度把思考者獨有的知識,加於沒有這些知識的討論對象身上,而來預測或評論所討論的對象之行為。

因此我們即使我們簡報再好, 或是內容再怎樣有道理, 也無法讓人印象深刻.

作者分析了數百件黏得住的觀念, 發現他們都有一些共同的元素, 找出以下六項原則: SUCCESs
簡單 Simple
意外 Unexpected
具體 Concrete
可信 Credible
情緒 Emotional
故事 Stories

1. 簡單
- 簡單 = 核心 + 簡潔
- 一位成功的辯護律師說
    如果你辯論時向內容, 即使每項都很有道理, 陪審團進了陪審房間後, 一個也不會記得
- 要把觀念剝到只剩核心, 我們必須精通拋棄之道
- 我們必須無情地分出輕重先後順序, 光是簡單並非我們的目標
- 斷章取義並不理想, 諺語才是最理想的, 我們必須創造出既簡單又有深度的觀念

2. 意外
- 吸引對方注意:用驚奇。維持對方注意:用興趣。
- 要如何才能讓聽眾注意我們的想法, 如何才能在說的過程中維持住他們的興趣?
- 這就得要反其期待而行。我們必須要反直覺。
- 我們可以出奇致勝,來提高對方的警覺性和注意力。
- 單是驚奇是不能持久的。要持久,我們必須提供趣味和好奇。

3. 具體
- 讓人家聽得懂、記得住。
- 很多商業上的宗旨說明、策略、願景
- 往往都模糊到了毫無意義的地步。
- 那些天生就能黏得住的觀念都是充滿了很具體的形象的,因為人類腦袋的構造就是要用來記住具體訊息的。
- 以諺語為例,抽象的真理往往被編碼成具體的辭句
    「一鳥在手勝過百鳥在林。」
- 具體的描述是確保你的每一位聽眾都真正聽到同樣訊息的唯一方法。

4. 可信
- 讓人相信。
- 如何讓別人相信我們的說法?黏得住的說法必得要有自己的信用背景。
- 我們得幫助人們親身試用我們的構想,也就是一種「先試用再買」的哲學。
- 在一九八0年雷根與卡特的美國總統大選辯論會上,
    雷根本來大可以舉出一堆數據來證明當時經濟不景氣。
    不過他沒這麼作,只問了選民一個自己可以去查證的問題:
    各位在投票前,先問問自己,你今天的經濟情況是否比四年以前好?

5. 情緒
- 讓別人關心在乎。
- 要如何讓人家關心你的構想?就是要讓人家有感覺。
- 研究顯示,人們比較可能捐款給一個需求迫切的個人,而不是一整片貧窮地區。
- 我們天生就容易對人產生感覺,而非抽象事物。

6. 故事
- 故事即模擬,激發別人採取行動。
- 如何才能讓人家依照我們的觀念行事?講故事。
- 消防隊員很自然地會在每次火災後交換彼此的故事,因而累積了多重經驗
- 長年下來,他們心中就存下了更豐富更完整的危急狀況大全,可用來正確地對付未來的各種火災。
- 研究顯示,在心中預習某一情況能讓我們在事情一旦發生時有更佳的表現。
- 同樣地,聽故事也可算是一種心理模擬飛行器,讓我們能更快速更有效地應變。


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

在開始Run Scrum時, 要注意的事情

Scrum Hell!
http://www.agile-software-development.com/2008/05/scrum-hell.html

May, 2008
Posted by Kelly Water
Published in All About Agile

如果你剛開始成立一個team, 並且大多數的人沒有做過Scrum, 或是沒有接受過Scrum的training. 這時候, 你要team開始使用Scrum來開發, 你將會遇到很多問題, 並且會有大的挫折.

作者看過很多這樣的狀況, 並且每個team所遭遇的問題還不盡相同.

以下是常見的問題及狀況
- Much time is spent discussing the process and how things should be done as actually doing it
- The product backlog is confusing and disorganised
- Requirements are not clear.
- User Stories are not adequately prepared.
- Sprint Planning takes *days* instead of hours.
- No too many developers love sitting in meetings!

以下作者提供了一些小秘訣, 來幫助大家度過這樣的難關
1. 首先最重要的, 把你的backlog排出重要順序
- Here I say you should proceed no further until this step is completed, otherwise you'll regret it.
- Accept the fact it will take your team at least 3 or 4 Sprints to get into any sort of rhythm.
- Refine how you handle the process in each Sprint.


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

Close

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

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

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

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

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼