目前分類:測試基本知識 (108)

瀏覽方式: 標題列表 簡短摘要
Verification v.s. Validation

上週在幫engineer 上training課時, 問了他們什麼是verfication 和validation, 很多人不知道他們是什麼, 以及有什麼區別

這裡是我簡單找到的定義, 希望能幫助你區分兩者的差別

Verification:
- The set of activities that ensure that software correctly implements a specific function
- Are we building the product right?
- Ensure that the product has been built according to the requirements and design specifications.

Validation
- A different set of activities that ensure that software that has been built is traceable to customer requiremetns
- Are we building the right product?
- Ensure that the product actually meets the user's needs, and that the specifications were correct in the first place



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

為什麼我們要做Bug Bash

Why We Conduct Bug Bashes
http://blogs.msdn.com/steverowe/archive/2009/02/13/why-we-conduct-bug-bashes.aspx


什麼是Bug Bash
- A period of time where we tell all of the test developers to put down their compilers and simply play with the product.
- Bug bashes are a time when everyone on the team is asked to spend all of their time conducting exploratory testing.  
 
運作的經驗法則
- Usually a bug bash lasts a few days.
- This particular one was 2 days long.  
- We often make a competition out of it and track bug opened numbers across the team with bragging rights or even prizes for those who come out on the top of the list.
- Sometimes managers will influence the direction by assigning people end-user scenarios or features to look at.  
- Other times the team is just let go and told to explore wherever they desire.  
- Experience has shown me that some direction can be good.  
- Assigning people to explore an area they don’t usually work on gets new eyes on the product and with new eyes come new use patterns and new bugs.  

作者認為bug bash是有用的, 會抓到一些想不到的bug出現. 因為不同的人, 會有不同的想法, 因此會有不同的testing scenario出現. 或是相同的scenario, 看到原先沒有看到的問題.

但是bug bash的代價是昂貴的, 因為你必須停下手邊的工作, 全心來找product的問題. 因此會導致你手頭上, 會累積很多其他工作.

那為什麼還要做bug bash呢? 他的ROI是什麼呢? 作者認為理由有三
1. A bug bash flushes out a lot of bugs in a short period of time.
- Our most recent bug bash saw the number of bugs opened jump to 400% of the daily average.
- This is important because we frontload the finding of the bugs.  
- The earlier we know about bugs, the more likely we are to be able to fix them.  
- Knowing about more bugs also helps us make more informed triage decisions.

2. They are likely to find bugs on the seams.  
- Test automation can only find certain kinds of bugs.  
- Exploratory testing is a much better way to find issues on the seams—where functional units join up
- Sometimes these bugs are the most critical.  
- We obviously don’t find all such issues through bug bashes, but we do find a lot.

3. Get a sense of the product.  
- Most of the time we spend our days focused on one small part of the operating system or another.  
- It’s hard to get a sense for the state of the forest while staring at individual trees.  
- After spending several days conducting exploratory tests on the product, we can get a much better sense whether the overall product is doing well or if there are serious issues.


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

如何做瀏覽器的相容性測試

Browser compatibility testing
http://www.teknologika.com/blog/browser-compatibility-testing/


1. 什麼是網站的瀏覽器相容性測試?
- The goal of browser compatibility testing is to ensure that the site renders without error on the target web browsers.
- Some minor rendering differences are expected from browser to browser, or within different versions of the same browser.

2. 瀏覽器內rendering engine 的特性
- These types of rendering differences will occur typically across major versions of browsers.
- The same rendering engine is typically used on all platforms for multi-platform browsers, the same version of the same browser will typically render the same result on all platforms that it supports.
- This reduces the need for testing the same version of a browser on multiple platforms, however simple sanity checking of browsers cross platform is recommended if the configuration is already available.

3. 各家瀏覽器市佔率的狀況
Source: http://marketshare.hitslink.com/


4. 如何決定哪些瀏覽器需要測試
- It is used by a significant portion of a sites users, and is in common, widespread usage.
- It is the default browser on the latest version of Windows or Mac OS X.
- It is a newly released browser which is expected to quickly gain a significant portion of browser market share, e.g. IE 8 or Google Chrome

5. 根據以上的市佔率和要測試的規則, 作者認為以下是入圍的瀏覽器
Browser                            Reason for inclusion in test matrix
Internet Explorer 7.x         Most common browser in use today.
Internet Explorer 6.x         Second most common browser in use today.
Firefox 3.0                         Latest version of Firefox, and has > 10% market share.
Safari 3.x                         Default browser on Mac OS X.
Internet Explorer 8.x         Latest version of Internet Explorer that is expected to be the most common browser in the future.
Google Chrome                 Expected to be a common browser in the future.

6. 哪些Bug我可能會發現?
- To decide what we need to test we need to understand what is likely to break.
- The current batch of web browsers have a set of commonly known bugs and differences.
- If you understand these differences, you can go a long way to understanding why pages render differently in different browsers.
- Internet explorer has a large number of CSD layout issues and rendering bugs.
- reference information: http://www.positioniseverything.net/explorer.html


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) 人氣()

Testing Efficiency和 Testing Effectiveness的差別

2 Notorious “E”’s of Testing
http://shrinik.blogspot.com/2008/11/2-notorious-es-of-testing.html

Efficiency和 Effectiveness這兩個字, 自一開使我就沒有搞清楚, 他們有什麼差別. 可能是我英文不好吧, 總覺得應該是一樣的. 沒想到和verification和validation 一樣, 都是大有學問, 並且有明顯的不同.

Peter Drucker為這兩個字下了很好的定義:
Efficiency(效率) is doing things right;

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

Don't Work
http://blog.abakas.com/2008/11/doesnt-work.html

每次我在做bug review, "Don't work"是我最怕看到的. 因為這句是沒有太多意義的, 而且會讓人家覺得我們家的QA不夠專業.

作者提到當看到don't work可能代表這些意義
1. Pretty unlikely.
- For all we tease developers sometimes, it's pretty darn rare for a feature to not work at all under any circumstances.

2. Antagonistic.
- Congratulations. You've basically accused the implementors of totally screwing up, quite possibly on
purpose.
(RD和QA之所以會互相看不順眼, 這些地方都是導火線)

3. Really hard to do anything about.
- What exactly is actionable about that statement? What are you expecting the person to do?


所以當你在寫下don't work 之前, 你要先好好想一想, 確認你是否有做到下面幾件事
1. Being polite.
2. Being precise about what you did and what you saw.
3. Expressing a desired action, whether its a fix or some help tracking the issue down, or just a sounding board for a rant.

請記得, 專業的人要有專業的行為, 不要再讓我看到 don't work了!!

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

Bug Verification Checklist
http://blog.abakas.com/2008/10/bug-verification-checklist.html

Verifying  bug是QA一定會面臨的情況, 但是它不是一件容易做的事情. 套一句周星馳獎的話, 這種事情是很講天份的. 有些QA只是很單純的, 照本宣科的重新跑一次. 有些QA卻能找出RD是否真正解掉它, 是否會有side effect.

作者提出他自己的一些經驗法則
1. 確定我所run的build有包含修正的程式碼
- In particular when there are a number of branches this is something that needs double-checking.
- Rely on check-ins and build tags for this, not on bug comment time stamps.

2. 重複產生問題的步驟, 確認會產生我想要的結果
- This is the obvious part. I try the thing that broke before and see if the behavior has changed.
- If there's zero change in behavior (i.e., the exact same thing happens), I'm really suspicious - after all the fix attempt is likely to have at least modified the system behavior, even if the fix is complete.
不要認為這個步驟很簡單, 有時候當bug的reproduce 步驟很複雜時, 要能很準確重建原始狀況很不容易.
若是你當初你在找到bug時, 沒有很認真確認, 這時候你就會很痛苦.
或者像是一些hardly reproduce的case, 你更要花很多時間來確認是否真的已經被解決了

3. 確認所有的方式都能過關
- I can't prove this bug is resolved unless I can prove I exercised the thing that used to cause the bug.
我想這裡你需要知道root cause 是什麼, 否則你是無法找出所有的可能性. 因此我會強烈建議QA要去看RD所寫的解法或是root cause分析, 這不但讓你對受測系統更了解, 並且你也能再三確認這解法是否正確, 以及那些scenarios是要再加以驗證的

4. 找尋問題被解決的記號
- Often a bug fix will include a mark or a note that is a secondary way to know the bug was fixed.
- Usually this is in the form of a message that does appear in the log (XX complete) or that does not appear in the log (failure message "blah" does not appear).
- Look for the positive indicators of a fix - success message - in addition to the negative indicators of a fix - lack of prior error.
 
5. 重新再思考這個bug.
- Think I got it? Great.
- I'm going to read the bug one more time, start to finish, especially with a really long bug.
- Maybe the behavior morphed over time, or maybe there is a reference to another problem that sometimes hides this problem.
- Maybe there's a reference to some documentation change that should be opened as a separate request.
- Once this bug is closed out, it's unlikely to be read again, so make sure you get everything out of it that you need.


但是在時間的壓力下, 我也知道大部分的人, 都只是簡單的確認原先的scenario是否已經解掉了. 不過我想妳若是要更上一層樓, 成為不可取代的QA, 是要有所改變的.

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

Microsoft如何測試ASP.NET 2.0 and Visual Web Developer

Testing ASP.NET 2.0 and Visual Web Developer
http://weblogs.asp.net/scottgu/archive/2004/10/28/249458.aspx

很多應該都有興趣Microsoft如何測試他們的產品, 尤其是他們的主流產品. 可惜的是, 市面上不太容易找到這樣的資料, 即使有也都談的很淺.
這篇(2004的文章)是我很久以前找到, Microsoft如何測試ASP.NET 2.0 and Visual Web Developer, 我想很值得大家參考. 作者是ASP .NET的manager, 我想大方向上, 應該是可靠的資訊.
1. Team的組織架構
(1) Test的成員
- Our test team is staffed by engineers who own writing test plans, developing automated tests, and building the test infrastructure required to run and analyze them.  
- The job title we use to describe this role at Microsoft is SDE/T (Software Design Engineer in Test).
(2) 其他成員的組成
- All members of the test team report through a Test Manager (TM)
- Similarly all members of the development team and program management team report through a Development Manager (DM) and Group Program Manager (GPM) respectively.  
- The TM, DM and GPM are peers who report to a Product Unit Manager (PUM) who runs the overall product team (note: 作者就是PUM).
(3) RD和QA的比例
- We currently have approximately 1.4 testers for every 1 developer.
 
2. 為什麼test team要比development team大?
(1) We take quality pretty seriously at Microsoft – hence the reason we invest the time and resources.

(2) We also have a lot of very hard requirements that necessitate a heck of a lot of careful planning and work to ensure high quality.  
- different processor architectures (x86, IA-64, and x64 processor architectures),
- on 4 different major OS variations (Windows 2000, Windows XP, Windows 2003 and Longhorn)
- support design-time scenarios with 7 different Visual Studio SKUs, and be localized into 34+ languages

(3) Long maintenance period
- Making things even more challenging is the fact that Microsoft supports all software for at least 10 years after the date of its release
    > which means that customers at any point during that timeframe can report a problem and request a QFE fix.  
- We’ll also then do periodic service packs (SPs) rolling up these fixes during these 10 years as well.
 
3. What is our process for testing?
(1) 基本上分成三個重要的階段
a. We build detailed test plans that comprehensively cover all product scenarios
b. We automate the test scenarios in the test plans to eliminate the need for manual steps to test or verify functionality
c. We build and maintain infrastructure that enables us to rapidly run, analyze and report the status of these automated tests

(2) Test Plans
a. Test Plan 的內容
- Test plans are the first step, and happen as early as possible in the product cycle.  
- A separate test plan will be written by a tester for each feature or feature area of the product.  
- The goal with them is to comprehensively detail all of the scenarios needed to test a given feature.  
- The test plan will group each of these scenarios into a test case
    > where 1 test case might have up to 10 or more separately verified scenarios,
    > assign a priority (P1, P2, or P3) to each test case.

b. Feature Team中對quality的運作
- The entire feature team (pm, dev, and test) will get together during a coding milestone to review the test plan and try to ensure that no scenarios are missing.  
- The team will then use the test plan as the blueprint when they go to write and automate tests, and they will implement the test scenarios in the priority order defined by the plan.

c. 專案運作過程如何改進Test Plan
- During the product cycle we’ll often find new scenarios not covered by the original test plan.  
- We call these missing scenarios “test holes”, and when found they’ll be added to the test plan and be automated.  
- Every new bug opened during the product cycle will also be analyzed by test to ensure that it would be found by the test plan
    > if not, a new test case is added to cover it.

d. Test Plan 的Sample
- Here is a pointer to a few pages from the test plan of our new GridView data control in ASP.NET 2.0: http://www.scottgu.com/blogposts/testingatmicrosoft/testplan/testplan.htm
- The full test plan for this feature is 300+ pages and involves thousands of total scenarios
- Note that some of the test cases have a number associated with them
- Look at the first AutoFormat one
    > it indicates that this test case was missed during the original review of the document (meaning a test hole) and
    > it has been added in response to bugs being opened (110263 is the bug number).

(3) Test Automation
a. Test automation的時機
- After testers finalize their test plans, they will start writing and automating the tests defined within them.  

b. 使用的languages和tools
- We use a variety of languages to test the product, and like to have a mixture of C#, VB and some J# so as to exercise the different compilers in addition to our own product.
- Tests on my team are written using a testing framework that we’ve built internally.  
- Long term we’ll use vanilla VSTS (Visual Studio Team System) infrastructure more and more, but given that they are still under active development we aren’t using it for our Whidbey release.  
The teams actually building the VSTS technology, though, are themselves “dogfooding” their own work and use it for their source control and testing infrastructure (and it is definitely being designed to handle internal Microsoft team scenarios).  

c. Test Case的內容和 Sample
- The test cases themselves are often relatively straight forward and not too code-heavy.  
- Instead, the bulk of the work goes into the shared test libraries that are shared across test scenarios and test cases.  
- Here is a pointer to an example test case written for our new WebPart personalization framework in ASP.NET 2.0: http://www.scottgu.com/blogposts/testingatmicrosoft/testcase/testcase.htm
- Note how the test case contains a number of distinct scenarios within it – each of which is verified along the way.  
- This test case and the scenarios contained within it will match the test plan exactly.  
- Each scenario is then using a common WebPart automation test library built by the SDE/T that enables heavy re-use of code across test cases.

d. Test Cases 和 Functional Test Scnearios的數量
- My team will have ~105,000 test cases and ~505,000 functional test scenarios covered when we ship Whidbey.  

e. Coverage Testing的pass criteria, execution time, tool
- Our hope/expectation is that these will yield us ~80-90% managed code block coverage of the products when we ship.
- We use this code coverage number as a rough metric to track how well we are covering test scenarios with our functional tests.  
- We also then measure “arc” coverage, which includes measuring further individual code paths within a block  
- We measure both block and arc numbers regularly along the way when we do full test passes (like we are doing this week) to check whether we are on target or not.  
- One really cool thing about VS 2005 is that VSTS includes support to automatically calculate code coverage for you

f. 如何提升coverage ratio
- There is always a percentage of code that cannot be easily exercised using functional tests
    > common examples: catastrophic situations involving a process running out of memory, difficult to reproduce threading scenarios, etc
- We exercise these conditions using our stress lab
    > where we’ll run stress tests for days/weeks on end and put a variety of weird load and usage scenarios on the servers
    > for example: we have some tests that deliberately leak memory, some that AV every once in awhile, some that continually modify .config files to cause app-domain restarts under heavy load, etc
- Stress is a whole additional blog topic that I’ll try and cover at some point in the future to give it full justice. - Going forward, my team is also moving to a model where we’ll also add more fault-injection specific tests to our functional test suites to try and get coverage of these scenarios through functional runs as well.

4. Running Tests
(1) 測試管理系統: Maddog
- My team uses an internally built system we affectionately call “Maddog” to handle managing and running our tests.  
- Post Whidbey my team will be looking to transition to a VSTS one, but for right now Maddog is the one we use.
- Maddog does a couple of things for my team, including:
    > managing test plans
    > managing test cases
    > providing a build system to build
    > deploy all test suites we want to execute during a given test run
    > providing infrastructure to image servers to run and execute our tests
    > ultimately providing a reporting system so that we can analyze failures and track the results.

(2) Testing Lab
- My team currently has 4 labs where we keep approximately 1,200 machines that Maddog helps coordinate and keep busy.  
- The machines vary in size and quality – with some being custom-built towers and others being rack-mounts.

(3) How Maddog handles test execution
- We use Maddog to help coordinate and use all these machines.  
- A tester can use Maddog within their office to build a query of tests to run
    > selecting either a sub-node of feature areas – or doing a search for tests based on some other criteria
    > then pick what hardware and OS version the tests should run on, pick what language they should be run under (Arabic, German, Japanese, etc),
    > pick what ASP.NET and Visual Studio build should be installed on the machine,
    > pick how many machines it should be distributed over.
- Maddog will then identify free machines in the lab
    > automatically format and re-image them with the appropriate operating system
    > install the right build on them
    > build and deploy the tests selected onto them, and then run the tests.  
- After everything is selected above, the tester can hit “go” and launch the test run.  Anywhere from 30 minutes to 14 hours later it will be done and ready to be analyzed.
 
5. What tests are run when?
(1) Functional Test執行時機
- We run functional tests on an almost daily basis.  
- We do a functional run on our shipping products every time we release a patch or QFE(Quick Fix Engineering, this is the Microsoft and Intel term for a hotfix).  
- We also do a functional run anytime a big software component in Microsoft releases a GDR(General Distribution Release) (for example: a security patch to Windows).
(2) 何時Run Subset Test Cases
- With ASP.NET 2.0 and Visual Web Developer we’ll usually try and run a subset of our tests 2-3 times a week.  
- This subset contains all of our P0 test cases and provides broad breadth coverage of the product (about 12% of our total test cases). 
(3) 何時Run Full Test Cases
- We’ll then try and complete a full automation run every 2-3 weeks that includes all PO, P1, P2, P3 test cases.
- As we get closer to big milestone or product events(like a ZBB, Beta or RTM), we’ll do a full test pass where we’ll run everything
    > including manually running those tests that aren’t automated yet

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

Report不只是Report而已


最近同時有好幾個小project同時在進行, 因此需要要求撰寫test status report, 讓相關的stakeholder知道目前的狀況.

可是我發現當我在assign member撰寫這份report時, 他們會問我要寫什麼樣的內容, 我是有給了一份基本制式的範例, 讓他們參考. 不過事後我想了一下, 我應該告訴他們, 這只是其中一種形式. 除了提供目前的狀態讓相關stakeholder知道外, 重點是你要思考一些事情. 思考你目前做的事情是否哪些地方做的不夠, 或是有哪些risk, 或是哪些地方要新增. 希望你能的藉由這些機會, 好好回顧過去, 展望未來.

我想我們花了太多時間, 在做test execution的事情. 可是卻很少花時間, 在討論我們所做的事情的品質. 在每次撰寫test status report, 應該是一個好的時機點, 讓大家坐下來,  一起思考一下, 我們自己表現的如何, 事情處理的好不好. 不要認為這是浪費時間, 需知道 faster is slower. 你一定聽過兩個樵夫砍樹的故事, 若是能經常花些時間磨利一下你的斧頭, 每次砍樹的時候才能更有效率.

以下這篇提供了一些思考方面, 可以參考一下

Planning for reporting
http://www.michaeldkelly.com/blog/archives/234

* How much testing did we plan to do and how much of that have we done?
* What potential tests are remaining and in which areas?
* What is our current test execution velocity and what has it been for the duration of the project? How does that break out across testing area or test case priority?
* What is our current test creation velocity and what has it been for the duration of the project? How does that break out across testing area or test case priority?
* How much of our tests have been focused on basic functionality (basic requirements, major functions, simple data) vs. common cases (users, scenarios, basic data, state, and error coverage)vs. stress testing (strong data, state, and error coverage, load, and constrained environments)?
* How much of our testing has been focused on capability verses other types of quality criteria (performance, security, scalability, testability, maintainability, etc…)?
* How many of the requirements have we covered and how much of the code have we covered?
* If applicable, what platforms and configurations have we covered?
* How many issue have we found, what severity are they, where have we found them, and how did we find them?
* Which of the stakeholders’ questions can we answer? What are the answers?
* Which questions can we not yet answer? What keeps us from answering them?
* To the stakeholders: How well are we answering your questions? What other information would you like from us?
* Did the automated tools employed meet their purpose?
* Did we get enough ROI from those tools to justify their continued usage?

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

Insoucing, Outsourcing, Crowdsourcing, or Testsourcing?


最近我們一群manager再討論, 接下來要研究哪些主題, 其中有一個topic是outsourcing. 雖然有些team已經開始這樣做了, 但是大部分的team還是不熟悉這樣的流程或是model, 並且其中有些team反應的結果也並不十分理想. 所以這個主題是值得研究一下, 不過目前手邊可找的資料真的很少, 實在不知如何下手

不過等到我看到這篇文章時, 當場我就覺得我們又落後人家一大段了. 他提到外包可分成四個階段: Insoucing, Outsourcing, Crowdsourcing, 和 Testsourcing. 說真的, 後面兩各聽都沒聽過. 可是我們現在還在第二階段的初期, 看起來要學的東西還真多啊.

the future of software testing (part 1)
http://blogs.msdn.com/james_whittaker/archive/2008/08/20/the-future-of-software-testing-part-1.aspx

Generation                   Role of Vendors
(1st) Insourcing              Provide tools
(2nd) Outsourcing          Provide testing (which subsumes the tools)
(3rd) Crowdsourcing      Provide testers (which subsumes the testing and tools)
(4th) Testsourcing         Provide test artifacts (which subsumes the testers, testing and tools)

1. Insourcing
- Testing was performed by insourcers, people employed within the same organization that wrote the software.
- Developers and testers (often the same people performing both tasks) worked side by side to get the software written, tested and out the door.
- The vendors’ role in the insourcing days was to provide tools that supported this self service testing.

2. Outsourcing
- Instead of just providing tools to insourcers, vendors emerged that provided testing itself.
- We call this outsourcing and it is still the basic model for the way many development shops approach testing: hire it out.

3. Crowdsourcing (眾包, 群眾外包)
- Crowdsourcing is a neologism for the act of taking a task traditionally performed by an employee or contractor, and outsourcing it to an undefined, generally large group of people, in the form of an open call.
- Throw it to the crowd (uTest). Vendors provide testers.
- 我找了一些相關的文章解釋crowdsourcing, 應該會幫助大家比較好了解
http://en.wikipedia.org/wiki/Crowdsourcing
http://mmdays.com/2007/10/06/crowdsourcing_1/
http://mr6.cc/?p=592

4. Testsourcing
- Vendors provide tests themselves.
   a. Need reusable test assets.
   b. Sharable environments.
- 老實說, 我還是不懂作者在講什麼, 在網路上也沒有好的解釋. 如果大家有資料, 再歡迎分享.

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

RD:QA到底幾比幾好? 看看Microsoft的講法

google v. microsoft, and the dev:test ratio debate
http://blogs.msdn.com/james_whittaker/archive/2008/12/09/google-v-microsoft-and-the-dev-test-ratio-debate.aspx

RD和QA的比例到底要多少才好呢? 始終沒有定論, 並且也一直在做調整. 像微軟大部分是1:1, 我們公司也大約是1:1. 前年曾聽我們公司美國部門的人說, 那時候流行是3:1. 那國內呢?可能是無限大比一, 因為很多公司根本沒有QA.

作者提到大部分微軟是1:1, 有些team是 2或3 : 1, 可是Google的狀況剛好相反, 他們是一個tester負責很多developers. (作者還戲稱是bug-writing的developers, 這點上Microsoft和Google倒是有共識)

所以那個比較好呢? 以下是作者的看法

A. 1:1
1. 優點
- It shows the importance we place on the test profession and frees developers to think about development tasks and getting the in-the-small programming right.
- It maximizes the number of people on a project actively thinking about quality.
- It speeds feature development because much of the last minute perfecting of a program can be done by testers.
- And it emphasizes tester independence, minimizing the bias that keeps developers from effectively testing their own code.

2. 缺點
- It’s an excuse for developers to drop all thoughts of quality because that is someone else’s job.
- Devs can just build the mainline functionality and leave the error checking and boring parts to the testers.

B. Many: 1
1. 優點
- When testers are scarce, it forces developers to take a more active role in quality and increases the testability and initial quality of the code they write.
- We can have fewer testers because we our need is less.

2. 缺點
- It stretches testers too thin.
- Developers are creators by nature and you need a certain number of people to take the negative viewpoint or you’re going to miss things.
- Testing is simply too complicated for such a small number of testers.
- Developers approach testing with the wrong, creationist attitude and are doomed to be ineffective.

作者也觀察到一個有趣的現象: 在微軟的QA都想扮演RD的角色, 因為在發現 bug的時候, 通常都有能力把它解掉. 但是作者也說, 這樣的行為對RD來說並沒有好處, 因為他並沒有幫RD從錯誤中學到經驗. 同時也可能造成RD偷懶的主要原因.

在我們公司, 也有不少RD提出這樣的見解, 認為1:1的狀況下, 造成RD被寵壞了. 有些RD常常只要收集不到debug log, 就宣稱他們無法解這個bug. 或許真的是太幸福了.

那什麼是理想的比例呢? 作者認為有些複雜的系統, 自然需要比較多的QA, 或是專門的QA測試專門的項目. 當然也有些地方或是方法, 可以將unit testin, automation 和manual testing混合著進行.  但是最重要的是, 作者認為要注意到的是你的工作中, 有多少比例的內容是在做quality assurance.

這句話在我的解讀是: 像是RD不應該只是寫寫code而已, 也需要有unit testing, code review, design review等工作項目. QA的工作也不是因為你在做testing, 你就都是在做quality assurance, 那test case review, design review, bug report inspection, test result inspection等等, 你有沒有在處理. 所以不在於你扮演什麼角色, 而是在於你有沒有任何工作項目, 是來檢查你工作的內容好不好.

否則你只是bug creator而已, 當然啦不是只有RD會這樣, QA若是沒有這種認知, 同樣也是幫兇.


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

如何寫出一份好的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) 人氣()

如何學習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) 人氣()

Cyclomatic Complexity

在討論到程式複雜度時, 大家都覺得很抽象, 什麼是程式複雜度?這種東西是可以被計算嗎? 讓我來跟大家介紹介紹.

首先, 想想程式碼裡面有什麼東西. 我想你會說出有if ... then, while, for等控制指令, 以及一堆library供你使用. 因此科學家就想到, 是否可以來看看這些控制指令來決定程式有多複雜呢? 因為你通常用越多if, while 或是for等指令, 通常代表你的程式邏輯越複雜. 因此其中一種程式複雜的的評量方法就產生了.

這個方法是由Thomas J. McCabe, 在1976年提出的, 這裡有他原先投稿的論文, 大家可以欣賞一下. (其實不會太難, 有空真的可以看一下)

http://www.literateprogramming.com/mccabe.pdf

它的想法很簡單, 要算一個程式有多複雜, 只要將if, while, for 和do while出現的次數加1,  這就是代表這個程式的cyclomatic complexity. 即

cyclomatic complexity = P + 1,  P就是分支節點(if, while, for...)的個數

那你會問說為何要加一呢?
你想想每當出現一個分支點, 就會至少有兩種執行路徑 (execution path)要考慮. 例如:

if (a > 0 )
 do TRUE part
else
 do FALSE part

你需要測試 a > 0和 a<= 0這兩條執行路徑. 若是有兩個支點, 就會至少有三種執行路徑 (execution path)要考慮.

這時候你想一下, 這個東西是否和branch coverage的概念有關聯.  如果有N 個分支點, 那就代表至少有 N+ 1的execution path 要測試, 才會滿足100%的branch coverage. 所以你有了cyclomatic complexity的值(N)之後, 你就知道你至少要測N +1 條path才能滿足 all branch coverage. 也就是你至少要有N+1 組test cases, 才能滿足all branch coverage. (因為每條path要一組test case)

看到這裡, 你有沒有覺得發明cyclomatic complexity這傢伙很厲害, 把software mertic 和software testing結合起來, 並且公式又不會太複雜.

其實光是公式不太複雜這點, 就讓他留名千古了. 就像LOC(line of code), 比他複雜, 或是更有道理, 更準確的 metric不是沒有, 但是最後大家都只記得LOC而已

根據SEI的統計資料, cyclomatic complexity的解讀是這樣的
Cyclomatic Complexity     Risk Evaluation
1 to 10                            a simple program, without very much risk
11 to 20                          a more complex program, moderate risk
21 to 50                          a complex, high risk program
> 50                               an un-testable program (very high risk)


Cyclomatic complexity的優點
    * It is very easy to compute as illustrated in the example.
    * Unlike other complex measurements, it can be computed immediately in the development cycle (which makes it agile friendly).
    * It provides a good indicator of the ease of code maintenance.
    * It can help focus testing efforts.
    * It makes it easy to find complex code for formal review.
    
Reference:
1. Cyclomatic Code Complexity Analysis for Microsoft .NET Applications
http://www.codeproject.com/KB/architecture/Cyclomatic_Complexity.aspx

2. WiKi: Cyclomatic complexity
http://en.wikipedia.org/wiki/Cyclomatic_complexity

Note
可能有人會問我說, 你講的公式和McCabe講的不一樣. 它的是V(G) = E- N + 2
V(G): Cyclomatic complexity
E: the number of flow graph edges
N: the number of flow graph nodes
其實這兩個值算出來是一樣的, 只是我講的公式比較好記, 比較直覺. 不過可能在switch case時, 它的公式比較不會搞混.

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

What Is the Difference between Inspection and Testing?

當我在上continuous integration的課程時, 在Chapter 7談到"What Is the Difference between Inspection
and Testing?", 我發現到, 大家對於這兩個東西真的不太了解, 即使他已經是資深的QA, 也是無法解釋清楚.

課本上寫著
Testing is dynamic and executes the software in order to test the functionality.
Inspection analyzes the code based on a set of predefined rules.

似乎已經已經寫到重點, 可是又好像很模糊. 我問大家知不知道時, 台下可是一陣安靜.

其實這裡的重點是dynamic這個字, 若是我們把"What Is the Difference between Inspection and Testing?"改成"What Is the Difference between Static Testing and Dynamic Testing?" 就會比較容易了解.

所謂static testing就是, "不藉由執行受測程式"的方法, 來檢查程式是否有問題. 這就是為什麼它強調 static的原因.
而dynamic testing 就是, "藉由執行受測程式"的方法, 來檢查程式是否有問題.這就是為什麼它強調 dynamic的原因.

Inspection 只是static testing其中一種方法而已. 它只是根據一些rules, 來檢查受測程式是否有遵守.
一般大眾認知的functional testing , 則只是dynamic testing其中的一種方法而已. 在這書上, 它把functional testing 泛稱為testing, 所以你會很容易引起誤解.

這兩種方法(static testing和dynamic testing), 都是software testing methodlogy的一部份. 只是科學家把他們做了比較formal的分類而已, 所以給了他們不同的名稱.





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

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) 人氣()

Acceptance Test Engineering

微軟最近有一本pattern & practices的書, 叫做Acceptance Test Engineering. (目前是在beta stage) 它是用來解決以下問題
    * How to Plan for Acceptance Testing
    * What Kinds of Acceptance Tests to Run
    * How to Create and Run Acceptance Tests
    * Defining What “Done” Means

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

Fuzz Testing

最近有些人在問fuzz testing是什麼, 再加上剛好有memeber正在做這樣的測試,  並且分享Fuzz testing是什麼以及怎麼做. 所以我就花了一些時間把他們的東西整理一下.(感謝Chris Chen的study)

首先先看一下Fuzz Testing的定義, 這是從Wiki上找到的
Fuzz testing, fuzzing, Robustness Testing or Negative Testing is a software testing technique that provides random data ("fuzz") to the inputs of a program. If the program fails (for example, by crashing, or by failing built-in code assertions), the defects can be noted.

這裡我們舉一個例子, 看看怎麼用它在測試CGI的程式:
例如正常的Http request是這樣:

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

Close

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

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

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

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

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼