Soft Skill是QA重要的武器

之前在討論Sr. QA要具備什麼skill時, 除了要做code review之外, 我們也提到了soft skill的部份. RD通常要做什麼, 自己決定了就去做. 可是QA的部份不是這樣, 他必須要說服別人, 為何這個bugs 要解, 為何加這個feature或error handling 很重要, 他是需要別人去buy in他的想法. 因此這是為什麼說QA比RD還要難當的原因,

可是一說到soft skill, 大家就開始搖頭, 因為科技人對這個東西都不熟. 即使是貴為manager, 也並沒有特別高明到哪裡去, 主要是因為大部分科技業的manager, 一開始大多是因為技術不錯而升上去的, 所以在soft skill上其實還是有很大的落差.

在網路上找到一篇文章, 在描述一個好的QA, 應該具備有怎樣的特質, 這裡有很多是soft skills的部份, 值得大家參考一下.

Characteristics of a Tester
http://creativetesters678.blogspot.com/2008/07/characteristics-of-tester.html

1. Communication skills - oral and written
- It has to be conveyed in the correct way so that the person(s) sitting across the table is/are able to understand clearly.
- It is very important that any defect that is written by you has to be understood clearly by the receiving team.
- Be clear/ concise in your oral and written communication skills.

2. Critical eye
- Look out for any implicit or unstated requirements that need clarification from the clients.
- Always check for "what if " scenarios and get the answers. Think in multi dimensional way about a problem/requirement.
- Have a critical eye for minor details though others might think them as insignificant.

3. Do not assume things
- You should not assume any of the requirement / issues / problems / defects.
- Test the software from the end-user's perspective and not just compliance with the requirements given by the client.
- Never assume anything. It may not be true as you think!

4. Convincing skills
- It is a skill to convince and explain to a person who has developed the software as to why a defect report written is indeed a defect.
- Avoid using accusing words, do not get into any arguments and do not rise to any bait a developer may throw at you.
- Concentrate on the issue and not on the person.
-Develop good convincing skills!
(這時候QA要有sales的功力, 要能把bug這個產品, 讓RD/manager願意去購買(fix)它. 若是你這時候嫌棄顧客沒有錢, 或是沒有氣質, 或水準, 那你認為會有人要買嗎?)

5. Be factual
- While reporting a defect or clarification of a requirement, be as factual as possible.
- Do not bring in your own suggestions / views into picture.
- Do not use words that describe the type of work or the person who developed the software.
- Be a good reporter of facts!
(通常QA都會把問題形容的很誇張, 久了以後RD或是其他manager, 就會對我們的話開始打折扣)

6. Effective listening
- While discussing a defect report / requirement clarification, give a good hearing to other person's view or perspective.
- Understand the limitations of the software and try to find ways to resolve such issues.
- Be flexible whenever required!
(通常我們會不自覺地, 一直要求對方接受我們的意見, 而忘記去傾聽對方的問題, 或是難處在哪裡. 還會一直覺得對方很不受教, 不重視quality. 這反而會引起反效果. 若是能當個好的好的傾聽者, 以同理心方式來位對方設身處地來著想, 我想這樣會比較好溝通)

7. Provide constructive criticism
- While discussing any issues / defects / requirements clarifications with developer / business analyst do not use words that are pointing to their personal characteristics.
- Be very tactful in describing issues / defects and try not to point fingers at the person who developed the software or who collected the requirements for the software.
- Be empathetic
- Listen to the developer / the business analyst who developed / collected the requirements carefully.
- Try to understand the reality and limitations.
- Do not argue over trivial issues. Try to resolve limitations / issues in different possible ways.
- Develop good rapport with other teams, it helps!
(有時候RD會覺得QA的話很刺耳, 處處挑剔他們的毛病, 可是又說不出什麼可行的方法. QA自己也老是認為找問題才是主要的任務, 想解法是RD的責任. 我想雙方如果一直這樣下去, 問題是不會有任何progress.  QA自己本身要學著提出建設性的批評,不只中性描述, 並且要能幫忙想出適當的可行性解法, 或是替代方案. 這樣才會讓事情有進展)

8. Effective follow up of issues
- Many a times, defects are written and deferred to next release. At the start of next release not all of them are picked up and fixed.
- The status of defects that are left out from previous releases need to be discussed at the beginning of every release with the business analyst / development team.
- Also, any issue that has not been converted to defect needs to have a closer follow up. This needs to be documented as Open issues at the end of the testing activity.
- Be good at follow-ups!

9. Good reviewer
- Be a good reviewer and look out for inconsistencies of implementation of a particular requirement across different sections.
- Review all user documentation apart from testing the software.
- Check out for inconsistencies in the description of the software, look for glossary and an index.
- This enables for easy search on topics of user's choice.
- Sharpen your reviewing skills!

Conclusion
As a tester you need special set of interpersonal skills more than the technical and functional skills.
More importantly patience should be there.
Make a start, be aware and practice.

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

QA要做code review嗎?

之前公司在討論, 成為資深QA要具備有哪些條件. 談著談著, 有位資深的architect說, Sr. QA要能做code review, 要能看code, 根據你的經驗早期給feedback.

QA真的需要做code review 嗎? 真的能做嗎? 根據Do testers do code reviews? 一文所描述的,
http://blogs.msdn.com/imtesty/archive/2008/03/11/do-testers-do-code-reviews.aspx
在Microsoft中, 大部分hire的QA是有較強的tech skills, 擅長寫些工作或是test automation, 並且對system有較深入的了解 . 但是對於QA做 code review一事, 則認為這是正常測試的一部份, 因為code review 只是其中一種測試方法, 有經驗的QA要能使用各種不同的方法來進行測試.

此外, 藉由code review, QA可以將quality的要求, 在開發流程的上游(其實只到construction階段, 也沒多前面)就開始注重和要求, 而不是等到測試階段才來談quality的問題. 此外QA也可以藉由這個機會, 更深入了解程式內部的運作, 以促進將來測試工作的進行

就我原先的觀點, 我們要測試的東西是程式碼, 因此要對程式碼了解是天經地義的. 所謂知己知彼, 百戰百勝. 你不懂它是什麼, 或是被後運作的原理, 如何能確保你能掌握所有變化呢?

但是後來想想, verification 和validation 的差別是什麼呢? 一個是do the things right , 一個是do the right things. 掌握程式內部運作, 只是確保do the things right. 若是QA不能確保 do the right things, 那事情只被做了一半. 因此在做code review時, QA不是要去談RD原本該談的部份, 像是strcpy or strncpy好, 要不要用strategy pattern, 要不要extract method等等, 這些是會讓code寫的更好沒錯, 但是這些不一定能夠滿足customer的需求.

另外還有一個重點是, 大部分的QA在coding 這方面, 都遠遠不如RD, 因為畢竟那不是QA平時的工作, 所以要提也提不出個所以然來, 反而讓QA自己失去信心, 讓你在RD心中的credit降低而已.
(當然啦, 如果你coding能力很強, 這點假設當然不成立)

所以QA在做code review時到底要怎麼辦呢? 我個人認為應該是著重在do the right things. 從customer的觀點來看, 你的程式是否有些地方要注意. 像是major user scenarios, maintainability, error handling, testability, performance concern, deployment, useability, operability, security等等, 這些通常是RD會忘記, 或是無法體會的地方. 但是這些地方卻是QA平常一直在接觸, 和熟悉的地方. 所以在做code review的時候, QA要能提出有關這方面的考量.
(當然我的前提假設是, 你不會都是在做functional testing而已, 你會兼顧到其他方面的testing方法. 否則你可能真的不適合去做code review)
(不過話說回來, 台灣的QA大部分只懂functional testing, 所以........, code review...還真的有點不容易)




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

Software Testing 相關的certification

這是目前我收集到有關software testing 的certification, 大部分是國外的, 最後一個是國內的. 基本上國外的都只能在國外考, 因為目前沒有看到國內有人代理.

不過關於証照這東西, 在台灣軟體業界好像不是很重視, 可能是因為太多paper MSCE, 讓人家以為証照是很容易通過, 只要背背考古題就可以過了, 沒有什麼價值. 讓原本用意不錯的東西, 瞬間變的一文不值.

我發現這些考試中, 有些國外有名的作者還寫了不少參考書籍, 像是Rex Black, 還真懂得撈一筆, 下次可以和大家介紹一下.

1. Certified Software Test Engineer (CSTE)
(1) URL
    http://www.softwarecertifications.org/
(2) Description
- The Certified Software Tester (CSTE) certification is intended to establish standards for initial qualification and provide direction for the testing function through an aggressive educational program.
- Acquiring the designation of Certified Software Tester (CSTE) indicates a professional level of competence in the principles and practices of quality control in the IT profession.
- CSTEs become members of a recognized professional group and receive recognition of their competence by business and professional associates, potentially more rapid career advancement, and greater acceptance in the role as advisor to management.

2. Certified Manager of Software Testing (CMST)
(1) URL
    http://www.softwarecertifications.org/
(2) Description
- The Certified Manager of Software Testing (CMST) certification establishes a worldwide standard for the assessment of the capabilities and competencies of software testing professionals that are working at, or soon will work at, the software testing management level.
- Acquiring the designation of Certified Manager of Software Testing (CMST) indicates a level of professional competence in both the principles and practices of software testing, demonstrating the skills and capabilities necessary to manage the software test function.
- CMST certification provides IT upper management a necessary tool to predict the likelihood of success of individuals applying for management level positions.
- The CMST certification provides the IT professional with an objective assessment of their management skills.

3. ISTQB Certified Tester
(1) URL:
    http://www.astqb.org/
(2)
    A. ISTQB Certified Tester, Foundation Level (CTFL)
        a. Entry-level certification: 0+ years of experience
        b. Description
            * Understanding concepts for general types of applications
            * Experience Requirement: None
            * Certification Prerequisite: None
            * Re-Certification Requirement: None
            * Continuing Education Requirement: None
        c. Goals
            * Ensure a broad understanding of the fundamental and key concepts in software testing
            * Provide a foundation for professional growth
            * Ensure an understanding of key concepts in software testing by committed test professionals

    B. ISTQB Certified Tester, Advanced Level (CTAL)
        a. Mid-level certification: 5+ years experience
        b. Description
            * Understanding and tailoring of concepts for specific applications
            * Experience Requirement: 5 years of experience; or 3 years of experience with a relevant 4-year degree
            * Certification Prerequisite: ISTQB Certified Tester, Foundation Level (CTFL)
            * Re-Certification Requirement: None
            * Continuing Education Requirement: None
        c. Types
            * Technical Test Analyst
            * Test Analyst
            * Test Manager
        d. Goals
            * Ensure consistent understanding and execution of proven cutting-edge techniques by seasoned test professionals
            * Support on-going professional growth
            * Lead the software testing profession
    
4. Quality Improvement Associate Certification (CQIA)
(1) URL
    http://www.asq.org/certification/quality-improvement-associate/
(2) Description
    The Certified Quality Improvement Associate has a basic knowledge of quality tools and their uses and is involved in quality improvement projects, but doesn't necessarily come from a traditional quality area.

5. Certified Software Test Professional (CSTP)
(1) URL:
    http://www.testinginstitute.com/cstp.php
(2) Description:
    The International Institute for Software Testing (IIST) has been offering the Certified Software Test Professional (CSTP) certification since 1999.
    CSTP is an education-based certification, based on a Body of Knowledge that covers areas essential for every test professional to effectively perform their job in testing projects.
(3) Objectives
    * Help individuals develop their software testing skills through formal education
    * Establish a common skill set for software testing professionals according to a well-defined Body of Knowledge
    * Create a pool of qualified software testing professionals
    * Prepare candidates for a wider range of software testing assignments
    * Complement company in-house and on-the-job training programs
    * Provide professional recognition and career enhancement
(4) Requirements
    Two requirements must be satisfied before the CSTP certification can be granted. These are:
       A. Formal Education Requirement
       B. Job Experience Requirement

6. Certified Test Manager (CTM)
(1) URL:
    http://www.testinginstitute.com/ctm.php
(2) Description
    Although CSTP has been serving the purpose of establishing a foundation of software testing and providing test professionals with the skill and knowledge necessary to perform different test activities, a gap still exists in the management skills required by test managers and test leads to effectively manage the test process, the test project and the test organization. The Certified Test Manager (CTM) certification has been created to fill this gap. CTM is based on the Test Management Body of Knowledge (TMBOK) developed by IIST through its Advisory Board.
(3) Objectives
    The CTM Certification was developed to fill the gap in the management skills required by test managers and test leads to effectively manage the test process, the test project and the test organization. Specifically, CTM aims at achieving the following objectives:
        * Help individuals develop their test management skills through formal education
        * Establish a common skill set for software test managers and test leads based on a well-defined Test Management Body of Knowledge (TMBOK)
        * Create a pool of qualified software test managers
        * Prepare test professionals, especially those who achieved the Certified Test Professional (CSTP) designation for management and lead positions in software testing projects
        * Provide professional recognition and career enhancement for those who manage test projects.
(4) Requirements
    Two requirements must be satisfied before the CTM certification can be granted. These are:
       1. Formal Education Requirement
       2. Job Experience Requirement

7. 軟體測試工程師(Certified Software Test Engineer,CSTE)
(1) URL
    http://www.csq.org.tw/ct.asp?xItem=435&ctNode=30


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

Test Code必須和Dev Code 的開發一樣嚴謹

Test Code Must Be As Solid As Dev Code
http://blogs.msdn.com/steverowe/archive/2008/08/07/test-code-must-be-as-solid-as-dev-code.aspx

Test Code要能有用, 必須要和開發Dev Code一樣, 要有相同的process和警慎的心態. 否則Test Code將會充滿bug, 無法經得起長時間使用.

最近公司有一份survey 公司和Microsoft test automation的比較. 發現到Microsoft真的很嚴謹在看待test automation:
(1) 認為auto test implementation process 和 development process一樣重要
(2) 有專門的 test automation team.
(3) 要求QA 和RD要加入
(4) test code 也有明確 development phrase
(5) testing script也需要做code review
(6) 有大量的輔助系統來管理和deploy test automation system (Bug tracking system, source control system, log praser, build deployment system, test data management system...)

當下是覺得他們是下很大的工夫, 在落實test automation的進行. 做的是比我們還好很多. 我們只是有, 但是分工還是沒有很細緻, 還是停留在土法大煉鋼的時代. 至少我認為有以下缺點
1. 只靠QA 或少部分的test developer在做開發
2. RD很少加入討論或是提供現成的工具或程式, testability的修改更是少數
3. 並沒有採用像dev process一樣的輔助工具: bug tracking syste, log parser, build deployment, source control system. 即使有用, 但是也不嚴謹. 總是自己認為是Test Code, 心態上就隨便許多
4. 沒有套用code review, design review, architecture design, unit test等這些pratices, 到Test Code身上.
5. 更不用講project management
......
反正只要能交的出來就好, 怎麼做不是重點.

後來在網路上看到"Test Code Must Be As Solid As Dev Code"這篇時, 發現 Microsoft的員工認為他們還是有進步的空間, 他們也認為他們還是沒有像dev code那樣的嚴謹. 他是列出一些Test Code常見的問題,
1. Flaky test code can make determining the source of an error difficult.  
- Tests that cannot be trusted make it hard to convince developers to fix issues.  
- No one wants to believe there is a bug in their code so a flaky test becomes an easy scapegoat.

2. Spurious failures take time to triage.  
- Test cases that fall over because they are unstable will take a lot of time to maintain.  
- This is time that cannot be spent writing new test automation or testing new corners of the product.

3. Poorly written test code will hide bugs in the product.  
- If test code crashes, any bugs  in the product after that point will be missed.  
- Similarly, poor test code may not execute as expected..  

不過比較好玩的部份, 是後來有人問了問題:
It should be done but sounds like a resource nightmare - "hey boss, we need some testers to test the test code..."
How close are you to getting this to happen at MS ? Any problems in
a) getting a budget for this ?
b) finding enough testers capable of doing it ?

我想resource 這是很多公司很多人都考慮的問題, resource不夠是無法做事的.不過我要講的是, 這也要看公司重不重視. 像我們公司RD 和QA 的比例是1:1, 對台灣很多公司來說, 是有點天方夜譚. 同樣地, 當我們公司在看Microsoft對test automation的作法時, 我們也是會覺得有點天方夜譚. 只能說, 要做到那樣不是不可能, 在於你重不重視.





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

深入探索巴菲特的投資哲學

from 巴菲特投資攻略圖解, 三原淳雄著

通常絕招都是簡單有效率, 但是困難是在於你是否能力行. 就像減肥一樣, 少吃多運動是解法, 但是要做到卻不容易.

巴菲特投資哲學精華:

1. 買下一家公司, 而不是股票
- 已打算擁有該公司的一部分的心態購買股票

2. 一開始就打算會賣掉的股票, 哪怕是十分鐘你都不應該擁有
- 一但買進股票, 就要遵守終生持有的原則

3. 市場先生絕對無法成為投資人的導引
- 不要被股票行情及經濟動向給迷昏了頭
(市場先生就是股票市場)

4. 了解自己能力所及範圍, 投資才會成功
- 絕對不買自己無法了解的公司的股票

5. 確認股價已經低於企業應有的價值時, 就能夠從中獲利
- 實踐"價值型投資"買進被低估的股票

6. 將資金集中投入少數精選的個股上
- 實踐篩選股票檔數的核心投資

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

Close

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

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

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

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

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼