﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-qileilove-随笔分类-CMMI &amp; QA</title><link>http://www.blogjava.net/qileilove/category/51390.html</link><description>不想做屌丝的码农，不是好项目经理！屌丝生涯从此开始！</description><language>zh-cn</language><lastBuildDate>Mon, 08 Dec 2014 13:42:49 GMT</lastBuildDate><pubDate>Mon, 08 Dec 2014 13:42:49 GMT</pubDate><ttl>60</ttl><item><title>高能力成熟度软件企业中软件质量工程师的职责</title><link>http://www.blogjava.net/qileilove/archive/2014/12/08/421189.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Mon, 08 Dec 2014 13:27:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2014/12/08/421189.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/421189.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2014/12/08/421189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/421189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/421189.html</trackback:ping><description><![CDATA[<div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">随着科学技术的不断发展进步，企业之间的竞争越来越激烈。软件企业要想在竞争中发展生存，提高软件产品质量已成为必要条件。在一些高能力成熟度软件企业中，专门成立了质量保证和控制职能部门，起着提高<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">项目管理</strong></u></a>透明性和确保软件产品质量的双重作用。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">软件质量工程师</strong></u></a>是隶属于质量监控部门的工程师，他们独立于项目对质量保证经理负责，以独立审查的方式监控软件生产任务的执行，给开发人员和管理层提供反映产品质量的信息和数据，辅助软件工程组得到高质量的软件产品。每位软件质量工程师可以同时介入多个项目。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师的<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>原则是"用过程质量确保产品质量"。 软件质量工程师在软件生存期的各个阶段起着不同的作用，是软件项目开发过程中不可或缺的重要成员。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师的职责分为组织相关的职责和项目相关的职责。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　<strong style="word-break: break-all; line-height: normal !important;">1.组织相关的职责</strong></div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;与客户及时沟通，确保客户满意</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师应当担当"客户代表"的角色，及时与客户进行沟通，了解客户对产品质量、开发进度、开发费用等方面的需求。定期进行客户满意度调查，对客户反馈信息进行分析，为项目管理提供分析结果，及时根据客户需求协助项目经理调整项目开发计划。 &#183;内部评审</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师参与项目的内部评审活动，其职责包括确定评审员，为评审组织确定评审内容，确保评审按既定的过程执行，并向管理团队通报评审结果。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;审计</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师参与改进并跟踪现有审计制度以适应项目和产品解决方案发展的需要。软件质量工程师相互协作以确保不断地改进现有的审计内容和审计制度，提高管理的透明性。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;度量</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　其职责主要是进行量化过程管理，包括完善和执行统计过程控制，贯彻执行度量标准，通过数据采集和分析完善度量基准。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　<strong style="word-break: break-all; line-height: normal !important;">　2.项目相关的职责</strong></div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;为相关项目提供过程管理和质量保证咨询</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师参加项目启动会议，为制定项目开发计划提供相关历史数据。为项目开发人员提供质量保证相关知识的咨询。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;帮助项目建立切实可行的质量保证目标，选择适当的质量保证基准</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师根据客户需求、企业内部质量审查标准、行业标准，按照项目类别建立项目质量保证目标，与项目成员一起讨论并进行必要的修改。明确度量标准和数据收集方法，在项目实施过程中根据建立的目标对项目进行实时监控。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;制定项目质量保证计划</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师根据项目类别、质量保证目标、项目开发进度制定相应的质量保证计划。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;项目审查</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师应当参与必要的项目审查。审查内容包括：</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　- 产品需求说明书</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　- 软件项目开发计划</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　-&nbsp;<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试</strong></u></a>计划</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　- 测试总结报告</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;数据收集和分析</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师负责按软件质量保证计划收集与项目相关的数据，通过对数据进行分析，及时将与质量相关的反馈和建议汇报给项目负责人和高级主管。项目负责人根据反馈数据调整项目开发计划。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;项目审计</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师负责鉴别项目开发中与项目质量保证计划中规定的标准和过程不相符的内容，当这些内容与计划偏离比较多，以至于可能影响到项目的及时高质量完成时，可以考虑召开项目审计会议。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师负责会议的计划、主持，确保审计所有偏离内容，并汇报审计结果。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">系统测试</strong></u></a></div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师可以介入系统测试，确保软件产品符合质量要求，满足客户需求。软件质量工程师帮助系统测试工程师收集数据，将数据分析结果反馈给项目负责人、系统测试工程师和项目组其他成员。</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#183;错误预防</div><div style="word-break: break-all; line-height: 21.6000003814697px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　软件质量工程师负责提供历史和当前数据，帮助项目了解项目所处状态、进度和存在的弱点。所有的错误预防工作都应由项目负责人计划并跟踪，软件质量工程师负责监督。<br /><br /><br /></div> <div><div id="SL_button" class="ImTranslatorLogo" style="display: none; background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/imtranslator-s.png);"></div><div id="SL_shadow_translation_result2" style="display: none;"></div><div id="SL_shadow_translator" style="display: none;"><div id="SL_planshet" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/bg2.png) #f4f5f5;"><div id="SL_TB"><div id="bubblelogo" class="ImTranslatorLogo" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/imtranslator-s.png);"></div><table cellspacing="1" border="0" id="SL_tables"><tbody><tr><td class="SL_td" align="left" width="20%"><div id="SL_lng_from">English&nbsp;&#187;</div></td><td class="SL_td" align="left" width="20%"><select id="SL_lng_to"><option value="af">Afrikaans</option><option value="sq">Albanian</option><option value="ar">Arabic</option><option value="hy">Armenian</option><option value="az">Azerbaijani</option><option value="eu">Basque</option><option value="bn">Bengali</option><option value="be">Belarusian</option><option value="bg">Bulgarian</option><option value="ca">Catalan</option><option value="zh-CN">Chinese&nbsp;(Simp)</option><option value="zh-TW">Chinese&nbsp;(Trad)</option><option value="hr">Croatian</option><option value="cs">Czech</option><option value="da">Danish</option><option value="nl">Dutch</option><option value="en">English</option><option value="eo">Esperanto</option><option value="et">Estonian</option><option value="tl">Filipino</option><option value="fi">Finnish</option><option value="fr">French</option><option value="gl">Galician</option><option value="ka">Georgian</option><option value="de">German</option><option value="el">Greek</option><option value="gu">Gujarati</option><option value="ht">Haitian&nbsp;Creole</option><option value="iw">Hebrew</option><option value="hi">Hindi</option><option value="hu">Hungarian</option><option value="is">Icelandic</option><option value="id">Indonesian</option><option value="ga">Irish</option><option value="it">Italian</option><option value="ja">Japanese</option><option value="kn">Kannada</option><option value="ko">Korean</option><option value="lo">Lao</option><option value="la">Latin</option><option value="lv">Latvian</option><option value="lt">Lithuanian</option><option value="mk">Macedonian</option><option value="ms">Malay</option><option value="mt">Maltese</option><option value="no">Norwegian</option><option value="fa">Persian</option><option value="pl">Polish</option><option value="pt">Portuguese</option><option value="ro">Romanian</option><option value="ru">Russian</option><option value="sr">Serbian</option><option value="sk">Slovak</option><option value="sl">Slovenian</option><option selected="" value="es">Spanish</option><option value="sw">Swahili</option><option value="sv">Swedish</option><option value="ta">Tamil</option><option value="te">Telugu</option><option value="th">Thai</option><option value="tr">Turkish</option><option value="uk">Ukrainian</option><option value="ur">Urdu</option><option value="vi">Vietnamese</option><option value="cy">Welsh</option><option value="yi">Yiddish</option></select></td><td class="SL_td" width="13%" align="center">&nbsp;</td><td class="SL_td" width="8%" align="center"><div id="SL_TTS_voice" title="Listen to the translation" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/tts-voice.png);"></div></td><td class="SL_td" width="8%" align="center"><div id="SL_copy" title="Select text" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/copy_hand.png);"></div></td><td class="SL_td" width="8%" align="center"><div id="SL_bbl_font_patch" onclick="alert('Not available for dictionary');"></div><div id="SL_bbl_font" title="Font size" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/font-off.png);"></div></td><td class="SL_td" width="8%" align="center"><div id="SL_TH" title="Translation history" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/history.png);"></div></td><td class="SL_td" width="5%"></td><td class="SL_td" width="8%" align="right"><div id="SL_pin" title="Pin pup-up bubble" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/pin-off.png);"></div></td></tr></tbody></table></div></div><div id="SL_shadow_translation_result" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/bg.png) #ffffff;"></div><div id="SL_bbl_donate" title="Make a small contribution" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/donate2.png);"></div><div id="SL_Balloon_options" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/bg3.png) #f4f5f5;"><a href="chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/options-bbl.html" target="_blank" class="SL_options" title="Show options">Options</a>&nbsp;:&nbsp;<a href="chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/history.html" class="SL_options" title="Translation history" target="_blank">History</a>&nbsp;:&nbsp;<a href="http://about.imtranslator.net/add-ons/chrome-extension/" target="_blank" class="SL_options" title="ImTranslator Help">Help</a>&nbsp;:&nbsp;<a href="chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/feedback.html" class="SL_options" title="Feedback" target="_blank">Feedback</a></div><div id="SL_player"></div><div id="SL_alert100" style="background: url(chrome-extension://noaijdpnepcgjemiklgfkcfbkokogabh/img/util/bg2.png);">Text-to-speech function is limited to 100 characters</div></div></div><img src ="http://www.blogjava.net/qileilove/aggbug/421189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2014-12-08 21:27 <a href="http://www.blogjava.net/qileilove/archive/2014/12/08/421189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QA和RD如何在早期就开始合作</title><link>http://www.blogjava.net/qileilove/archive/2014/07/30/416316.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Wed, 30 Jul 2014 01:59:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2014/07/30/416316.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/416316.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2014/07/30/416316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/416316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/416316.html</trackback:ping><description><![CDATA[<div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　有人说若是QA早一点开始加入项目, 应该可以帮助项目质量变好, 可以帮忙厘清需求, 可以缩短<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试</strong></u></a>时间. 听起来真的好处多多.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　可是真的是这样吗? 我想以各位看倌多年的经验, 应该会觉得不会这么容易. 是的, 是不容易, 但是原因是什么呢?</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　就我个人观感第一个原因是mindset, 是的, 是mindset.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　像我现在在run Agile, 如果大家对Agile有所认识, 应该知道Agile强调就是mindset的转变, 如果心态没有转变成, 要因应变化而积极作调整, 那你在执行的任何practice都因而事倍功半, 最常见的就是便成mini waterfall. 因为我们只是把一个大的, 长的开发时程, 便成一个为期2 weeks 或4 weeks的小型项目. 事实上帮助会有限.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　同样的, 如果你认为QA早一点进去就会有帮助, 那同样也是不切实际的. 因为这要work, 需要很多人的mindset都要改变, RD, QA, manager都要做修正.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　在传统开发流程时, 测试是最后一个阶段, 因此QA养成一个习惯, 那就是需求要ready, design要ready, 程序要ready, 否则就无法开始. 因此不打破这个想法, QA早点进去是没有用的, 因为他会认为这些东西都还没有好, 他什么事也不能作. 所以还是得等到design or code ready, QA才会开始动作.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　所以QA需要转换做事的想法, 不要再认为你只需要被动接受RD或是manager给你东西, 你需要真的积极加入, 自己去创造或是找出你要的东西. 也就是说早点跟manager讨论需求, 和UI designer讨论UI行为的运作, 和RD讨论design的细节, error handling的细节等等. QA是可以领导或是驱动项目的进行, 而不是单纯的被动接受者.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　在开立测试个案时, 心态上也要和以前不同. 你的重点不是要去逮到RD的小辫子, 去冲高bug的数量. 你应该要做的是和RD一国, 一起去提升软件的质量. 也就是说事前就要和RD再三确认, 是否你开的这些case, RD已经加以考虑, 不管是细部功能的运作, 或是例外处理的部份, 都要一一确认清楚. 如果这些东西一开始都设计进去, 都考虑进去, 之后就不会</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　有冗长的bug fixing时间. 需知道有很多bug通常, 都是因为事前没有人说要考虑或是要处理, 导致于最后要花更多时间去修复, 甚至还要在那边讨价还价. 若是这些事前能谈清楚, 那将会节省之后很多时间的.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　此外若是早点请RD review 过测试个案, 说不定可以知道有些测试个案可以不需要开立, 或是需要再加以补充. 像是有地方, 可能你开的case是在测到3 party或是别的team的code, 但是并没有打到自己要测的部份, 像这些可能就可以不要测. 或者, 有时候因为QA对于实作细节不了解, 或是缺乏coding skill, 有些个案便会开不到, RD这时候的建议便可以帮助你补足你不够的部份.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　另外在设计测试自动化的时候, 更是需要和RD早点讨论. 一方面可以让他考虑testaability, 一方面你不会多走一些冤枉路. 有些QA因为怕麻烦RD, 独立自行去开发测试程序, 或是来作performance&nbsp;<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">test</strong></u></a>&nbsp;program, 结果事后却被RD指出, 有容易做到的方法, 或是这样的行为可能和受测软件架构不同. 这时候启不是很冤吗?</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　当然啦, 一个巴掌是拍不响的, 同样的RD的心态也要转变. 在设计时不要认为QA听不懂, 或是无法贡献意见, 就不找他. 至少他加减听的状况下(注1), 当你不完整的文件出来后, 他也比较容易看的懂. 当然啦, 若是他也有coding的基础, 便可以很快知道你内部运作的行为, 对于之后测试个案的开立, 或是bug trouble shooting, 会有很大的帮助.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　(注1: 之前有post篇 "招募SDET来当QA是必要的吗? 正确的吗?" , QA你能加强这篇所说的能力, 否则RD看不起你, 你的<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>也有可能被所谓的SDET所取代.)</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　另外当QA找RD作test case review时, RD也不要认为这跟你没有什么关系, 你需要好好看看这些scenario你是否都已经考虑到了, 你可以趁此机会和QA一起brainstorm, 找出是否需求面或是设计面上是否有考虑不足的地方, 我想这时候花时间, 让之后你程序没有bug,或是bug较少, 这不是件很划算的事情吗?</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　最后, 当然是manager也要改变心态, 需知道前面这些事情要发生, 要开花结果, 都是需要时间. 若是你缺乏耐心, 觉得怎么大家前面花的时间变长了, schedule怎么delay了, 因此而责怪, 责骂, 那只会让这件事情毁掉而已. 这时候你需要的就是稳住, 要信任大家, 也要让大家信任你是愿意要这改变发生.</div><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　看到这里, 我想大家应该了解, 不是单纯让QA早点加入就好, mindset也是同时要做转变的.管理, 让大家能够真正以起合作.</div><img src ="http://www.blogjava.net/qileilove/aggbug/416316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2014-07-30 09:59 <a href="http://www.blogjava.net/qileilove/archive/2014/07/30/416316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何一步一步从 QA 到 EP</title><link>http://www.blogjava.net/qileilove/archive/2014/03/28/411598.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Fri, 28 Mar 2014 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2014/03/28/411598.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/411598.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2014/03/28/411598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/411598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/411598.html</trackback:ping><description><![CDATA[<div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　两三年以前，和友人谈到 QA（软件质量保证） 这个行业，还有 QA 这个团队的未来，就有了一丝忧虑。而现在，终于有机会实践一下自己之前的想法，在这里分享给大家。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　从我有限的从业经验到现在，经历了很多次<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">软件开发</strong></u></a>模式的变化，这些变化，或因为跟风，或因为有切实的问题要解决，总之始终处于各种不同的尝试的路上。QA 团队从最早的强调流程，到后来强调开发技术，搞<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">自动化测试</strong></u></a>，再后来又开始做<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">敏捷</strong></u></a>和持续集成，这条发展的路上，对自己的要求不断变高的同时，也伴随着一个组织和团队发展的魔咒。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　<strong style="word-break: break-all; line-height: normal !important;">　组织发展魔咒</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　这个发展的魔咒更像是一个循环，可能开始于任何一个环节。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　例如，公司负责技术的高层，没来由的认为，测试和质量保证并不重要。这个判断会慢慢渗透到技术团队的各个角落，导致测试工程师，乃至测试团队的其他角色，例如SQA，未来发展的空间会被压缩，而压缩发展空间的结果就是留不住人、招不到人。一方面相关<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>的经验技能要求越来越高，一方面可见的天花板又摆在那里。于是整个 QA 团队都成了别人眼中的 「低技术」团队，不论真的低技术还是别人以为的低技术，这种印象都很要命，为了摆脱这种印象，大家需要做点东西来证明自己，于是各种自动化测试框架、平台、系统，纷纷出现，殊不知此时，QA 团队和整个公司的价值已经慢慢的不一致了，自己关起门跟自己玩，成了普遍现象之后，在公司高层看来，他会觉得自己的 「QA 团队并不重要」的判断被证明了，因为没有任何明确的证据表明，QA 团队与公司愿景和计划之间的直接联系。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　可怕么？在很多软件研发组织中，这是现实存在的循环。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　说起来我们的实践，确实打破了这个循环，说起来好笑，我们解救 QA 团队的方式，就是彻底取消这个团队。但是反过来讲，只有杀死「QA 团队」，才能真正的解放「QA 工程师们」，真正解放整个软件研发过程。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　<strong style="word-break: break-all; line-height: normal !important;">一些基本的价值观</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　这个事情，就要从一些最基本的价值观说起。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　比如，人总要对自己做的事负责。当然做了漂亮的事情，谁都希望头上有光环，但是做了丑事，也要能忍受得了羞辱。之为 「吃自己的狗食」，而老式的软件开发分段流程，等于鼓励上游做的错事，下游来擦屁股，于是上游颐指气使，下游低三下四，这种颐指气使和低三下四还能传导，于是的于是，最下游的一个环节，就是公认的受气包了。暂不说效率和质量，从最基本的做事方法的角度，似乎也有些欠妥。我们这一条怎么落地呢，就是改组研发团队，建立 Owner 制度。一个项目的 Owner，就像一个项目的 CEO，大事小情都要关注，从产品到开发，从测试到运维，总之一个项目的成败，都需要 Owner 来操心，项目外的人，都是他的资源。相应的，项目也变得和平台无关，而与特性有关，每个项目组都会涉及到几个平台的设计、开发工作。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;"><a href="http://www.51testing.com/batch.download.php?aid=45103" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><img src="http://www.51testing.com/attachments/2014/03/14982672_2014032518345918eOq.jpg" border="0" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px;"  alt="" /></a></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　还比如，给质量一个明确的标准。做质量工作或者测试的人，都会有强迫症，总觉得哪里不对劲，还得狠狠的回归一遍，又一遍。可其实大家都知道质量是没有个确定的标准说好还是坏的，那怎么确定质量呢？我们称作 「质量体现在造成实际的影响上」，也就是说，一个严重的问题，如果没造成影响，或很轻微，那就不严重。而一个轻微问题，如果影响面很广，例如有 1000 万用户都看见了，那就不轻微。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　又比如，交付一个完美产品还是建立一个快速召回的机制？我们确实真的想每时每刻都能交付一个完美无暇的产品，但那不可能。特别是在<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">互联网</strong></u></a>行业，跟传统的电信、医疗、航空航天的产品迭代有天壤之别，一个完美产品用一年做出来，市场可能早就变了天了。但不完美就有质量风险和代价，为了平衡这一点，我们必须建立一个快速召回缺陷产品的机制，甚至能让用户在发现缺陷之前，就用上了新版本。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　有了这几条价值观，我们就大概知道开发过程改进的方向，以及做事情的原则了。那我们做了什么呢？我们组建了 EP 团队。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　<strong style="word-break: break-all; line-height: normal !important;">　EP 是什么</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　说到这里，EP 这个词才第一次出现，这个词的内涵之丰富，可能需要仔细说说。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　我最早看到 EP 这个词，是在当时还是&nbsp;<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">Google</strong></u></a>&nbsp;EP 团队成员的 James Wittaker 写的那一个有名的 「How Google&nbsp;<a target="_self" style="word-break: break-all; color: #202859; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">Test</strong></u></a>」的系列博客中，内容我就不转述了，很多人都读过。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 11.818181991577148px; background-color: #ffffff;">　　EP 是 Engineering Productivity 的缩写，工程生产力的意思，这个团队，就是给整个大技术团队，甚至整个公司提高工作效率的。通俗直白的说，就是一个工具团队。因为工欲善其事、必先利其器，不要小看工具团队，某些程度上来讲，一个产品随着市场的变化可能很快凋亡，而一个好的工程工具，生命力要强得多，比如，开发语言其实就是最基本的工程工具了。那么，对一个公司，或者说交付团队来讲，怎么衡量工程生产力的高低呢？这个衡量方式其实就决定了「EP团队」的工作方向。我们自己定义的工程生产力从低到高的定义是这样的：1）质量，这是最基础的指标，什么都不行，也要保证质量过关，否则一个产品连生存的可能都没有。2）同等质量水平下，追求速度。质量过关了，就要看迭代速度了，你比竞争对手快，你就能活下来。3）同等质量和速度下，工程师的幸福感。如果质量也过关了，速度也快，但是大家过得很苦，天天加班，重复劳动，看不到未来，这也不行。幸福是什么？对我们来说，就是不被反复的简单问题所困扰，该自动的都自动，自动不是说一定快，但是一定省心，这里的幸福就是省心，有精力去关注更多的有意义的事情，而不是每天处理简单重复的问题。4）同等质量和速度，也有幸福感，再看成长。工程师们有没有感受到成长？不断的解决问题或开发产品，感受到的是重复劳动还是成长？其实前三点都做到了，第四点一定是有的。<br /><br /><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;"><strong style="word-break: break-all; line-height: normal !important;">　EP 做什么</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　我们回头说 EP 团队，EP 团队也有自己的人生理想，那就是一个三部曲：替、教、独立。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　第一个是替的阶段，其实就是比较老式的开发过程，我替你测试、替你上线、替你运维。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　这个阶段，完全不符合我们「吃狗食」那一条价值观，按照狗食法则，一个人自己设计开发编码，当然要自己测试，自己写的代码 bug 多要一遍遍回归，这个苦果自己不吃谁来吃？但没办法，大多数程序员在如何测试自己的程序方面没有受过什么训练，为了尽快发布产品，只能替，但这个替的时间要越短越好，尽快进入下一个阶段，教。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　第二个是教，就是教技术团队的其他成员，如何测试自己的程序，如何构造环境、构造数据，如何部署和运维自己的产品。这里的自己做，并不是回到蛮荒时期，例如创业初期只有一个程序员的时候，他当然是自己开发自己测试自己部署，但我们到了第二阶段的自己做，是自己规范的做，通过我们提供的相对完善和规范的工具做。我们就处于这个阶段的初期。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　第三个阶段是独立，独立是说 EP 团队从一个替人做事的下游团队，到一个教人做事的教练团队，真正进化为一个提供技术服务的产品团队。这个产品团队的产品，大多数应该是以一个标准化的、健壮的服务的形式，而不是人力资源的形式，提供给其他团队的。当然这是我们的理想，能否达到或者是否切合实际，还需要时间来观察。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　<strong style="word-break: break-all; line-height: normal !important;">EP 团队和整个技术团队的关系</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　从这三个阶段的描述中，多多少少都提到一些 EP 团队和整个技术团队或整个公司的关系，那这个关系是什么呢？</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　前面提过，我们不希望是个下游替人收尾的团队，我们也有「吃狗食」这样的原则，所以我想到一个比喻，来说明 EP 团队和其他技术团队的关系。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　我们都知道有一个行业叫做汽车制造业，他们遵循一定的规范和标准，还能巧妙的将创意和标准结合在一起，制造出一些工业奇迹，这些汽车被卖给各式各样的人，汽车企业并不关心他们的产品用在什么地方，不过他们又发明了一种叫做 4S 店的东西，用来给那些工业奇迹定期维护、修理、还可以收集市场反馈以便改进产品。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　还有另一个行业叫做物流业，他们的目的就是将货物从一个地方运到另一个地方，这种空间的转移，就是他们为客户创造的价值。在这过程中，他们会利用到汽车制造业产出的汽车，但他们不太关心汽车本身的标准、设计细节，他们只是使用，他们关心的是使用成本、维修方便。出问题，他们会找 4S 店。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　这两个行业之间的交集是汽车，汽车制造业的价值是制造出好的汽车，物流业的价值是货物的到达，汽车制造业不关心你的货物的目的地，物流业不关心他的汽车的制造工艺。但汽车制造业会很关心你怎么用这个汽车，以及积极的帮助你保养，而物流业也会很关心这个车费不费油，好不好开。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　说到这里，你可能已经看明白 EP 团队和其他技术团队的关系了：EP 团队就像汽车制造业，提供高效、低耗的工具；产品技术团队就像物流业，使用工具，快速前进，创造用户价值。他们之间互相依赖，却又彼此独立。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;"><a href="http://www.51testing.com/batch.download.php?aid=45104" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><img src="http://www.51testing.com/attachments/2014/03/14982672_2014032518345922qYr.jpg" border="0" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px;"  alt="" /></a></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　<strong style="word-break: break-all; line-height: normal !important;">EP 都有谁</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　了解了 EP 和周围团队的关系之后，来看看我们的 EP 团队的角色和成员。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　我们的 EP 团队，大致分成如下几个角色（而实际上的工作是混合的，之所以要分开成角色，主要是从招聘的角度出发）：</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　SED，Software Engineer in DevOps。顾名思义，这个角色首先是个软件开发工程师，其次，面向的领域是 DevOps，DevOps 的概念我们就不必多讲了，在实际工作中，SED 工程师是个真正的多面手，他们可能今天在开发一个 Linux server 的自动化上线和回滚的工具，明天就要设计或优化 CDN 的部署，后天又要解决一个 Windows 平台编译加速问题，还有还有一个自动性能 benchmark 工具等着他来开发。这个角色目前我们只有两位，而且这个角色的工程师是最难招聘的，因为新人，或者很小的公司出来的人，很少有受过系统的训练或有比较先进的软件工程思想，而从大公司出来的人，已经被大公司条块分割的工作方式同化，一般只擅长一个领域，而对跨界的或者不懂，或者没兴趣。所以这个岗位的工程师，都是有成熟公司工作经验的 Geek 型的人。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　SA，System Admin。系统工程师，和很多公司的运维工程师很想像，实际上我们现在的状态，做的事情也和大多数公司的运维工程师一样，处理监控，优化服务部署等等，但不一样的是我们的目标是将绝大多数应用层面的运维工作交还给开发团队，所以我们在不断的将监控系统改造为友好的，自助的，也不断的将各位上线部署类的工作做成自动的，现在已经有了很多成果，我们的 SA 主要精力可以放在系统以及更底层的部分了。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　TE，Testing Engineer。测试工程师，其实这个称呼有点名不符实，我们的唯一一位测试工程师，主要的工作其实是发布和迭代控制，要保证整个交付团队的迭代节奏，例如在代码上拉发布分支、触发发布事件、监控数据等等工作，这个工作要求非常精确，又很繁琐，因此和 SED 工程师有非常多的交互，他们负责将这个过程自动化。这里插入介绍一下我们的发布过程，可能大家会更理解为什么还有个「发布工程师」：</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;">　　我们有三个发布 Channel：Beta、RC、Release，作用各有不同。例如 Beta Channel，主要用于一些新特性的提前发布，这里面可能会多少有点缺陷，所以一定要控制人数，并且是那些喜欢尝鲜的用户，他们会用的比较彻底。而 Beta Channel，可能每天都有版本更新，会有一些用户喜欢跟着 Beta 版。而这些新的特性如果用户反馈不错，并且没有什么严重的问题，就会进入最近一次 RC（Release Candidate），这个量就很大了，大概能占到我们每日活跃用户的十分之一到五分之一，这里面的功能在没有意外的话，就是正式发布的功能了，需要注意的是，不是每个 Beta 都会变成 RC。而 RC 在发布几天之后，如果一切正常，就会切换为 Release，Release Channel 一般会在一天之内，让绝大多数活跃用户升级完毕，这个时候，如果程序有 bug，影响就非常大了。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; font-size: 11.818181991577148px;"><a href="http://www.51testing.com/batch.download.php?aid=45105" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><img src="http://www.51testing.com/attachments/2014/03/14982672_201403251834593fRDZ.jpg" border="0" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px;"  alt="" /><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　Venders，外包测试团队。我们有大约六七个人的外包测试团队（on-site），主要负责我们主要产品的人工验收测试。我们对外包测试团队的工作方式也有一个设想，就是一个项目刚开始的时候，外包测试团队应当是先上很多人，然后随着 SED 的介入，让自动化程度加强，慢慢人少下来，直到下一个新项目开始。但这个设想在国内想实现，却没那么容易，主要有几个原因：1）国内的外包测试的工程师，通常是技术和经验都比较初级的人来做，外包测试成了一个门槛低天花板也低的行业，技术和经验缺乏，导致进入新项目以后没办法非常快的上手，而有经验有能力的人，很快就会脱离外包行业；2）外包测试的公司，人才储备不足，很少有人力资源池，都是有需求，现从市场上招，或从竞争对手那里挖，有的人都没见过，就派到客户那边来面试，这也导致了没办法几个月就撤下来，因为他没办法跟候选人签合同。这两个客观原因，我们也比较无奈，所以我们的外包测试团队基本上还是长期 on-site。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　UOE，user operation engineer。用户运营工程师，这个岗位很多人不太容易理解，一般用户运营人员都是跟内容啊、用户打交道的，就像贴吧管理员就是典型的用户运营人员，那为什么要有个运营工程师呢？这个我们是跟硅谷的 Dropbox 学习的。因为在日常工作中，我们发现有想当一部分用户的反馈，不论是新功能的需求还是缺陷，都是技术性很强的，如果你能做到第一时间和用户做深入的，技术含量较高的沟通，从解决问题的成功率上会高很多，而如果你反馈一个技术问题，总是过了几天才有技术人员跟你联系的话，你可能配合排查问题的愿望会小很多。基于这个思路，我们增加了这个角色，同时他们还负责一些运营过程中使用的工具和平台类的研发。可能会有人问这个角色为什么会在 EP 团队？其实仔细分析一下用户运营的工作，会发现他们处理的对象是一个个用户提交的 ticket，这非常像 test case，不同之处是一个是用户事后提交，一个是事先设计，分别保证了优先级和完备性，因此结合起来，对提高质量是非常有益的事情。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　<strong style="word-break: break-all; line-height: normal !important;">EP 团队的工作方式与面临的挑战</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　上面这几个角色，就组成了我们的 EP 团队，这样的一个团队，这样的一个能力构成，就有了一些鲜明的特点，例如：</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　1）没人管的事情我们管，支持所有团队。公司内部虽然分成了很多个团队，但是很多技术问题是找不到人负责的，例如，一个简单的内部数据统计脚本，或者一个发布内容到 CDN 的 CMS，等等。这些事情基本都会由 EP 团队接过来。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　2）做事情没有计划。这个特点可能很多人会觉得匪夷所思，甚至不能接受，但实际上这跟 EP 团队的工作有关系，比如汽车 4S 店，有多少车祸的汽车要修理，多少人为损坏的车要修理，怎么做计划？实际上是遇山开道、遇水搭桥。外部的市场的变化、内部的技术人员的变化，都会有不断的瓶颈出现，而 EP 就要快速发现并解决这些瓶颈，直到发现下一个瓶颈，这个过程没办法有详尽的长期的计划。而替代的是使用目标管理的方式，我们公司内部所有团队都会用一种叫做 OKR（Objective and Key Result）的方式来做管理，简单的说，就是设定目标，然后评估完成度。EP 团队的目标大致有两个方向，一个我们叫做 「Smoothly &amp; Fast」，就是让一切跑通做顺的能力，还有一个就是「实现自助」，能让其他团队的成员，不管是技术还是非技术背景，都能自己通过我们的工具完成任务。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　这些特点看起来很不错，但是实际上带来的问题也非常多，例如：</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　没有成就感。因为所有人都是你的需求方，这个感觉实在是不太好，另一个角度讲，很多研发工程师会觉得开发一个对外的产品比较有成就感，对内的总觉得没意思。这个问题要解决，其实就要靠所谓的「工程师文化」来解决，国内长期以来在职业化上有一些不好的习惯，其实能发明工具的人都是大师，开发语言就是工具，操作系统也是工具，真正的牛人，都在做各式各样的工具。能帮助别人成功的人，是最成功的。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　还有，就是脱离实际。很多人做工具，怎么炫怎么做，流行什么做什么，要么就大而全，这还是好的，更多的时候是想的大而全，半年做不出来。整个公司的价值取向是一致的，特别是小公司，容不得这种炫技一般的工作方式。所以我有一句话，叫做「自 high 无价值」，什么叫「自 high」？就是自己跟自己玩，玩的很高兴。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　还有一个问题，就是招聘困难。这个在 SED 的工作职责部分提过，就不展开了。因为招聘困难，我们就要考虑怎么培养这样的人才，所以我们有一个方法论，叫做「要改进，先体验」，因为很多 EP 的成员是要改进工作过程的，但是怎么改，不是所有人都能搞定，这依赖于大量的经验积累，对经验不足的人，很简单，就是让他去做。要提高研发效率，找到痛点，那就先去做一个月研发；要去改进测试过程，提高效率，就去做一个月测试。一个技术和思维方式都很不错，只是经验少的人，经过一个月的体验，能提出非常多的、而其他人已经麻木了的改进点，并推动实施。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　再有，依赖整个团队的成熟度。不是说有了 EP 这样一个团队，整个公司的效率和工作模式就会有大幅度提升，因为一个汽车再好，你开的方向不对，也到不了目的地。现实中存在着非常多缺乏责任感的 Owner，很多人觉得，我写完代码编译通过了，丢给测试组就行了，没我的事了，这样的想法大有人在，所以从成立 EP 团队，到整个公司的生产力真正被提高，中间不只是提供工具这么简单，还有一系列的指导和训练的工作。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　<strong style="word-break: break-all; line-height: normal !important;">　Why we can &amp; why you can</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;"><strong style="word-break: break-all; line-height: normal !important;">　　最后，关于我们为什么能做这个事情，我们也有一些总结：</strong></div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　1）创业团队。创业团队就是短小精悍，精力集中，没有太多无谓的纷扰，快速交付产品快速迭代是主要的工作方式。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　2）从第一天开始坚持自由和责任的工程文化。从创始人开始，很坚持这种工程文化，有什么样的 leader 就有什么样的团队，所以大家接收和拥抱 EP 的工作模式，也非常快。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　虽然上述这两条很多公司没有，但不代表做不成这个事情，在我看来，只要具备下面几条，想做成 EP 的工作，就并不难。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　1）互联网行业。互联网行业有一个非常好的，区别于以往其他行业的特点，就是你的产品在物理上是自己控制的，提供的只是服务，这非常有利于快速迭代，因为传统行业不可能做到。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　2）快速变化的业务模式。这不是说我们自己要快速变化，而是业务模式和市场不断变化，来推着我们前进。只有业务模式的快速发展，才对生产力有不断更高的要求。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　3）有改变的决心。这个说起来有点虚了，但也很重要，因为 EP 这样的工作模式会有阵痛，例如团队的重组、转型，都会影响到一部分人的利益，特别是团队的管理者，而这些中高层管理者，也确实有能力阻止变革。但坦白的说，很多时候你不主动改变，到了客观环境推动你不得不变的时候，到最后就成了被淘汰的人了。我还有一句话，叫做「组织结构决定工作模式」，意思是说，很多工作模式的出现，是因为组织结构的需要。反过来说，在你的组织里很多很好的工作模式推动不下去，或者效果很差，你就要看看你的组织结构是不是有问题。比如两个本来应该紧密合作的团队，一直合作不好，互相鄙视，你想简化流程，最后流程越做越多，大家都在垒墙，那你就要看看两个团队共同的老板，是不是级别太高了。</div><div style="word-break: break-all; line-height: 21.60000228881836px; margin: 10px 0px; color: #333333; font-size: 11.818181991577148px;">　　4）对团队成员的高标准。前面我提过，我们 EP 团队的大部分是 Geek 型的人，Geek 这个词在英语里是一种很高的评价。只有一个技术和经验都非常丰富的人，才能胜任 EP 这样的工作，所以要坚持不懈的雇佣一流的人才，人不够，可以抓大放小，但绝不能有二流、三流的人在团队里。</div><br /><br /></a></div></div><img src ="http://www.blogjava.net/qileilove/aggbug/411598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2014-03-28 11:06 <a href="http://www.blogjava.net/qileilove/archive/2014/03/28/411598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷开发中的测试——SpecDD模型2</title><link>http://www.blogjava.net/qileilove/archive/2013/06/17/400631.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Mon, 17 Jun 2013 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/06/17/400631.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/400631.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/06/17/400631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/400631.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/400631.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">下图是一张 SpecDD的基本结构图：</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><a href="http://www.51testing.com/batch.download.php?aid=40417" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><img border="0" src="http://www.51testing.com/attachments/2013/06/346836_201306081731161ig8R.jpg" width="789" height="534" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 616px; height: 360px;"  alt="" /></a></p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　从图上我们可以清楚地看到，<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试</strong></u></a>是贯穿于SpecDD整个过程的，从需求到开发到大规模测试，无一不显现着测试的影子。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　不过虽然测试贯穿整个过程，但是其实是不同类别的测试，比如需求阶段的叫做&#8220;设计测试&#8220;，开发阶段的&#8220;验证测试&#8221;，而产品进入大规模测试阶段叫做&#8220;Full Cycle Testing&#8221;，而我今天想讲的 Floater QA，即使是属于开发阶段的测试，下面来主要介绍一下：</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　从英文上分析 Floater QA的意思大约是流浪的QA，引申开来大致就是这个QA不会去固定做一个<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>，而是会参与很多地方的测试，哪里有需要就会去哪里。（以下简称FQA）</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　那这个FQA有哪些地方需要去参与呢？</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 参与<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试用例</strong></u></a>的编写</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 参与功能最初的验证性测试，修改测试用例，并且给出改善建议</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 与开发人员与项目经理紧密合作解决所有阻碍下一步测试的问题</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　为什么需要有FQA这么一种QA的设置呢？</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　因为在实际的<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">软件开发</strong></u></a>过程中，我们可能会经常遇到一种情况，一个功能或者一个产品给QA去测试的时候，由于开发不可能把所有地方都测试过，所以一旦发现严重的问题，这些问题会阻碍QA去进一步的测试，但是开发不一定每次都是能第一时间去修复它，那也就使得对于这个功能的测试会因此暂停。如果这种问题不断累积的话，我们会发现一个更加严重的问题：开发很忙，因为有很多功能需要去做；而QA需要测试的功能也很多，但是却发现很多没法测试下去。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　所以引入FQA这么一类人，他们跟开发与项目经理合作最紧密：</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　1、当功能还在开发的时候，先去写测试用例</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　2、当功能开始有Build可以测试的时候，FQA首先去介入测试，他的测试其实是为后面的正规测试做准备，所以要确保该功能基本功能能够工作正常，符合设计文档，发现了问题，需要直接面对面与开发沟通，快速修复，如果这个最初的测试无法通过FQA的测试，那意味着这个功能的开发部分工作还没有结束，无法让正式的QA团队去进行测试。（平常情况下，开发人员为了改进度，可能草草跑了一下功能就说做好了，导致以后发现很多问题，进而影响其他功能，影响整个进度，而FQA的出现，能让这种情况较少出现）</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　3、FQA测试完成后，开发人员可以正式把这个功能打到&#8220;待测试的状态&#8221;，让正轨的测试人员在各种的环境下进行更加细致的测试和<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">性能测试</strong></u></a>。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　4、FQA测试的同时需要根据需要更新测试用例，让之后的正规QA测试可以做些参考。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　所以，用一句话形容FQA的作用就是：帮助开发人员去高质量完成开发工作，帮助测试人员去顺利进行测试工作，帮助产品的开发能够在可控的范围下进行。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">相关链接：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><a href="http://www.51testing.com/?action-viewnews-itemid-847469" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;">什么是SpecDD？</a></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><a href="http://www.51testing.com/?action-viewnews-itemid-847470" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"></a><a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">敏捷开发</strong></u></a><a href="http://www.51testing.com/?action-viewnews-itemid-847470" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;">中的测试&#8212;&#8212;SpecDD模型</a></p><img src ="http://www.blogjava.net/qileilove/aggbug/400631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-06-17 10:19 <a href="http://www.blogjava.net/qileilove/archive/2013/06/17/400631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>万里航行总舵手——业务测试架构的设计</title><link>http://www.blogjava.net/qileilove/archive/2013/06/04/400147.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Tue, 04 Jun 2013 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/06/04/400147.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/400147.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/06/04/400147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/400147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/400147.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　目前，国内的很多公司，包括一些知名大公司，可能都还没有这个职位，但应会有这样一个角色的存在，比如这个角色落在<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试</strong></u></a>经理或是测试主管的肩上。笔者不敢 称自己是一个专业的测试架构师，只是有一天发现业界有这个职位时，并对着职位描述的定义，发现自己很幸运地在不知不觉中做了一些这方面的事情。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　对于架构，更具体一些指架构模式，如第6章介绍的关于测试对象分析的三层架构模式。一边是深不可测、充满挑战的技术与艺术的高度体现，一边是&#8220;又恐琼楼玉宇，高处不胜寒&#8221;的担忧。高深的东西如何平民化，即那些高调的架构，能不能具体应用到工程实践中，很好地达到预期，而不是成为束之高阁、脱离实际的一堆废话或模型。这里站在项目测试的实用角度，总 结<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>中的经验与教训，提出架构设计的操作模型，如图4-9所示。从图中我们可以看到一个完整的测试架构设计过程包括以下几个阶段。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　1、业务测试框架设计：它包括业务测试技术与流程管理两个部分，基本框架的设计离不开业务需求与公司流程体系。其表现形式可以是一种测试方法、一块代码程序、一系列的流程规范等。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　2、提取测试需求：广义上理解，包括与测试工作相关的业务及非业务需求，只有有了需求（工作中出现的问题也可认为是一种需改进的需求），才可进一步完善框架。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　3、决策/部署测试策略：为测试需求服务的一系列解决方案。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　4、开发测试套件：具体解决测试需求的措施集，如<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试用例</strong></u></a>集、脚本程序、测试工具等。</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><a href="http://www.51testing.com/batch.download.php?aid=40244" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><img border="0" src="http://www.51testing.com/attachments/2013/05/346836_201305291112411AOAn.jpg" width="622" height="388" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 606px; height: 367px;"  alt="" /></a></p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">图4-9&nbsp; 测试架构设计过程示意图</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　这4个阶段，它们之间是相互作用，相互影响的。细心的读者也许已注意到，位于图中内侧的&#8220;提取测试需求&#8221;，它与测试框架的设计并不是一种直接关系，没错，它们之间的关系要通过后续的工作体现在框架中。可以理解为一个新的测试项目开始了，以新的测试需求为起点，通过部署测试策略，开发新特性的测试套件，来完善测试框架。如此往复，依托一个个测试项目，不断改进、壮大测试框架。以使后续的项目测试能重用测试框架的内容或方法，并使整个测试过程始终在有序可控的状态下进行，最终能以高质量且减少项目的整体测试时间来完成测试工作，这也是架构设计的最主要目的。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　对这4个阶段，可以理解为它是一个系统级的最顶层划分，对于每一个阶段，它又可划分为不同的节点。其包含的意思及操作的方法，将在接下来的章节中进行详细讲述。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　一个好的架构，只有在应用中收到实际的效果后，方显它的价值，比如节省了多少测试时间或提高了测试的全面性等。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　主动向他人提需求，是一种架构能力的体现，从而影响开发、需求，甚至其他用户、市场部门为测试部门服务。测试架构设计，需重视过程，它是个不断发展的过程。架构必须由经验丰富的设计人员设计，很大程度上依赖于过去项目的成功与失败的经验。但是正因世界上万事万物都在不停地发展变化着，<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">软件开发</strong></u></a>的方法、模式、具体项目的要求也不同。随着过程中遇到问题的不同，需要做出快速响应，并进行合适的调整，从而提高架构的应用性，丰富它的内涵。提升它应用的高度与广度，为它画上更大的外延，这也是符合事物的发展规律的。</p><div style="word-break: break-all; line-height: 21.59375px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; height: 21px; position: relative; width: 627.1875px;"></div><img src ="http://www.blogjava.net/qileilove/aggbug/400147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-06-04 10:19 <a href="http://www.blogjava.net/qileilove/archive/2013/06/04/400147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何提升SQA的工作价值</title><link>http://www.blogjava.net/qileilove/archive/2013/05/28/399850.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Tue, 28 May 2013 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/05/28/399850.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/399850.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/05/28/399850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/399850.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/399850.html</trackback:ping><description><![CDATA[<h1><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　什么是SQA？相信不少同事都有着这样的疑问。SQA的<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>价值体现在哪里？相信不少刚入行SQA同仁也有这样的迷惑。如何提升SQA的工作价值？我想工作多年的SQA依然有着这样的困扰。这里，我就第二、三个问题谈谈自己的想法。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　当前，国内多数IT公司在<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">项目管理</strong></u></a>上的组织架构，都是弱矩阵的组织形式，因此项目经理没有实际的行政权力。同时，他们有各自的工作，没有较多时间投入项目管理，例如：项目经理主要是由产品、业务、运营等角色担任，他们不是专职和专业的项目经理。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　SQA（Software Quality Assurance）软件质量保证：基本职能是依据组织定义的流程，以独立第三方的角度，客观的对项目活动进行稽核和评价。如果该SQA出色的完成了基本工作职能，项目成员可能仍不知道SQA的价值体现。如SQA处理不当，甚至会引起项目成员的反感，他们认为SQA是来找茬的。即便项目在SQA的检查监督下顺利的完成，也会让项目成员感觉不到SQA的存在价值。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　基于以上两个背景，SQA的衍生职能应运而生。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　一、SQA是项目成员在项目管理上的导师</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　项目管理是每个SQA从业人员必备的专业知识，而流程则是将项目管理理念结合公司实际工作进行提炼。SQA在项目工作中，应以项目管理专家的角色，在项目管理上对组员进行指导，详细解释流程定义的活动，让成员知道做什么（what）、怎么做（how）、为什么（wh、y）。例如：工作量估算的方法、WBS的分解、进度计划的编制等。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　二、帮助项目取得成功，协助项目经理共同管理</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　实际工作中，总结以下几点：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　1、SQA要稽核项目工作，首先要了解项目工作并仔细阅读项目需求，每日及时跟进项目进展，SQA可以此来提升对项目的代入感，同时对项目成员提升SQA的存在感。这是协助管理项目的基础条件。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　2、协助项目团队识别和管理风险问题，及时跟进风险问题解决情况，当风险问题不能在项目层面解决时，SQA以独立第三方的身份将问题上升到更高层面解决。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　3、指出项目成员在流程上的错误，并告知错误工作可能存在的风险问题，按照流程给出正确的指导。由于SQA涉及项目众多，可以将其他项目曾经发生的问题作为案例，当项目成员再次发生类似违规操作时，可以提出曾经的案例作为反面教材，并告知可能的后果。SQA要让项目成员感到，我们是发现问题而不是找茬。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.59375px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff;">　　综上所述，SQA要提升其工作价值，必须做到两个衍生职能，即项目团队的导师和辅助项目管理。我认为，做好第一个衍生职能，能够提升项目成员对SQA的信赖，并更好的融入项目团队中。以此为基础再做到第二个衍生职能， SQA工作才能更好的体现SQA的工作价值。</p><div style="word-break: break-all; line-height: 21.59375px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; background-color: #ffffff; height: 21px; position: relative; width: 627.1875px;"></div></h1><img src ="http://www.blogjava.net/qileilove/aggbug/399850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-05-28 10:26 <a href="http://www.blogjava.net/qileilove/archive/2013/05/28/399850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件项目需求管理</title><link>http://www.blogjava.net/qileilove/archive/2013/05/14/399249.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Tue, 14 May 2013 03:48:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/05/14/399249.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/399249.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/05/14/399249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/399249.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/399249.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">软件需求的概念</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（1）宽泛地讲，需求来源于用户的一些"需要"，这些"需要"被分析、确认后形成完整的文档，该文档详细地说明了产品"必须或应当"做什么。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（2）是用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（3）期望？！ 一种心理活动、笼统、不细致、不懂过程</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求的重要性</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（1）Frederick Brooks在他1987年经典<a href="http://www.51testing.com/html/31/n-845431.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">文章</strong></u></a>"No Silver Bullet"中阐述了需求的重要性：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性<a href="http://www.51testing.com/html/31/n-845431.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">工作</strong></u></a>是编写出详细的需求，包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错，将会给系统带来极大的损害，并且以后对它修改也极为困难。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（2）需求是产品的根源，需求工作的优劣对产品影响最大。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（3）国内软件业的痼疾：人们并不清楚究竟该做什么，但却一直忙碌不停地开发。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; ">了解客户、最终用户、间接用户的概念</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（1）基本概念</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　"用户"（user）是一种泛称，它可细分为"客户"（customer）、"最终用户"（the end user）和"间接用户"（或称为关系人）。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　掏钱买软件的用户称为客户，而真正操作软件的用户叫最终用户。客户与最终用户可能是同一个人也可能不是同一个人。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（2）客户是掏钱买软件的人，所以他是"上帝"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（a）某饭店经理在解释"先有鸡还是先有蛋"这个哲学问题时，精辟地阐述了客户的地位：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　如果顾客先点鸡，那么就先有鸡；如果顾客先点蛋，那么就先有蛋。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（b）"现代营销学之父"菲利普o科特勒所著的《市场营销导论》是这样描述客户的：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　客户永远是本公司的座上客。客户并不依赖我们，而我们却依赖客户。客户不是我们工作的障碍，而是我们工作的目标。我们并不因为服务于他而对他有恩，他却因为给予我们服务于他的机会而有恩于我们。客户不是我们要与之争辩和斗智的人。从未有人曾在与客户的争辩中获胜。客户是把他的欲望带给我们的人，因此我们的工作就是满足这些欲望，从而使客户和我们共同获益。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（c）与客户打交道的主要目的是：一是获取需求，二是签合同。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; ">软件需求的层次</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（1）原始问题描述：对要解决问题的叙述，它是软件需求的基础</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（2）用户需求：用自然语言和图表给出的关于系统需要提供的服务及操作的约束</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（3）系统需求：是用户需求的映射。此时可开发一个简单原型以便给用户一个直观印象。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（4）软件设计描述：在系统需求的基础上加入更详细的内容，它是软件详细设计和实现的基础</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<a href="http://www.51testing.com/batch.download.php?aid=39875" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101638131F6gH.thumb.jpg" width="169" height="250" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 169px; height: 202px; "  alt="" /></a></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求工程的组成</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　把所有与需求直接相关的活动通称为需求工程。</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><a href="http://www.51testing.com/batch.download.php?aid=39883" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101644201CldA.jpg" width="317" height="249" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 299px; height: 235px; "  alt="" /></a>　　</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求工程的一些感悟</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（1）不论是合同项目还是自主研发的产品，都必须开展需求开发和<a href="http://www.51testing.com/html/31/n-845431.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">需求管理</strong></u></a>活动。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　（2）开发者对待需求工程的态度可分"被动型"、"主动型"和"领先型"三种，只有后两种才有可能开发出成功的产品。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　"被动型"是指开发者被动地对待需求工程中的各项活动，能少干则少干，能偷懒则偷懒。他们认为需求是用户的事情而不是自己的事情。开发过程中经常发生需求变更，导致产品迷失方向，不是半途而废就是陷入半死不活的状态。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　"主动型"是指开发者积极地开展需求工程中的各项活动。他们把获取准确的需求当作自己的职责，会想尽一切办法克服需求开发和需求管理过程中的困难，而不是找借口推卸责任。俗话说"良好的开端是成功的一半"，"主动型"需求工程是开发成功产品的必备条件。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　"领先型"是需求工程的最高境界。开发者发掘了连用户自己都没有意识到的需求，导致用户跟着新产品跑而不是新产品围着用户转，这叫引导消费。需求工程做到这个份上，才能使产品立于不败之地，长盛不衰。<br /><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　<strong style="word-break: break-all; line-height: normal !important; ">需求开发的主要困难与对策</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&#183;&#183;&#183;知识技能问题</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）应用域的知识是无边无际的，任何人都不可能是"万事通"。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）当需求分析员缺乏应用域知识时，他该怎么办？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（a）首先他要有勇气做事，否则连实践的机会都没有。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（b）其次他应当赶紧补习应用域知识。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&#183;&#183;&#183;态度问题</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）相当多的开发人员习惯于被动地对待需求开发。每当遇到麻烦、挫折时，他们会发牢骚，找出一堆用户的毛病。很多开发人员错误地以为：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　需求是用户的事情，不是我们的事情。我们为用户开发软件，难道用户不该告诉我们应当开发什么吗？如果用户说不清楚需求，或者经常变更需求，这类问题是用户产生的，应当由他们自己负责。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）用户说不清楚需求或者需求发生变更，这些都是常见的问题，并不是绝症，是人们可以设法解决的。可悲的是开发人员把这些问题当成了借口，不愿主动攻克问题，导致需求问题扩散到整个软件开发过程，产生太多的后患。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）软件企业的领导应当给具有错误观念的开发人员们洗脑：需求分析员的天职就是在有限的时间内获取准确而细致的用户需求，如果做不到就是失职，不要找借口。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求获取</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　需求获取时期的主要工作：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）归纳和整理用户提出的各种问题和要求；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）弄清用户企图通过软件达到的目的；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3） 借助各种工具和方法，陈述用户提出的实际需求，并标定软件的作用范围。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　最终目的弄明白要"做什么"。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">获取需求应采用的步骤</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）确定产品的不同用户类型</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）确定用户需求的来源</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）挑选出每一类用户和其他涉众的代表并与他们一起工作</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（4）商定谁是项目需求的决策者</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">获取需求的方法</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）明确最终用户，与用户交谈，向用户提问题。向用户群体发调查问卷。透过客户所提出的表面需求理解他们的真正需求。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）参观用户的工作流程，观察用户的操作。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）与同行、专家交谈，听取他们的意见。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（4）界面原型法，是指开发方根据自己所了解的用户需求，描画出应用系统的功能界面后与用户进行交流和沟通。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（5）可运行的原型系统法</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（6）分析已经存在的同类软件产品，提取需求。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（7）从行业标准、规则中提取需求。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（8）从Internet上搜查相关资料。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 切记：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 设定用户代言人</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp;&nbsp;如果个别客户不能在需求方面达成一致意见，那么必须由用户代言人作出决策。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求分析</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）需求分析是指在需求开发过程中，对所获取的需求信息进行分析，及时排除错误和弥补不足，确保需求文档正确地反映用户的真实意图。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）分析方法大体有两类："问答分析法"和"建模分析法"。后者技术性比较强，写出来有学术味，故大多数软件工程书籍都有论述。前者就是一些常识而已，虽然写不成文章，但是简单易用（保你一学就会），很有实用价值。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）采用方法：绘制关联图、创建用户接口原型、分析可行性、确定需求优先级、编写数据字典等。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　<strong style="word-break: break-all; line-height: normal !important; ">编写需求文档</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）需求文档包括用户需求和详细的系统需求描述。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）要求</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 正确：正确地反映用户的真实意图；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 清楚：易读易懂；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 无二义性</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 一致</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 完备：没有遗漏一些必要的需求；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 可实现： "可实现"意味着在技术上是可行的，并且满足时间、费用、质量等约束；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 可验证</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 确定优先级：确定高中低三个级别，将风险降到最低。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 阐述"做什么"而不是"怎么做"</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; "><a href="http://www.51testing.com/batch.download.php?aid=39877" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101638251yNXg.jpg" width="313" height="381" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 299px; height: 324px; "  alt="" /></a></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求验证</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）需求验证是为了确保需求规格说明准确、完整地表达了必要的质量特点。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）审查需求文档、依据需求文档编写测试用例、确定产品验收合格的标准。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）验证内容：有效性、一致性、完备性、现实性等。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求管理的重要性</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　如果对已经建成的大楼不满意，要求设计师把大楼的结构调整一下，别人一定会认为这很荒唐。但在软件项目中，这样的事情很常见。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　软件缺陷，发现和修复的越早则成本越低。不幸的是，需求阶段出现的错误往往很难发现，所以需求管理也需要讲究科学。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　原则：需求必须分优先级、必须文档化、需求一旦变化就必须对需求变更的影响进行评估。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求变更存在的必然</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　大师说："没有不变的需求，世上的软件都改动过3次以上，唯一一个只改动过两次的软件的拥有者已经死了，死在去修改需求的路上。"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">变更管理</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　进行变更管理，首先要建立变更控制委员会，变更管理过程包括变更描述、变更分析和变更实现三个阶段：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　变更描述：始于一个被识别的需求问题或一份明确的变更提议</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　变更分析：评估被提议的变更产生的影响</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　变更实现：执行变更，需求文档、系统设计和实现都要修改</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　变更描述阶段，产生需求变更请求表</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; "><a href="http://www.51testing.com/batch.download.php?aid=39878" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101638341PvpH.jpg" width="458" height="302" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 401px; height: 282px; "  alt="" /></a>　　<a href="http://www.51testing.com/batch.download.php?aid=39878" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "></a></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">变更影响分析</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　需求变更影响分析模板中包括的内容：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 变更请求号</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 标题</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 描述</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 分析者</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 分析日期</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 优先级评定</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 相关代价、收益与风险</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 预计对进度、成本、质量的影响</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 被影响的其他需求及任务</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 要更新的计划及文档</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">变更控制流程</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; "><a href="http://www.51testing.com/batch.download.php?aid=39879" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101638401a7lk.jpg" width="219" height="297" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 301px; height: 295px; "  alt="" /></a></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求状态</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　定义：某时间点需求的情况反映。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　客户需求的四种情况：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 客户可以明确且清楚地提出的需求</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 客户知道需要做什么，但却不能确定的需求</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 客户提出需求，但需求的业务不明确</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　&nbsp;&nbsp;&nbsp; 客户自己也说不清楚的需求</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　需求状态：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　已建议&nbsp;&nbsp; 已批准&nbsp; 已拒绝</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　已设计&nbsp;&nbsp; 已实现&nbsp; 已验证</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　已交付&nbsp;&nbsp; 已删除<br /><br /><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">需求文档版本控制</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　对于开发人员来说，最为沮丧的事情莫过于当软件功能实现后，却发现该项功能已被项目经理取消了。原因在于需求文档版本混乱，开发人员没有得到最新的软件需求。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求跟踪</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　目的：建立和维护从用户需求到测试的一致性与完整性，确保实现都以客户需求为基础，实现的需求覆盖了预期的需求，并确保输出与用户需求的符合性。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">需求跟踪的作用</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）在需求验证中，便于确保所有需求被应用</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）有助于变更影响分析</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）便于需求的维护</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（4）便于测试时找出问题所在</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（5）便于项目跟踪和减少项目风险</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（6）简化了系统再设计，易于软件重用</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">案例分析：一个项目需求分析和处理的案例</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">1、&nbsp;案例背景</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　当地一家销售电动工具公司的董事会成员正在举行二月份的董事会会议，这家公司是一家专门制造和销售用于木工用的"黑客"牌电动工具的一家小型公司。会议室里在座的，有董事会主席贝斯&#183;史密斯（Beth Smith）和两个董事会成员罗斯玛丽&#183;奥尔森（Rosemary Olsen）和史蒂夫&#183;安德鲁（Steve Andrews）。贝斯首先发言："我们今年以来的销售非常好，打来的订货电话，已经要把我们的电话都要打爆了，但是，我们没有办法能继续招募到熟悉我们的电动工具、同时还了解我们销售过程的小姐。而与我们竞争的其他公司，都已经上了自动客户服务系统（Call Center）。所以，我们也要上这个系统，才能保住我们的市场。"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"我们必须建立一个计算机自动客户服务系统。"罗斯玛丽响应道。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　史蒂夫建议："难道我们不能把售后服务转给麦肯罗公司（公司下属的一家子公司，以服务为主）做吗？向他们要求一下，看他们是否能把电动工具的服务也接过去？"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"他们也紧张，听说明年他们甚至可能会削减一些服务项目。"贝斯回答。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"我们需要多少钱才能搞这么一个系统？"罗斯玛丽问道。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"大约10万美元，"贝斯回答，"如果我们不能在两个月后就开始启用这个系统，估计我们的定单可能会减少20%。"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"我们除了钱还需要很多东西。我们需要了解是否有更好的方案、开发这个系统需要多少时间，以及，这个系统是不是真的适合我们！"史蒂夫说。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"哦，我想我们完全可以自己来做这个项目，这将是很有趣的！"罗斯玛丽兴奋地说。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"这个项目不是我们的专长，我们不可能及时完成。"贝斯说道。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　罗斯玛丽回答说："我们有几个技术人员，虽然不够，但只要再招聘一二个高手，就可以解决它，并且做好。"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"项目是我们真正需要的吗？我们上了这个项目以后，公司的销售任务就能完成了吗？"史蒂夫问道，"此外，我们正在经历一个困难时期，我们的资金并不宽余。或许我们应当考虑一下，我们怎样能用较少的资金来运作一切。例如，我们用这个系统只处理定单，而并不包括服务，。这样系统是不是就会小一点，也省一点、快一点？"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　罗斯玛丽插话说："多妙的主意，我们可以先完成销售定单的处理，等这部分完成投入使用后，再开发服务部分。公司可以在改进销售功能的同时，继续开发服务功能。这样，我们就可以做得更好。"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　"好了，"贝斯说，"这些都是好主意，但是我们只有有限的资金和技术人员，并且有一个增长的需求。我们现在需要做的是，确保我们在两个月后不必担心丢失定单。我想，我们都同意必须采取行动，但是不能确定我们的目标是否一致。"</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">&nbsp;　<strong style="word-break: break-all; line-height: normal !important; ">2、案例习题</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1） 项目目标是什么？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）已识别的需求是什么？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）如果有的话，准备开发的项目应具备什么样的假定条件？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（4）项目牵涉到的风险是什么？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; ">3、案例分析</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　根据本案例的背景，我们的分析简单描述如下。由于本案例比较简单，而且是自主开发，因此，有些内容可以简略。至少必须描述的内容，用下划线表示：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（1）业务需求</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、背景：一家小型的木工电动工具公司，今年以来的销售形势很好，接受定单的电话很多，已经忙不过来了。因此，需要开发自动客户服务系统。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、项目机遇：通过自动客户服务系统的开发和投入使用，使公司的销售获得增长。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　3、项目目标：开发一套为本公司销售和售后服务使用的计算机自动客户服务系统（Call Center）。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　4、市场需求：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　5、客户价值：满足公司自身发展的需要。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　6、项目风险：项目目标、方案、时间、资金、开发人员等。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（2）方案描述：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、功能视图：自动接听电话，对客户的定单和售后服务要求做出响应。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、主要特征：自动处理一些原来由人工完成的工作，有可能增加新的服务功能。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　3、假设和依赖：二个月时间内完成，总投资为10万美元，自主开发，自己使用。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（3）范围局限</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、首次发行范围：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、随后发行范围：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　3、局限和专用性：只为自己公司使用。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（4）系统环境：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、用户概貌：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、项目优先级：可以先完成定单响应，再完成售后服务功能。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　（5）成功因素：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　我们现在完成的，实在需求获取阶段中介绍的"项目视图"中的内容。在项目视图中，我们对项目做了初步的描述。在背景和目标分析阶段，我们回答本案例问题的答案是：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、项目目标是什么？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　答：开发一套为本公司销售和售后服务使用的计算机自动客户服务系统（Call Center）。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、已识别的需求是什么？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　答：自动接听电话，对客户的定单和售后服务要求做出响应。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　3、如果有的话，准备开发的项目应具备什么样的假定条件？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　答：二个月时间内完成，总投资为10万美元，自主开发，自己使用。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　4、项目牵涉到的风险是什么？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　答：项目目标、方案、时间、资金、开发人员等。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　系统的功能包括：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、从公司的客户方面看，新系统可以自动支持电话、FAX，E_mail、Web等多重通信方式所提供的服务，最大限度的满足客户的需要，最有效地为客户提供快捷方便的服务。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、从公司方面看，新系统要可以支持接入公司的交换机中继线路（24条中继），自动或智能话务分配、坐席画面与电话同步、自动录音等功能。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　3、从提供服务的内容看，可以有：公司产品查询、合同和定单查询、自动处理定单、产品售后服务信息查询、供货信息查询、方案介绍、产品推介、产品报修、故障咨询、投诉等。进一步的购买洽谈，可以转人工处理。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　4、整个系统可以与目前公司已经有的客户信息系统、产品信息系统等建立联系，形成综合的服务系统。</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; "><a href="http://www.51testing.com/batch.download.php?aid=39880" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101638481XnGP.jpg" width="410" height="309" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 391px; height: 290px; "  alt="" /></a>&nbsp;</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px; "><a href="http://www.51testing.com/batch.download.php?aid=39881" target="_blank" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><img border="0" src="http://www.51testing.com/attachments/2013/05/611095_201305101638581Jio6.jpg" width="426" height="385" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 391px; height: 335px; "  alt="" /></a></p><br /><br /></p><div style="word-break: break-all; margin: 10px 0px; height: 21px; position: relative; width: 627.2000122070313px; "></div><br /></p><img src ="http://www.blogjava.net/qileilove/aggbug/399249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-05-14 11:48 <a href="http://www.blogjava.net/qileilove/archive/2013/05/14/399249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几种缺陷管理工具的比较</title><link>http://www.blogjava.net/qileilove/archive/2013/05/14/399248.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Tue, 14 May 2013 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/05/14/399248.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/399248.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/05/14/399248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/399248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/399248.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; "><a href="http://www.51testing.com/html/23/n-845423.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">Rational</strong></u></a>&nbsp;Clear Quest:</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　国外收费软件，价格昂贵（几十万）</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　难于找到破解版和序列号。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　功能强大，主要用于管理变更（需求、缺陷等）与其他Rational 产品集成,特别是ClearCase.</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　支持的<a href="http://www.51testing.com/html/23/n-845423.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">数据库</strong></u></a>:SQLserver ,Oracle,Access.</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　产品模式:C/S,B/S结构,web服务器需要另外安装.配置较为复杂.</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　其他功能强大．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">URTracker:</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　国产软件，价格低/每用户￥50．（试用版１个月，试用版后免费５用户）</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　容易下载．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　系统需求：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　Windows2000/xp/2003</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　IIS5/6</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　.Net Framework1.1</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<a href="http://www.51testing.com/html/23/n-845423.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">SQL</strong></u></a>&nbsp;Server2000 / MSDE 2000</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　优点：操作简单，界面友好，容易上手．满足缺陷追踪的功能．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　缺点：查询功能相对较弱，不能自己订制，报表功能也较弱．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　产品模式：B/S 结构</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">Bugfree:</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　国产开源软件，免费．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　容易下载．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　系统需求：MySql+PHP+Apache</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　优点：流程清晰，能完整的记录<a href="http://www.51testing.com/html/23/n-845423.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">Bug</strong></u></a>解决的流程，可自定义配置。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　缺点：熟悉PHP。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　产品模式：B/S结构</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">Bugzilla:</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　国外开源软件，免费</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　容易下载</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　优点：满足<a href="http://www.51testing.com/html/23/n-845423.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">缺陷管理</strong></u></a>功能．比较出名的开源软件。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　缺点：<a href="http://www.51testing.com/html/23/n-845423.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">Windows</strong></u></a>平台配置较为复杂，用户界面差．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　产品模式：B/S结构．</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　支持数据库：Mysql<br /><br /><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">Mantis:</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　国外开源软件。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　轻量级的缺陷跟踪系统</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　优点：Mantis相对Bugzilla有更好的操作界面。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　第二、安装和使用都相对简单一点。但比其他软件稍复杂。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　而对于一般的项目，Mantis作缺陷跟踪，已经绰绰有余。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　缺点：界面梢差，目前的版本还存在一些问题。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　产品模式：B/S</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　系统需求：PHP+MySql</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">TestDirector</u>:</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　国外收费软件，价格昂贵（几十万）</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　优点：用户界面友好，功能强大,安装简单，与LR,WR集成，有多种主流case工具接口AddIn.</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　集成了测试需求管理、测试计划和用例管理、测试日程控制、测试执行和缺陷跟踪等功能</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　强大的统计分析功能</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　缺点：由于其早期版本不能灵活的对项目管理流程进行配置，又由于其昂贵的价格，因此目前</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　应用的企业也不是很多。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　TD更侧重于测试过程管理</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　支持数据库：Oracle,SQLserver,Access</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　产品模式：B/S结构</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">JIRA</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　国外收费软件</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　采用J2EE技术，JIRA 是目前比较流行的基于Java架构的缺陷跟踪系统。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　优点：界面友好，JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　安全性、可扩展性方面发挥到了极致</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　系统需求：运行于所有的安装了JDK的操作系统上，并能够跟几乎所有的兼容JDBC的数据库一起使用</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　JIRA更加侧重于缺陷追踪和项目管理</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">BugZero</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　5用户版，100条记录免费。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　<strong style="word-break: break-all; line-height: normal !important; "><u style="word-break: break-all; ">TestTrack Pro:</u></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　Seapine公司的</p><br /></p><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; height: 21px; position: relative; width: 627.2000122070313px; "></div><img src ="http://www.blogjava.net/qileilove/aggbug/399248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-05-14 11:43 <a href="http://www.blogjava.net/qileilove/archive/2013/05/14/399248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CMMI过程改进之路——质量保证误区</title><link>http://www.blogjava.net/qileilove/archive/2013/03/18/396578.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Mon, 18 Mar 2013 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/03/18/396578.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/396578.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/03/18/396578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/396578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/396578.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　如何提升产品质量在业界是一个永恒的话题，零缺陷是理想化的，永远只能作为目标而不能到达，客户基于市场压力和竞争等方面的考虑，优先考虑的往往是进度，如何定位质量保证（QA）角色、如何平衡进度、质量、成本的关系，是质量保证的核心关键，关于质量保证常存在下列误区：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　（1）组织架构中QA团队误区：</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　在不少公司，基于成本考虑，缺少了真正的高素质的质量保证人才，这其实是管理层的意识问题，认为设立QA岗位，人才的招聘、培训、薪酬、福利、<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>环境的消耗将是一笔不小的成本支出，根本没有必要，实际上是一个不好的作法。组建QA团队，确实是需要一笔费用，如果是高水平的团队，付出费用更大，但从长远来看，这笔费用肯定可以从将来产品质量的提升、成本的降低、进度的提前、客户满意度提升、市场占有率等方面获取丰富的回报。一个<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">质量管理</strong></u></a>优秀的公司，所获得的收益远远超过了QA团队的人力成本。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　（2）&#8220;进度优先还是质量优先&#8221;误区？</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　实际上要根据公司的商业目标来确定，如果项目进度是十万火急的，不能按时交货，可能就会遭受严重经济损失或失去生存机会，我想肯定的选择是公司的生存第一，在进度保证的前提下，再考虑质量保证。但在一些业界优秀的公司，进度已经往往作为质量的一部分，进行综合平衡考虑和解决。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　（3）QA团队的&#8220;选人&#8221;误区：</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　曾看到一些公司，为了通过<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">CMMI</strong></u></a>评估，都成立了QA组织，但是选人的标准也是基于成本考虑，往往是一些刚毕业不久的大学生，由于缺乏足够的开发和<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">项目管理</strong></u></a>经验，在项目的流程执行中，不能给予项目团队有效的指导，不能识别公司的商业目标的价值，只能机械按照过程体系的要求执行，造成项目团队的不信任，甚至引起严重对抗，从而破坏了和诣、开放的卓越团队文化。在一些跨国大公司，其实QA的标准要求是很高的，要有多年的项目开发管理经验，甚至是曾担任过资深的项目经理优先，只能这样，才能够深该理解公司的商业目标和过程体系，并可以作为导师或顾问有效识别、规避项目风险、指引项目团队前进的方向。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　（4）QA团队的&#8220;定位和运作&#8221;误区：</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　QA团队并不能只作为高高再上的检查者，或者只定位为&#8220;警察角色&#8221;，更应该是作为服务者的角色出现，QA团队是必须为项目团队服务的，要有一颗&#8220;谦虚&#8221;的心，要做到能换位思考，要能站在管理层和项目团队的角度来考虑问题，我想这样就会明白QA团队的价值和意义。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　QA团队核心工作是推动<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">过程改进</strong></u></a>、进行缺陷预防，实现公司商业目标 ，因此QA团队最重要的是要明白流程的价值，由于所有流程是基于一定的环境或条件建立的，对不同项目可能作用都不同，甚至可能不适用，要能够从公司全局出发，根据成本、进度、质量、客户满意度等条件进行判断，给项目团队提供帮助，进行过程裁剪，并提供给管理层高价值的真实项目情况，成为管理层真正的&#8220;眼睛和耳朵 &#8221;。只有这样，QA团队才能取得管理层的支持，质量保证意识才能融入并扎根于公司卓越企业文化之中。</p><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; height: 21px; position: relative; width: 627.2000122070313px;"></div><img src ="http://www.blogjava.net/qileilove/aggbug/396578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-03-18 10:10 <a href="http://www.blogjava.net/qileilove/archive/2013/03/18/396578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅谈软件测试团队规范建设</title><link>http://www.blogjava.net/qileilove/archive/2013/02/19/395395.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Tue, 19 Feb 2013 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2013/02/19/395395.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/395395.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2013/02/19/395395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/395395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/395395.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　一些已经从事<a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">测试</strong></u></a><a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">工作</strong></u></a>三到五年的朋友正在积极的向QA Manager 角色转型，他们对于将来的发展方向也很一致，普遍观点大都是组建一支出色高效的<a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">测试团队</strong></u></a>。最近我也想了一些团队规范和成为具有出色团队称号的必要条件，自己从事测试工作也接近四年了，有些是我在原先工作中遇见并且总结出来的，写的我认为还谈不上全面以后还会逐渐补全。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　条件：</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　<a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">缺陷管理</strong></u></a></strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　首先正规测试团队至少会有一个缺陷管理系统，不管是Bugzilla还是Mantis 或是其它系统，因为<a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">软件测试</strong></u></a>过程本身就是围绕着缺陷进行的，这也是测试工作的一个重要组成部分。我个人还是比较青睐于使用开源工具。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　<a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">测试用例</strong></u></a>谁来写</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　我不提倡测试新人去写测试用例，这些工作应该分配给那些经验丰富的测试人员去做。新人写测试用例存在一定量的风险性，例如考虑不周达不到预期覆盖率，延缓测试周期和上线时间。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　<a href="http://www.51testing.com/html/72/n-836372.html" target="_self" style="word-break: break-all; color: #202859; text-decoration: none; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">Bug</strong></u></a>有owner</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　对于Bug来说，测试人员开启的Bug应该由本人来关闭。做到Bug也要有属主</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　测试工作量评估</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　测试工作量应该由测试人员本人估算，从下到上估算工作量，而不是从上到下分派工作量，如果遇到工期固定可以简化测试用例，测试分轻重</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　Bug描述</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　Bug一定要做到描述简洁清晰争取做到PD 一看就懂，减少不必要的交流。对于不容易重现的Bug可以清晰的描述操作步骤和具体操作时间产生什么类型的错误。通过以往工作经验个人认为没有不能重现的Bug。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　开发人员对测试人员的测试结果产生疑议。如果测试人员根据自己的测试经验判定是个Bug，可以先组织测试人员内部进行缺陷讨论。判定Bug的严重级别后再进行相应处理。有不同看法是正常的，但是不要轻易妥协。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　不要浪费测试人员时间。测试人员接到测试任务拿到需测试产品发现低级错误的数量以及功能的不完整性，有权退回。这是在浪费测试人员时间。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　测试人员不要过于依赖测试工具</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　测试人员对测试工具的完全依赖是一种不好的做法，不要忘了最强大的是你的测试思想，在必要的场合采用工具确实能给测试人员带了意想不到的收获但是这只是一种测试手段不能代表测试的全部，如果需要使用工具，我建议往开源方面靠拢。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　让测试人员了解产品背后的商业意义</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; ">　　整个项目中什么功能模块是最重要的，为什么要开发这个新功能，这个功能在整个项目中有何种意义，这可以让测试人员对该功能产生一个内心重要级别。对测试用例和以后的回归都起到很大帮助。<br /><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　营造测试气氛</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　开发人员开发完功能后需要自测，然后再交送给测试人员，共同把好质量关。开发可能会说我写出来的东西我自己还要测试那还要你做什么。如果开发的产品连正常流程都无法跑通就交给测试被一次一次的打回，这样不光影响项目进度，还可能会导致该测试人员会你开发出的产品有情绪抵触，质量很难得到保证。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　测试技术学习</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　测试团队可以定期拿出一个课题由部分专人负责研究，然后定期Share研究成果组织团队人员研究讨论，促进工作学习两不误。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　测试人员不够</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　如果碰到时间紧任务重测试周期被缩短的情况。我不建议省略写测试计划，测试用例，测试报告去闷头测试。测试可以分轻重，可以申请安排开发做辅助测试。也不能省略那些书面文字。不是走形式。测试人员要彻底认识到这些东西是非常有价值的，在适当时候可以保护你。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　先写测试用例再测试不是死规矩。事实上应该是这种工作流程，但是有些时候当没有测试用例思路时，可以先手工运行一遍功能，想到什么写什么，最后形成完整规范测试用例。做到灵活测试。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　测试人员有义务向PM阐述对功能的流程以及易用性方面自己的想法。如果是为了功能的可伸缩性那就不仅仅是测试人员需要参与讨论有可能还有PD OP DB等等。最初目的是为了以后如何更方便的开展自动化。让自动化能覆盖的更多更全面。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　为了保证产品质量测试越早进行越好。不仅是功能测试，其中也包含性能。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　了解当前产品质量</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　测试人员每个人都应该了解当前产品质量，知道哪块薄弱，知道自己该干什么，提倡每个人都可以提出建设性意见。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　开发人员告诉测试人员你应该如何测试。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　这种现象可以从多方面理解：</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　1、作为测试人员你做的不够好，长时间来你充当一个喊话筒的角色，从你以往提交的Bug来看没有任何深度。想受人尊敬受人重视还是要靠自己踏实争取。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　2、测试团队不规范，或者说根本就没有测试团队。让开发领着干活自己又不会写代码心理不好受抱怨多多。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　更多时候还是需要自己多努力，知识要靠一点一滴的积累。很难重现的Bug你能重现，能告诉开发哪块功能将来可能产生问题，指出系统瓶颈等等类似很多。这些都是需要经验积累。渐渐的你会发现自己在团队中起到了应有的价值得到同事以及上司的认可。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　测试环境维护</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　测试环境由谁来维护其实我觉得并不重要，这里指的谁可以是运维可以是研发可以是QA，但是最好要保证专人来维护，不要谁都可以插手。再没有打招呼的前提下擅自发布新功能或者修改是不可取的。保证版本的统一性很重要。要做到正式发布功能之前OP可以在测试环境下抓取项目整包进行发布。当然对于极小功能小修改可以例外。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　收集需求文档</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; ">　　测试人员为了写出一份还算完整的TestCase东奔西跑到处收集信息。开发文档和产品需求文档出炉后请第一时间送交的QA 手里，保证QA的工作开展。</p><br /></p><div style="word-break: break-all; line-height: 21.600000381469727px; margin: 10px 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff; height: 21px; position: relative; width: 627.2000122070313px; "></div><img src ="http://www.blogjava.net/qileilove/aggbug/395395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2013-02-19 10:49 <a href="http://www.blogjava.net/qileilove/archive/2013/02/19/395395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么无法建立过程性能模型？</title><link>http://www.blogjava.net/qileilove/archive/2012/11/14/391289.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Wed, 14 Nov 2012 01:56:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2012/11/14/391289.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/391289.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2012/11/14/391289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/391289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/391289.html</trackback:ping><description><![CDATA[<p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　在<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">CMMI</strong></u></a>四五级的软件公司中，建立过程性能模型是一个重点也是一个难点<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">工作</strong></u></a>，很多公司无法建立过程性能模型，为什么呢？</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　1）数据不准</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　比如：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　？ 对于评审的会议，评审的参与人有的是来<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">学习</strong></u></a>的，在统计人数、工作量时就不应该统计在内。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　？ 有的数据当时没有采集，而是靠时候回忆采集上来的。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　？ 有的代码行数不是通过工具统计上来的，而是靠人估计估计出来的。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　2）过程不稳定</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　过程不稳定的原因可以细分为：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　i）过程太大</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　比如：对于整个项目的工期偏差率建立回归分析模型，由于影响因子太多，每个因子都有影响，但是影响都不是很大，这样对于采集数据的要求，过程的稳定性等要求很高，很难建立起回归方程，因此此时需要划分项目的阶段建立每个阶段工期偏差率模型或者不去细致的分析影响因子，而是建立蒙特卡罗的模拟模型，或者分不同类型的项目建立回归方程。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　ii）过程定义不稳定</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　在过程定义中定义的不够细致，对于过程成功的要点没有定义清楚，比如：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　对于评审的流程，为了保证评审过程的稳定，应该要求：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 评审的时长不能超过2小时。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; QA跟着每次评审控制会议不要过多讨论。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 会议开始是要声明规则。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 评审会与讨论会要分开。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　iii）过程执行不稳定</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　在流程定义中有要求，但是实际执行时没有做到位，比如：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 开评审会的时候进行了大量的讨论比如设计的评审会，所以会议的工作量、会议的时长都不准。在设计会议上讨论了设计方案的合理性。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 会议的时间超过了2个小时，4个小时的评审会议，后边的2个小时效率很低的。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 会议的主持人在会议上没有讨论的现象进行控制。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　iv）过程的输入不稳定</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　不同的项目在执行过程时，投入差别太大，过程执行的前提条件不稳定，导致过程的输出也会不稳定。比如：<a href="" target="_self" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><u style="word-break: break-all;"><strong style="word-break: break-all;">测试</strong></u></a>过程投入的单位工作量，有的项目投入的多，有的项目投入少，而如果这些输入没有被识别出来作为因子的话，则方程就无法建立起来。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><strong style="word-break: break-all; line-height: normal !important;">　　3）影响因子（X）识别不全</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 在识别对于Y的影响因子时没有识别出来关键的影响因子，比如测试过程的单位规模的测试工作量等；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 识别了关键影响因子但是不好量化表达，采集数据有难度，比如人员的技术水平；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　&#9679; 采集了关键因子的度量数据，但是数据不全，缺少样本点；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px; line-height: 21.600000381469727px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">　　影响因子的识别需要经验识别，也需要统计的假设检验，也可以进行实验设计。<br /><br /><p style="word-break: break-all; margin: 10px 0px; padding: 0px;"><strong style="word-break: break-all; line-height: normal !important;">4）对于大过程建模，影响因子太多，每个因子相关性都不大</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　如果是对于大的过程建模，则可能存在如下的问题：</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　&#9679; 影响因子多，每个因子的相关性都不是很大；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　&#9679; 影响因子多，采集数据有难度，对每个数据都要求很准确；</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　&#9679; 影响因子之间彼此有交互叠加的作用，有相关性，建模困难。</p><p style="word-break: break-all; margin: 10px 0px; padding: 0px;"><strong style="word-break: break-all; line-height: normal !important;">　　5）样本量太少</strong></p><p style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　样本量太少，增加或删除一个样本对回归的结果影响很明显，则规律不具有典型性。比如，在下图中如果删除右上角的一个点，则两个变量之间就没有相关性了，如果删除了右下的2个点则两个变量之间就是相关的。之所以出现这种现象就是样本点太少而导致的。</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px;"><a href="http://www.51testing.com/batch.download.php?aid=36478" target="_blank" style="word-break: break-all; color: #202859; text-decoration: initial; line-height: normal !important;"><img border="0" src="http://www.51testing.com/attachments/2012/11/346836_201211061020451JE3o.jpg" width="436" height="249" style="word-break: break-all; list-style: none outside none; margin: 0px; padding: 0px; border: none; max-width: 500px; width: 404px; height: 249px;"  alt="" /></a></p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;"><strong style="word-break: break-all; line-height: normal !important;">　　6）样本不随机</strong></p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　比如有2个变量X1，X2与Y都应该是正相关的，但是在实际中存在的数据却是：</p><p align="center" style="word-break: break-all; margin: 10px 0px; padding: 0px;"></p><table border="1" cellspacing="0" cellpadding="0" width="200" style="word-break: break-all; color: #333333; font-size: 12px; text-align: left; width: 200px; height: 36px;"><tbody style="word-break: break-all;"><tr style="word-break: break-all;"><td style="word-break: break-all;">&nbsp;</td><td style="word-break: break-all;">正相关&nbsp;</td><td style="word-break: break-all;">正相关&nbsp;</td></tr><tr style="word-break: break-all;"><td style="word-break: break-all;">Y&nbsp;</td><td style="word-break: break-all;">x1&nbsp;</td><td style="word-break: break-all;">x2&nbsp;</td></tr><tr style="word-break: break-all;"><td style="word-break: break-all;">中&nbsp;</td><td style="word-break: break-all;">大&nbsp;</td><td style="word-break: break-all;">小&nbsp;</td></tr><tr style="word-break: break-all;"><td style="word-break: break-all;">中&nbsp;</td><td style="word-break: break-all;">小&nbsp;</td><td style="word-break: break-all;">大&nbsp;</td></tr></tbody></table><p style="word-break: break-all; margin: 10px 0px; padding: 0px;"></p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　此时如果对这些类型的数据进行分析，则表现出来Y与X1，X2是不相关的。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　以测试过程为例，我们的经验与常识：</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　假设或常识1：高水平的测试人员找出的BUG多， 低水平的测试人员找出的BUG少。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　假设或常识2：高水平的开发人员犯的错误应该少，低水平的开发人员犯的错误应该多。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　我们的实际数据：</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;"><strong style="word-break: break-all; line-height: normal !important;">　　在实践中常常采用的策略：</strong></p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　<strong style="word-break: break-all; line-height: normal !important;">策略1：</strong>关键的模块应该由高水平的开发人员进行开发，非关键的模块由低水平的开发人员进行开发。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　<strong style="word-break: break-all; line-height: normal !important;">策略2：</strong>高水平的测试人员要测关键的模块，低水平的测试人员测试非关键的模块。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　如果是这样，对于测试过程做了度量以后，数据无法证明假设1和2的成立。</p><p align="left" style="word-break: break-all; margin: 10px 0px; padding: 0px;">　　以上六个原因就是最常见的原因，这些原因在实际中克服起来并非那么容易，这也是为什么4-5级需要比较长的实施周期的原因。</p><div style="word-break: break-all; margin: 10px 0px; height: 21px; position: relative; width: 627.2000122070313px;"></div><br /><br /></p><img src ="http://www.blogjava.net/qileilove/aggbug/391289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2012-11-14 09:56 <a href="http://www.blogjava.net/qileilove/archive/2012/11/14/391289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>零基础学习SVN之（二）：CVS与SVN的区别</title><link>http://www.blogjava.net/qileilove/archive/2012/08/20/385818.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Mon, 20 Aug 2012 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2012/08/20/385818.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/385818.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2012/08/20/385818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/385818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/385818.html</trackback:ping><description><![CDATA[<div><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　相信大家看了<a href="http://www.51testing.com/?action-viewnews-itemid-821579" target="_blank" style="word-break: break-all; color: #333333; text-decoration: none; line-height: normal !important; ">零基础学习SVN之（一）：SCM与SVN的使用（基础篇）</a>这篇博客之后，对版本控制就有了一定的理解，同时也应该知道SVN与CVS是比较流行的两款SCM工具。那么到底这两款工具有什么区别呢？</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　1、版本编号方面</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　例如，我们的版本库为A，其中有文件a，b，c。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　在SVN中，新版本的版本号不是针对某个特定文件的，而是针对整个库而言的。提交了5次和提交了6次，文件a有可能不同，也有可能相同，即1.0版和1.1版可能相同。因为第6次提交有可能是因为文件b或c进行了修改。而在CVS中则相反，每次更新可能只对文件的版本号进行修改，即a文件的1.0版和1.1版是肯定不同。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　（在这里纠正一个概念，&#8220;文件a的第2版本&#8221;这个说法是错误的，应该是&#8220;文件a的第2次修改，即第二次Commit&#8221;）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　SVN的全局性版本编号为SVN带来了诸多的优势：如对目录或文件执行拷贝，无论涉及多少文件，SVN不需要对单个文件依次执行拷贝命令，仅仅需要建立一个指向相应的全局版本号的一个指针即可。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　2、目录的版本控制</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　CVS只能对文件进行版本控制，不能对目录进行版本控制，这就导致CVS失去了很多功能：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　1）没有移动操作</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　CVS里没有移动（move）这个操作，当人为进行文件移动操作时，CVS只能注意到，一个文件在一个位置被删除了，而在一&nbsp; 个新位置创建了另外一个文件。由于它不会连接两个操作，因此也很容易使文件历史轨迹丢失。所以使用CVS时，每个文件的位置一定要谨慎的选择。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　2）没有重命名操作</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　CVS里没有重命名（rename）这个操作，人为的对文件进行重命名会使得命名前后的文件失去历史联系，而记录历史本来是版本管理的主要目的。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　3）没有拷贝操作</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　CVS中没有拷贝（copy）这个操作，人为的拷贝对CVS而言，只能看到新的文件的增加，而不能记录拷贝源文件和目标文件之间的联系。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　而SVN从很大程度上避免了这些不足，SVN将目录作为一类特殊的文件来处理。当目录中的子目录/文件被删除、重命名、或新的子目录/文件被创建时，目录的内容将发生改变。因此，SVN象记录普通文件的修改历史一样记录对目录的修改历史，当发生文件/目录的移动、重命名或拷贝操作时，SVN能够准确记录操作前后的历史联系。同样，像对文件的不同历史版本进行比较一样，SVN支持对目录的不同历史版本的比较，清晰展现目录的变化历史。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　3、原子性提交</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　CVS和SVN同样作为SCM版本控制管理工具，SVN的原子性提交可谓是技高一筹啊！</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　SVN提交文件，只有当全部文件修改都成功入库，该提交才变得有效。一旦中断，SVN将会自动执行&#8220;回滚&#8221;（rollback）操作。SVN 这种机制保证所有的修改要么全部入库生效，要么一个也不入库。由于SVN的原子性提交特性和全局版本编号方式，当提交成功完成时，一个唯一的、新的全局版本编号产生，而提交时用户提供的<a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">日志</strong></u></a>信息与该新的版本编号关联，只进行一次存储（区别于CVS的按文件重复存储）。<br /><div><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">而CVS则采用线性、串行的批量提交，即依次地，一个接一个地执行提交，每成功提交一个文件，该文件的一个新的版本即被记录到版本库中。但当任何原因造成批量操作的中断时，版本库往往处于一个不一致的状态。另外，CVS即使在批量提交不发生中断时也会造成不一致：假设用户A启动一个需要较长时间才能完成的批量提交；与此同时，用户B执行cvsupdate操作。此时，用户B很有可能得到一个不一致的更新，即用户B通过&#8220;更新&#8221;操作，得到用户A的部分修改文件。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　4、变更集概念的支持</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　由于SVN提交是原子性的，每次成功提交形成的唯一的全局版本号对应此次批量提交的所有文件修改，也就是说，一个SVN版本号其实对应了一个逻辑上的变更集，该变更集可能对应于对一个BUG的修复，或者对应于对一个已有功能的改进，或者对应于一个新功能的实现。可以说，变更集是一个软件开发活动的逻辑结果，该变更集可以通过其对应的版本号在软件开发的其他过程中（如软件合并/集成过程，软件发布管理，变更管理系统，缺陷追踪系统）被引用。因此，SVN将版本管理从单纯的、单个的文件修改的层次通过逻辑上的抽象，上升到更便于理解和交流的开发活动的层次。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　5、差异化的二进制文件处理</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　CVS最初设计是为处理文本文件（或ASCII文件，源代码文件），对文本文件进行差异化的存储、新旧版本的比较，文件合并等。但对于二进制文件，CVS则明显力不从心。在CVS的版本库中，对于二进制文件的历史版本，CVS是对不同的版本进行独立的、冗余的存储，哪怕版本之间其实只存在微小的差异。与CVS不同，SVN每次提交后版本库中只存储相对于先前版本的差异，从而可以节省大量的存储空间。更为重要的是，当客户端需要获取新的版本时，SVN只传输版本的差异，从而大大减少对网络带宽的消耗。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　说了这么多，好像全是在说SVN得优点，其实它也不是那么完美。下面来分析一下SVN的一些不足之处。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　1）对中文路径名的支持</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　cvs：支持的比较好</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　svn：要将权限控制文件保存为svn支持的UTF-8格式</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　2）本地文件与库的对应关系</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　cvs：可以多对多</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　svn：一个库可以有多个工作目录，但一个工作目录只能对应一个库，虽然可以更改库位置但是要求很严格。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　3）库中文件存放方式</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　cvs：完全用户可见方式与客户端文件夹结构完全一直（cvs生成文件除外）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　svn：看不到文件真正的内容</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">相关链接：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><a href="http://www.51testing.com/?action-viewnews-itemid-821579" target="_blank" style="word-break: break-all; color: #333333; text-decoration: none; line-height: normal !important; ">零基础学习SVN之（一）：SCM与SVN的使用（基础篇）</a></p></div><br /><br /></p><div style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; height: 21px; position: relative; width: 627px; "></div></div><img src ="http://www.blogjava.net/qileilove/aggbug/385818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2012-08-20 10:32 <a href="http://www.blogjava.net/qileilove/archive/2012/08/20/385818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>质量保证（QA）是干什么的？</title><link>http://www.blogjava.net/qileilove/archive/2012/08/20/385816.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Mon, 20 Aug 2012 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2012/08/20/385816.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/385816.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2012/08/20/385816.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/385816.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/385816.html</trackback:ping><description><![CDATA[<div><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　从事软件<a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">质量保证</strong></u></a><a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">工作</strong></u></a>已有几个年头，经常有朋友问起软件质量保证到底是干什么的？每次总回答就是辅导和监督项目开发按照公司研发过程执行的，仔细想想实际并没有这么简单，为了让更多朋友了解质量保证这个岗位，在此结合这几年的工作经验进行如下总结，若有不对的地方欢迎大家指正与交流，谢谢！</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　1、什么是质量保证？</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　在<a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">CMMI</strong></u></a>中，质量保证的英文全称是Process and Product Quality Assurance，即过程与产品质量保证。一般大家更习惯叫质量保证或QA，它的目的是为员工和管理层提供过程和相关工作产品的客观洞察。之所以说它客观是因为：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　1）质量保证人员是一个独立于项目组之外的第三方审计人员，不能是直接参与开发、<a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">测试</strong></u></a>和<a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">项目管理</strong></u></a>的人（当然实际也有例外，有些公司QA可能是兼职的）；</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　2）质量保证人员不受监督对象部门的绩效评价；</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　3）质量保证人员具有独立的问题汇报渠道（可以跨级上报&#8212;&#8212;QA很重要的特权）。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　2、软件质量保证工作内容？</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　一般设有软件质量保证岗位的公司都有一套依据自己公司实际研发现状制定的完整研发过程体系，所有的软件质量保证人员入职一家新公司，首先需要做的事情就是<a href="" target="_self" style="word-break: break-all; text-decoration: none; line-height: normal !important; "><u style="word-break: break-all; "><strong style="word-break: break-all; ">学习</strong></u></a>和深刻了解该公司研发过程体系，否则后续工作是无法开展的。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　一般软件质量保证工作内容主要分三大块：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　1）过程辅导</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　依据研发过程体系辅导所有开发项目/版本前期及项目过程各个环节及各环节具体活动执行（含流程、方法、模板及过程中相关工具的使用）。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　辅导时机：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 到达项目/版本计划中计划的时间点</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 触发事件驱动（如：邮件）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　辅导方式：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 口头</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 邮件</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 电话</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 通讯工具（如：QQ、RTX等）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 必要时可以开展正式的课堂培训（一般很少）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; "><strong style="word-break: break-all; line-height: normal !important; ">　　2）过程检查</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　所有开发项目/版本开发过程中，依据当前的研发过程体系客观的对实际执行情况进行检查与评价。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　检查的方式：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 参加项目会议（评审会、周会）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 与各个环节人员沟通</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 触发事件驱动（如：邮件）地进行检查</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 12px; text-align: left; background-color: #ffffff; ">　　&#9679; 检查工作产品<br /><div><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　3）过程问题记录与跟踪</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　记录过程检查过程中发现的不符合项，并与相关负责人进行沟通，了解产生问题的原因，跟踪不符合项确保问题得到解决。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　伴随上工作过程中还会有一些其他工作内容，如下：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　4）向项目组和管理层提供质量保证活动结果&#8212;&#8212;风险预警与问题报告。</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　预警风险、及早报告项目问题，使项目免受损失或少受损失，是质量保证的重要价值体现。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　有经验的质量保证人员能够基于过程中了解到的项目过程质量状况和产品质量状况，及时识别出项目过程中存在的风险和发现过程问题，并定期（一般都是一周）向项目组与管理层预警风险、报告问题。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　项目组必须在规定的期限内回复质量保证人员报告的问题。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　对于无法协调一致的问题要及时升级。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 就质量保证问题的认定双方不能达成一致。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 就质量保证问题的解决计划双方不能达成一致。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 项目组未按计划解决质量保证问题。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; &#8230;&#8230;</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　管理层必须及时处理升级的问题。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 强制项目组解决。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 豁免。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　5）严重问题根因分析</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　质量保证人员需要定期（如每月/季度）对记录的问题进行分类与分析，对于过程中发生的严重问题或事故，必须了解问题产生的根源才能够在后续进行规避。一般若公司有多个质量保证人员，应以部门为单位开展问题根因分析活动，必要时还可以邀请EPG小组成员一起），问题根因分析活动结束后应向相关领导出具根因分析报告，提出当前的对策及未来建议。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　6）收集与反馈过程改进建议，协助过程改进</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　一般公司EPG（过程改进小组）大都由其它岗位人员兼职的，我就职的3家公司质量保证人员都会兼EPG中的某个角色。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　质量保证人员在项目过程中会与软件生命周期各个环节的人员打交道，有心的质量保证人员在此过程中肯定能够发现很多研发过程体系不合理或不够完善的地方，同时项目结项时质量保证人员要进行质量保证总结，在总结过程中也可以收集到很多过程改进建议，质量保证人员要定期将收集到的过程改进建议反馈给EPG组长，由EPG组长规划过程的改进。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　7）其它</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　其它依据各个公司具体情况而定，如：定期进行交叉检查，开展研发过程体系培训，度量项目过程，协助项目经理监控项目进展。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　软件质量保证工作的开展是有计划有序进行的，一般项目初期（如：项目计划阶段）质量保证人员要制订质量保证计划，质量保证计划要得到项目经理、质量部门负责人的评审/审批。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　同时在实际检查过程中也是有依据的&#8212;&#8212;QA检查单，一般公司研发过程体系中都会制订一份完整的QA检查单模板，各个项目要依据项目过程定义进行裁剪。<br /><div><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　3、质量保证人员的素质和能力要求</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　软件质量保证工作涉及到软件工程的各个方面，软件质量保证人员要与不同角色的人员进行沟通，因此软件质量保证人员除了要有较高的智商和情商外，还有具备如下的素质和能力：</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　1）要有控制软件质量的能力</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　也就是说要熟练掌握公司各种流程、标准和规范，做好第三方独立审计的工作并及时发现、纠正问题。在必要时可以利用向高层领导直接汇报的权力来&#8220;威慑&#8221;相关人员，以确保软件质量朝好的方向发展。在控制软件质量发展方向的同时要学会控制自己的情绪，因为并不是所有人员都很了解公司的研发流程、软件质量保证的工作以及如何从根本上去提高软件质量，工作中很多时候有&#8220;秀才遇到兵，有理说不清&#8221;的感觉，这时就更加需要控制自己的言语和情绪，找到合适的方式进行沟通，使问题最终得到解决。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　2）对问题根源识别和归纳的能力，即透过现象看本质的能力。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　3）举一反三的能力。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　4）很强的沟通能力。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　5）要适当强势，做好灵活性与原则性间的平衡的能力</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　6）客观、对事不对人的职业素养</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　4、质量保证人员的技能要求</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 软件工程/系统工程的理论、方法</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 工作过程标准</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 沟通、协调技能</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 基本的管理知识和技能</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 项目管理的理论、方法</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　&#9679; 质量保证工作的原理、方法</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong style="word-break: break-all; line-height: normal !important; ">　　5、软件质量保证岗位等级</strong></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　1）交警（初级）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　像交警查处交通违章那样，直接向所发现的不符合项贴&#8220;罚单&#8221;即可。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　2）医生（中级）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　像医生那样对项目进行检查和诊断，发现问题并可以开出&#8220;药方&#8221;。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　3）老师（高级）</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">　　像老师那样发现学生的弱项，并找到如何提高学生能力的方案，然后对学生进行辅导和培训。</p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">版权声明：本文出自 mandy.wang 的51Testing软件测试博客：<a href="http://www.51testing.com/?417295" style="word-break: break-all; color: #333333; text-decoration: none; line-height: normal !important; ">http://www.51testing.com/?417295</a></p><p style="word-break: break-all; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">原创作品，转载时请务必以超链接形式标明本文原始出处、作者信息和本声明，否则将追究法律责任</p></div><br /><br /><br /></p></div></p></div><img src ="http://www.blogjava.net/qileilove/aggbug/385816.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2012-08-20 10:08 <a href="http://www.blogjava.net/qileilove/archive/2012/08/20/385816.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试 QA 的角色和分工</title><link>http://www.blogjava.net/qileilove/archive/2012/05/02/377143.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Wed, 02 May 2012 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2012/05/02/377143.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/377143.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2012/05/02/377143.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/377143.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/377143.html</trackback:ping><description><![CDATA[<div><p>　　<a target="_self"><u><strong>测试</strong></u></a>的角色（<a target="_self"><u><strong>Test</strong></u></a>）要独立出来么 ？</p><p>　　独立出来的测试角色怎么才能发挥作用？</p><p>　　有些成功人士和成功的公司号称没必要有独立的测试角色（Test），你怎么看？</p><p>　　最近又看到一些关于开发人员要不要负责测试的讨论。例如：</p><p>　　<a href="http://www.51testing.com/html/94/n-807994.html">http://www.51testing.com/html/94/n-807994.html</a></p><p>　　大多数的开发团队并不需要一个独立的测试角色。即使有一个，他的所有的开发时间比上所有的测试时间应该&gt;20：1。</p><p>　　我正好在写相关的教案，也来凑个热闹。</p><p>　　[这篇<a target="_self"><u><strong>文章</strong></u></a>的一些事例来自于我曾经和现在的团队。希望这些例子不足以影响相关人物和团队的伟大形象。任何软件团队都会犯错误，伟大的团队有勇气面对自己的错误并不断改进。]</p><p>　　首先，明确两个概念：</p><p>　　<a target="_self"><u><strong>软件测试</strong></u></a>（Test）：运用定义好的流程，工具去验证软件能实现预先设计的功能和特性，<a target="_self"><u><strong>工作</strong></u></a>的流程和结果通常是可量化的，例如，<a target="_self"><u><strong>测试用例</strong></u></a>，bugs，代码覆盖率，MTTF，软件效能的参数。[注：正因为流程和结果是可明确定义的，可量化的，很多测试工作可以自动化]</p><p>　　软件质量保证工作（QualityAssurance）：软件团队的成员为了让软件达到事先定义的质量而进行的所有活动，包括测试工作。</p><p>　　对于这两个术语，不同人有不同的定义，有人认为它们是互通的，在《现代软件工程》的上下文中我尽量使用上述的定义.</p><p><strong>　　测试的角色（Test）要独立出来么？</strong></p><p>　 　回答：首先，我相信有分工是好事，软件团队中应该有独立的测试（Testing）角色。所有人都可以参与QA的工作（报告bug什么的），但是最后要有 一个角色对QA这件事负责。不但角色要独立，而且在最后软件发布的时候，必须得到此角色的签字保证（signoff）。我在<a target="_self"><u><strong>微软</strong></u></a>参与的项目都是这样做的。</p><p>　　在开始论证之前，先引用斯密特&#183;亚当斯的《国富论》来暖场（我没读过这本书，直接从网上抄的）。</p><p><strong>　　分工理论</strong></p><p>　 　亚当斯认为，分工的起源是由人的才能具有自然差异。&#8230;假定个人乐于专业化及提高生产力，经由剩余产品之交换行为，促使个人增加财富，此等过程将扩大社会 生产，促进社会繁荣，并达私利与公益之调和。他列举制针业来说明。&#8220;如果他们各自独立工作，不专习一种特殊业务，那么他们不论是谁，绝对不能一日制造二十 枚针，说不定一天连一枚也制造不出来。他们不但不能制出今日由适当分工合作而制成的数量的二百四十分之一，就连这数量的四千八百分之一，恐怕也制造不出 来。&#8221;</p><p>　　分工促进劳动生产力的原因有三：第一，劳动者的技巧因专业而日进；第二，由一种工作转到另一种工作，通常需损失不少时间，有了分工，就可以免除这种损失；第三，许多简化劳动和缩减劳动的机械发明，只有在分工的基础上方才可能。</p><p>　　我们看团队形式的职业体育比赛，各个位置的分工都很明确，拿足球来说，有专注进攻的，有专注防守的，但是在我的印象中，那些伟大的前锋大多数只管一件事-进攻。亨利（ThierryHenry）参加防守么？</p><p>　　当然一些球赛也有没有分工的时候，原因有好几个：</p><p>　　事太小，几个小孩踢个半场。</p><p>　　无知，小孩们刚开始玩球。</p><p>　　人手不够，一对一打篮球，你要参与防守么？沙滩排球，两人都是全攻全守。</p><p>　　如果你的软件团队做的事情和上面的情况类似，那当然不必分工。你们做的很可能不是商用软件，你的软件团队大概也不用受什么软件工程规律的束缚。</p><p>　　任何产业产业成熟到一定阶段的时候，独立的质量保证角色是不可避免的。团队内部有QA角色，团队外部也有独立的QA角色。</p><p>　　拿药品和食品来做例子，除了生产厂家自己的检测之外，这些产品还要接受行业主管部门相关机构的检测和认可（药品检验，食品检验），才能上市。在出现争议的情况下，还要第三方机构来进行测试或认证。</p></div><div>有人也许这样建议： <p>　　这些药品都是药厂同一批工人一边制造一边测试出来的，特别有保证！不用测了，赶紧吃了吧！</p> <p>　　也许还有人这样建议：</p> <p>　　这个十字坡夫妻店的农家饭都是他们自己亲手做的，很可信，咱们今晚就去吃饭住一宿吧。</p> <p>　　我们每天经常使用的电子产品，从大彩电到电影插座，也经历了很多团队内部的和外部的测试，请随手拿过任何一个电器，你会在背面看到密密麻麻的小字，其中肯定有下列标记之一：</p> <p align="center"><a href="http://www.51testing.com/batch.download.php?aid=32161" target="_blank"><img src="http://www.51testing.com/attachments/2012/04/346836_2012041110373810nJG.jpg" border="0"  alt="" /></a></p> <p align="left">　　没有这些标记的产品电子产品，市面上很少看到。</p> <p align="left">　　在软件和互联网产业，目前没有这些认证，相反的，倒是有&#8220;人肉认证&#8221;：</p> <p align="left">　　你想申请某个著名专业网站的账户或者邮箱，但是又担心这个网站对用户信息的保护程度不够。有人说，没关系的，这个网 站的创始人也用账户，CTO，总监什么的还经常发软件安全博客，账户一定是非常安全的！这里不存在独立的质量认证，只能通过人肉（创始人/CTO/总监） 来认证产品的质量。</p> <p align="left">　　其实这种认证未必安全&#8230;（密码门事件）（明文密码事件）（邮箱密码漏洞）</p> <p align="left">　　如果有第三方的认证&#8220;此网站对用户信息的保护程度是X级，我们认证它不会明文存储用户密码&#8230;&#8221;我就放心了。在第三方认证出现之前，我希望团队内部至少有独立的QA角色，来确保软件的质量。否则我是不乐意使用这些软件/服务的。</p> <p align="left">　　[补充一句，互联网服务的各种认证也在发展，例如verisign公司提供的各种认证。]</p> <p align="left"><strong>　　独立出来的质量保证角色怎么才能发挥作用？</strong></p> <p align="left">　　有了独立的质保角色之后，是不是万事大吉了？未必，分工意味着一件事要分给别人去工作。让别人做事，并且依赖别人做出的结果，这会出现一些问题。</p> <p align="left"><strong>　　问题：既然有专人负责，那我就不用负责了！</strong></p> <p align="left">　　生活中一个常见的歪理是，既然有清洁工，那我乱扔点儿垃圾算什么，这才是他们工作啊！</p> <p align="left">　　尽管有专人负责QA中的测试工作，但是保证质量仍然是所有成员的职责。软件团队中的一些人往往在有意无意中忘记这一 点。最常见的现象是开发人员写好一个功能之后，迫不及待地宣布成功，然后希望测试人员去发现所有问题。如果问题在发布后才被发现，开发人员会说&#8211;测试人员 怎么搞的，这种bug都没找出来！？</p> <p align="left">　　某项目的某功能有重要的改进，这个改进经过研究员的研究，开发人员的设计，美工的美化，两个开发人员的配合实现，项 目管理人员的督促，测试人员的测试，最后所有人都号称做好了，上线了！为此，我约了某个目标用户给他做实地展示，几天后，大家都到齐了，开始演示。开始进 行的不错，马上最重要的killerfeature就会出来了&#8230;嗳，预想的效果怎么还没出现呢？再试试，还没有？各相关人员面面相觑，大家小声说：</p> <p align="left">　　&#8220;我不是把那个新模块给你了么？&#8221;</p> <p align="left">　　&#8220;我就是照着那个接口实现的啊&#8230;&#8221;</p> <p align="left">　　&#8220;我不是已经交给那啥&#8230;&#8221;</p> <p align="left">　　&#8220;所有的bug不是已经都搞定了么&#8230;&#8221;，</p> <p align="left">　　会议在尴尬中胜利结束了。</p></div><div>来查问题的根源，这个复杂的功能由于两个模块的接口在最后没有同步，某重要的参数被忽略了，这个功能中最出彩的部分压根就不可能工作！那负责测试的角色怎么解释&#8220;所有测试用例通过，同意发布&#8221;的呢？ <p>　　这还是开发人员引以自豪的&#8220;杀手级功能&#8221;（killerfeature），那其它普通的功能是什么命运呢？</p> <p>　　回过头来，我们可以问：</p> <p>　　&#183;这件事真的要通过这么多环节么？</p> <p>　　&#183;测试人员真的知道最最关键的地方如何测试么？</p> <p>　　&#183;在系统上线之后，所有为这个功能感到自豪的人是否去实地测试过呢？</p> <p>　　一个开发人员应该负责下面&#8220;开发功能&#8221;右边的几个圆圈呢？</p> <p align="center"><a href="http://www.51testing.com/batch.download.php?aid=32162" target="_blank"><img src="http://www.51testing.com/attachments/2012/04/346836_201204111037431Yyf0.jpg" border="0"  alt="" /></a></p> <p align="left"><strong>　　问题：盲目信任&#8220;专业人士&#8221;扮演的角色</strong></p> <p align="left">　　每个角色的水平不一样，软件的质量往往受最差的角色的影响最大。我们团队要为某软件写一段英语介绍文字，团队成员都 是通过四六级英语考试的牛人，可他们都很谦虚，说要请一个专业的人士来写不可。于是求了一个专业人士，求了好几次（专业人士很忙的），在上市之前才得到专 业的文案，于是，copy/paste几次之后，软件就向全世界发布了.</p> <p align="left">　　这个文案第一句就是热情洋溢的设问句：&#8220;haveyoueverthinkabout...&#8221;随后还有几处非常明显的语法错误.这个软件吸引了不少评论文章，有旁观者说，从介绍文字的几处典型中国式语法错误来看，这个软件是由在中国的某分部搞出来的&#8230;</p> <p align="left">　　即使有专业人士扮演各种角色，还得有专人独立地检查验证质量。</p> <p align="left">　　我们回头来看，可以问两个问题：</p> <p align="left">　　&#183;这件事真的要专业人士来做么？</p> <p align="left">　　&#183;专业人士做完之后，谁来负责测试？</p> <p align="left"><strong>　　问题：为了自己角色而做绩效优化</strong></p> <p align="left">　　分工之后，每个角色为了自己的绩效而优化，会出现局部最优，而全局未必最优的情况。</p> <p align="left">　　我们团队的另一个wp7的应用也要发布，这次专业人士又出手了，写了175个英语单词的介绍，极尽溢美之事，而且找 不到明显的语法问题！这的确是一种局部最优了。但是完全没考虑到用户在小小的手机屏幕上有多少耐心读完那么多形容词和状语从句。经过简化，我们把它减少到 78个词，勉强能放进手机的两个屏幕。</p></div><div><p>　　我们回头来看，可以问：</p> <p>　　&#183;这些事真的要交给和项目无关的专业人士来做？</p> <p>　　&#183;当我们给专业人士介绍需求的时候，是否花了足够的时间让对方理解我们要的是什么？</p> <p>　　&#183;专业人士做完之后，我们要做什么样的QA？光保证没有明显的语法错就够了？</p> <p>　　很多年前，当COBOL还是主流商用语言之一的时候，我曾在一个在软件团队里负责测试工作。职责之一，是写各种测试用例，来保证系统的代码覆盖 率到达80%以上。做过实际项目的工程师都知道，程序里很多语句是用来处理种种异常情况的，这些情况大多数情况下不会发生。但是这些语句如果没有被覆盖的 话，这个模块的覆盖率就会下降，我就达不到80%的目标。所以我花了很多时间构造各种奇怪的测试数据，把程序中的那些犄角旮旯都尽可能覆盖掉。至于这些犄 角旮旯在实际中是否会发生，对用户的影响如何，程序是否应该这样设计，我都不太关心。只要覆盖率达到80%，老子的活就干完了！</p> <p><strong>　　问题：画地为牢的分工</strong></p> <p>　　在一个长期而复杂的项目中，我要求所有新来的成员，包括外包公司的新成员，在加入团队的时候，先找到系统当前100个数据方面的问题，并用内部 工具修复。我认为这能有效地让新人了解系统的复杂性，弱点，和维护的流程。外包公司的员工很爽快地答应了，但是我们一些专家反而有不同意见。专家认为，外 包公司的人是来做测试用例的设计，所以不必做其它事情，我们期望他们一上手就能设计出高质量的测试用例，不应该给他们那些低级的手工操作任务&#8230;</p> <p>　　理论上这都是非常有道理，但是如果这些人如果没有亲力亲为地在这个项目中做一些具体事，他们怎么能&#8220;设计&#8221;出高质量，有实际意义的测试用例呢？</p> <p>　　有时分工导致链条过长，信息丢失。一个开发者对自己写的程序有什么潜在问题还是很有感觉的，有些问题可以用文字表述出来（如果开发人员有耐心把文字写出来的话），有些问题是一些预感&#8230;现在都交给别人测试了，那好，让他们测吧，我也懒得说了。</p> <p>　　分工还可能会导致一个软件的灵魂被切碎分给各个"角色"，每个功能都做得很卖力，但是整体就是不太行，明显看出来是费了老大的劲给强行&#8220;集成&#8221;起来的。</p> <p><strong>　　问题：无明确责任的分工</strong></p> <p>　　在我写第一本书的时候，编辑部告诉我他们会对书稿进行初读，二读，三读等流程，每个环节要花几天时间。作为出版界的外行，我理解这些都是QA的 阶段，等过了二读的时间，我就发信去问，负责二读的专业人士找到了什么问题了？得到了语焉不详的回答&#8230;一个问题都没找到？但是从编辑部的回答来看，二读不 二读，似乎没什么影响。其实这本书的小问题还很多，在出版之后，都陆陆续续被读者报告了。</p> <p>　　有时候出于种种考虑，人们会把一些善良但是能力有限的同事安排在一些位置上，扮演一些角色，例如&#8220;二读&#8221;什么的。或者有些角色就是由一些人占据着，但是大家对这个角色也没有什么明确的要求。这是许多问题的根源。</p> <p>　　我们对这个角色有什么可以量化，可以核查的责任要求？</p> <p>　　我们对&#8220;一本书的质量是X&#8221;的信心是Y，刚开始组稿的时候，X的取值范围非常大（烂书&#8230;一般&#8230;好书&#8230;年度大卖&#8230;永恒经典），信心也比较低。经过每个一个QA环节，我们都应该把X的范围缩小，把信心值Y提高。</p> <p>　　例如：二读之后，找到了20个严重问题，100个小问题，因此我们有更大的信心认为这本书是一本烂书（如果不做改进的话）。</p> <p>　　再入：二读之后，找到了10个小问题，确信没有更严重的问题了。因此我们有更大的信心认为这本书是一本好书。</p> <p>　　。。。</p> <p>　　把&#8220;书&#8221;换成&#8220;软件&#8221;，&#8220;二读&#8221;换成&#8220;测试&#8221;，同样道理。</p> <p>　　从上面举的例子可以看到，分工之后，的确会产生很多问题。但是解决的方案是什么呢？是取消分工，让开发人员顺手做测试人员的事情，顺便把项目管理，美工，市场推广，客服都干了？显然不是。</p> <p>　　注意我们提到了&#8220;角色&#8221;，角色是有人来扮演的，如果一人扮演了&#8220;开发&#8221;的角色，又能够来扮演&#8220;测试&#8221;的独立角色，当然很好。但是条件是她要以&#8220;独立&#8221;的心态测试，而不是想：&#8220;这代码就是我写的，哪会有什么错&#8230;&#8221;而草草了事。</p> <p>　　那么独立的测试角色怎么才能发挥最大作用？从上面的坏现象中，我们不难总结出来。其实MSF原则都讲到了。</p> <p>　　&#183;充分授权和信任（Empower team members）</p> <p>　　&#183;各司其职，对项目共同负责（Establish clear accountability and shared responsibility）</p> <p>　　有些成功人士和成功的公司号称没必要有独立的测试角色（Test），你怎么看？</p> <p>　　我猜想和踢足球类似，还是那几个原因：</p> <p>　　人太牛：</p> <p>　　不世出的天才，例如高德纳写书的时候发现排版软件不好用，就自己写了一个。也没听说他为这个软件项目请了什么独立测试人员。对了，他不读email已经很多年，有秘书帮他处理这些事-这也是一种分工！</p></div><div>太小： <p>　　&#8220;我写了个小类库，全部自己测试&#8221;这当然不错。</p> <p>　　我以前的一个优秀实习生后来一个人尝试写一些UI的控件，写得很高兴的时候说了一句&#8220;我现在软件工程的原则都不管了&#8230;&#8221;为了玩得爽，不妨打破束缚，诸法皆空，挺好。</p> <p>　　但是顺水推舟，推广到所有情况，从而得出"程序员就应该自己测试，独立测试不必了"这样的普适结论，未免有点过。</p> <p>　　人不够：</p> <p>　　那就自己动手多做一些事情，也挺好。就像前面提到的，一个人扮演多个角色，只要能入戏就行。</p> <p>　　条件特殊：</p> <p>　　近年来，软件产业百舸争流，鱼龙混杂，在海里裸泳的弄潮儿也不少，出现了种种类型的分工合作和开发模式。不在有些情况下（例如一窝蜂模式，主治医师模式），强力的dev是可以搞定很多事情。运用之妙，存乎一心。</p> <p>　　引起网上讨论的两篇文章在这里:</p> <p>　　<a href="http://www.51testing.com/html/94/n-807994.html">http://www.51testing.com/html/94/n-807994.html</a></p> <p>　　http://www.quora.com/Is-it-true-that-Facebook-has-no-testers</p> <p>　　其中打分最高的回答来自前雇员（Evan Priestley），他总结了Facebook这个公司为什么貌似没有全职测试人员：</p> <p>　　a、全公司人员经常使用自己的软件产品！（如果你开发的软件是航天飞行某控制模块，你怎么能经常使用呢？）</p> <p>　　b、使用log来分析问题可能出在哪里。（我们的一些程序员写程序都没有log，那大家看什么呢？）</p> <p>　　c、利用用户的反馈和实时状态分析（比较过去一小时和上周同一时间的数据来判断是否有bug）</p> <p>　　d、应用开发商给Facebook报bug。（开发商其实比较不爽，但是FB有时就是无预警地修改API，你除了赶紧报bug，还能怎么着？）</p> <p>　　e、很多人自愿给Facebook报bug，这位贴主自称每月给他的前雇主报13,000个问题.（没错，是每月一万三千个！）</p> <p>　　f、最后这位前雇员还加了一句：还有一个原因是，Facebook大体上也不需要搞出太高水平的软件。</p> <p>　　当你的公司也能有a）到e）这样的文化，流程，开发商和给力的前员工，而且你的软件&#8220;大体上也不要太高质量&#8221;你的确不需要什么全职测试人员！</p> <p><strong>　　微软是怎么做的呢？</strong></p> <p>　　就像MSF原则讲的那样，有分工，有合作。</p> <p>　　微软开发测试主要有三种角色：</p> <p>　　&#183;SDE: Software Design Engineer，简称dev。</p> <p>　　&#183;SDE/T: Software Design Engineer in Test，也写代码，但是重点在测试。</p> <p>　　&#183;STE: Software Test Engineer.</p> <p>　　对于如何更有效地开发互联网应用，微软很多团队都做过不少探索。例如一些团队尝试把SDE和SDE/T合成一体。每个人都负责开发/测试/发布这一整套流程，根据我的观察，有好处，也有额外的成本。</p> <p><strong>　　结束</strong></p> <p>　　一位网友说得好：分工是社会和行业进化的结果。开发和测试其实是软件工程的两分支。不同的软件／服务需要不同方式和程度的测试。独立专业的测试等同于第三方代表客户对产品认证。</p> <p>　　拉拉扯扯这么多话，团队/个人/角色到底应该怎么办呢？我认为，</p> <p>　　&#183;在初始阶段（新项目，团队进入一个新领域，人员刚进入一个项目），每个团队成员都要尽量打通各个环节，多负责，把所有事情都搞懂，培养通才。</p> <p>　　&#183;当项目/产业发展到一定阶段（进入阵地战的时候）， 要大力提倡分工合作， 培养专才。</p> <p>　　&#183;把自己项目的架构和流程做好， 让所有人都能比较容易地进行 Quality Assurance 的工作。</p> <p>　　&#183;培养&#8220;大家都要做QA， 专人负责量化的Test，&nbsp; 有条件多做测试自动化&#8221;的文化。</p> <p>　　&#183;要明白自己项目的特点， 人员的特点， 产业的特点。避免照搬别人的做法。不要听说某某伟大的系统的开发/测试比例是多少， 就哭着喊着也要同样的比例&#8230;</p> <p><strong>　　思考题：</strong></p> <p>　　分工之后，&nbsp; 每人负责一小块东西， 怎么能体现出个人的独特而巨大的价值呢？&nbsp; 例如， 你刚到一个出版社， 领导让你做 &#8220;二读&#8221; 这份工作；&nbsp; 或者你刚到一个软件公司， 领导让你做&nbsp; &#8220;测试&#8221;&nbsp; 这份工作， 你怎么能展现出你独特的价值呢？</p> <p>　　你在某团队做测试，兢兢业业已经三年， 今天大家传说公司认为开发人员应该做测试， 所以不需要专职的测试人员了。 你怎么想？ 你能否做到：</p> <p>　　明确列出过去三年你对团队的贡献？ 除了&#8220;认真执行测试用例&#8221;之外，&nbsp; 你对团队整体的&#8220;质量保证&#8221;还有什么独特的贡献？</p> <p>　　有理有据地说明， 没有专职测试人员， 项目会有什么风险？</p> <p>　　这三年的经历在你的简历怎么写出来？ 你比三年前更容易找到工作么？</p> <p>　　这三点搞不清楚的， 还是改行吧。</p></div><img src ="http://www.blogjava.net/qileilove/aggbug/377143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2012-05-02 10:10 <a href="http://www.blogjava.net/qileilove/archive/2012/05/02/377143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何做好软件系统设计阶段质量保障</title><link>http://www.blogjava.net/qileilove/archive/2012/04/13/374037.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Fri, 13 Apr 2012 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2012/04/13/374037.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/374037.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2012/04/13/374037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/374037.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/374037.html</trackback:ping><description><![CDATA[<div><p>　　设计是用户需求到编码实现的必经阶段，软件项目在设计阶段的禀赋决定了软件项目的资质。好的软件设计不是软件项目成功的唯一条件，但是没有好的设计软件项目肯定无法做好。</p><p><strong>　　一、软件设计的重要性体现在以下几个方面：</strong></p><p><strong>　　1、软件设计在整个软件项目的建设中起着承上启下的重要作用。</strong></p><p>　　从整个软件项目开发阶段来看，软件项目可以分为需求、设计、编码、验证四个阶段。设计承接需求分析，基于准确的需求分析，对项目目标进行结构化搭建。设计阶段产生的设计说明书以及设计规范是编码阶段的作业指导，也是<a target="_self"><u><strong>测试</strong></u></a>人员开发<a target="_self"><u><strong>测试用例</strong></u></a>的指导书。</p><p><strong>　　2、软件设计是对软件项目质量进行保障的关键步骤。</strong></p><p>　 　软件项目的质量与需求分析、设计、编码、验证段这四个阶段的质量之间的关系，可以用C语言表达为：最终的软件质量 = 需求分析质量  &amp;&amp; 设计质量 &amp;&amp; 编码质量 &amp;&amp;  验证质量，这种&#8220;与&#8221;的关系表明任何一个阶段出现质量纰漏，软件项目的最终质量都无法保障。</p><p><strong>　　3、设计阶段提供的软件表示，使软件项目质量的评价成为可能。</strong></p><p>　 　反映软件设计质量的要素有：准确性、稳健性、安全性、通信有效性、处理有效性、可操作性、完备性、一致性、可追踪性、可见性、可扩充性、复用性、模块 性、清晰性、自描述性、简单性、结构性、硬件系统无关性、软件系统无关性、文档完备性等。通过这些考核要素对设计阶段质量进行控制，从而达到从项目前端控 制软件质量的效果。同时该阶段的设计规范也是进行软件质量评价的参照标准与基本要求。</p><p>　　因此，想做好整个软件项目的质量保障，必须充分重视设计阶段的质量保障<a target="_self"><u><strong>工作</strong></u></a>。山东省软件评测中心作为国内最早一批获得国家实验室认可并取得政府授权的中立的第三方机构，在十余年的软件项目质量服务过程中发现：</p><p><strong>　　二、设计阶段经常出现的质量问题从大的方面看有以下几种原因：</strong></p><p><strong>　　1、需求分析阶段工作不充分</strong></p><p>　 　好的软件设计必然基于准确的需求分析，离开正确的需求分析，软件设计就是做得再好，在源头上也是错误的，更无任何意义，有时甚至是南辕北辙。有些软件项 目因为工期紧张或乙方软件企业管理不规范，甲方用户人员技术受限或配合不到位或承建方需求分析人员业务、技术经验不足等这样那样的原因，需求调研没有做 透，更有甚者基本的业务逻辑还没有完全理清，就匆匆开始需求分析然后又囫囵吞枣的进行自我想象中的架构设计，结果可想而知。</p><p><strong>　　2、设计不充分</strong></p><p>　 　有许多软件企业不重视设计阶段的工作，或者略掉设计直接进行编码。这样必然把许多的问题遗留给编码阶段，等写了一部分代码后再后头看，错了，返工&#8230;&#8230;另 外，设计人员由于技术欠缺或经验不足，或者对业务理解不够深入，未能充分考虑后期需求变动对设计的影响也是造成设计不充分的一类重要原因。</p><p>　　设计不充分往往导致频繁变更与诸多性能、安全方面的漏洞。在软件项目里，越是在项目前期发现问题，解决成本越低。据相关机构统计，在设计阶段发现偏差比在需求分析阶段发现并修正要高出5 倍，在编码阶段觉察偏差则会提高到10倍，而如果延续到<a target="_self"><u><strong>单元测试</strong></u></a>或<a target="_self"><u><strong>系统测试</strong></u></a>阶段发现设计缺陷修正成本则会提高到20倍。另外，设计人员由于技术欠缺或经验不足，或者对业务理解不够深入，未能充分考虑后期需求变动对设计的影响也是造成设计不充分的一类重要原因。</p><p><strong>　　3、过度设计</strong></p><p>　 　与设计不充分相对应的一种情况是设计过度，过度设计一般是由于设计人员在做项目分析设计时，过分的考虑潜在的、未来的以及准备扩展等因素，过度的抽象， 过多思考封装、分离解耦，导致太多颗粒单位，太多插件等等，给设计资源造成不必要的浪费，并且可能导致原本可以简单实现的逻辑变复杂，造成系统整体性能的 下降与维护成本的上升等等，以至于影响到用户体验或者简直没法用。</p><p>　　上述情况都会造成软件设计质量的下降，那么我们应该如何做好设计阶段的质量保障工作？</p></div><div><p><strong>　　三、如何才能做好软件项目设计阶段的质量保障</strong></p> <p><strong>　　1、思想上重视</strong></p> <p>　　充分认识设计阶段的重要性，从思想上强调设计阶段质量保障工作的必要性与重要性。关于软件设计的重要性前文已从几个方面作了总结，不再赘述。项目团队成员与甲方都要充分理解并一致认同设计规范与设计评审等质量管理措施对整个项目的意义与重要性。</p> <p><strong>　　2、选用合适的设计思想、设计方法</strong></p> <p>　　设计开始，在充分了解需求与项目背景的前提下，结合项目情况采用恰当的设计思想与设计方法，从设计的指导思想与方法上避免设计阶段的质量瑕疵。 我们在做软件设计时还要根据项目的具体情况与应用场景选用合适的设计思想作指导，选用合适的建模方法帮我们尽快理清系统的业务逻辑并理出思路。</p> <p>　　从方法学的角度来讲，软件的设计与开发从最初的机器语言-汇编语言发展到面向过程的结构化设计方法，到现在应用较多的面向对象、面向组件发展到面向服务，每一步都体现了不断抽象、更加贴近业务实务的发展趋势。</p> <p>　　不管采用什么样的设计方法进行架构设计，设计都需要以充分满足项目需求为目的，任何分析与设计方法只有针对具体问题才有实际意义。另一方面要考虑的是，采用的方法要侧重满足项目或产品的质量需求，也就是非功能性需求。确保设计阶段的质量无忧。</p> <p><strong>　　3、项目管理上避免</strong></p> <p>　　项目管理是贯穿整个项目生命周期的，80%的软件项目质量问题是由项目管理造成的。软件设计阶段作为软件项目的一个重要环节，要做好质量保障自 然离不开好的项目管理。从设计团队组建到角色分工与权责确定，到设计规范的制定与流程梳理，所有这些工作都需要一个好的团队负责人去把控。设计团队负责人 还要重视设计评审，通过设计评审不断发现问题，逐步完善细化设计架构与详细设计说明书，作为后期代码实现与测试用例编写的指导。要重视项目经理的作用，项 目经理的职责是进行沟通，促进沟通并建立沟通的渠道。只有通过沟通才能在项目成员间建立起认同与理解，从而将设计思路有效实现。</p> <p><strong>　　4、引入专业的第三方质量保障服务机构指导</strong></p> <p>　　一般的项目建设，乙方自己充当质量保障的角色，部分软件企业为了降低成本，尽可能的减少质量保障环节的资源支出，致使设计质量无法保障，即使有 部分软件企业视质量为生命，建立了良好的质量管理体系，但是囿于精力所限或赶工期或质量保障经验上的限制，设计质量也是不能令人满意。而从甲方看，一般囿 于人员、技术、精力的限制，甲方很难有精力或技术能力去对项目的质量进行深入的关注。更何况软件本身并不可见，充满复杂的逻辑关系，模块之间的耦合关联度 不易把握。第三方质量保障服务机构靠技术与服务来赢得客户信任，因而更加重视项目的质量与最终用户体验。从而会更加专业的对待项目过程中的质量管理。</p> <p>　　综上，算是抛砖引玉，欢迎探讨！</p></div><img src ="http://www.blogjava.net/qileilove/aggbug/374037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2012-04-13 10:19 <a href="http://www.blogjava.net/qileilove/archive/2012/04/13/374037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于QA的职业发展道路的疑惑</title><link>http://www.blogjava.net/qileilove/archive/2012/04/13/374036.html</link><dc:creator>顺其自然EVO</dc:creator><author>顺其自然EVO</author><pubDate>Fri, 13 Apr 2012 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/qileilove/archive/2012/04/13/374036.html</guid><wfw:comment>http://www.blogjava.net/qileilove/comments/374036.html</wfw:comment><comments>http://www.blogjava.net/qileilove/archive/2012/04/13/374036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qileilove/comments/commentRss/374036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qileilove/services/trackbacks/374036.html</trackback:ping><description><![CDATA[<div><p>　　Q（ amandating ）：</p><p>　　看着大家丰富的阅历和<a target="_self"><u><strong>工作</strong></u></a>履历，以及职业前景的广阔，不禁想起自己可怜的履历。</p><p>　　没有开发背景的硕士（还不是computer专业而是communication专业），工作直接做了<a target="_self"><u><strong>测试</strong></u></a>，接着做QA，现在兼职做EGP成员。</p><p>　　想问问专家，指点一下，最佳发展道路是？难道一直做QA？</p><p>　　同时说明一下发展道路上所需的资质，多谢了</p><p>　　A（ lilyli ）：</p><p>　　我的学历不及lz，但是工作经历上多了开发和<a target="_self"><u><strong>项目管理</strong></u></a>两个阶段，这两个阶段的工作经历对于我做QA的帮助还是很大的，因为我可以结合我的项目经历，站在PM的角度和开发工程师的角度看问题，开展符合项目情况的<a target="_self"><u><strong>质量管理</strong></u></a>活动。</p><p>　　个人认为QA是比较富于挑战性的工作，具备了项目开发知识还不够，还需要在软件工程、沟通能力、工作方式方法上做提高，才能帮助QA工作更好的开展。</p><p>　　发展的道路没有最好的，只有最适合的。如果你喜欢QA工作，那就做下去，兴趣会使工作变的更愉快</p><p>　　A（steplv）：</p><p>　　关于楼主问的问题，我略谈一下自己的浅见。</p><p>　　你问的是QA的职业发展道路与所具备的资质，在这里，我不想扯远，就这两点，我大体谈谈自己的看法。</p><p>　　1、一直走QA这条路</p><p>　　如果单纯要走QA这一条路，要具备什么素质，我曾经写过一篇<a target="_self"><u><strong>文章</strong></u></a>《浅谈QA所应该具备的知识》（在本网站中的地址是：<a href="http://www.51testing.com/html/32/n-78432.html">http://www.51testing.com/html/32/n-78432.html</a>）， 这里面有详细叙述，这里不再多说。但如果说QA这一条路的发展，个人认为，随着中国软件企业越来越多的走出去（做外包或者其他），势必需要具备国际认可的 标准与规范，就跟&#8220;Made in China&#8221;这个品牌一样，需要接受国际环境的挑战，那么， 作  为行业的发展，QA将来一定会有所作为的，就跟现在PM的价值一样，只是体现方式不同而已。所以，一定要相信，QA这个行业在将来一定会有所发展并初具规 范与规模，当初本人选择这个行业也是在无形中看到了这点。毕竟社会是进步发展的，QA这个行业也是一样，需要发展，可能只因我们现在处于初级阶段，所以会 存在太多的困扰，但正因为有这些困扰，所以才需要我们去解决。</p><p>　　2、走向QA管理</p><p>　　我这里所指的管理，是指QM（质量管理），逐渐上升成为QML。这个过程需要大量QA经验、项目开发与管理经验、甚至软件配置、<a target="_self"><u><strong>软件测试</strong></u></a>等经验的积累，也许过程比较长，也许比较短，一看机遇，二看自身能力。需要具备的资质还是包括&#8220;第1条、一直做QA这条路&#8221;中的内容，只是要求更精，而且此阶段尤其突出沟通能力、协调能力，并要注意培养自己的情商、逆商。</p><p>　　3、走向高级管理</p><p>　 　这里所说的管理，是指总监这一级别，也就是所谓的质量总监（或分管质量管理副总），如果真正走到这一步，那是相当的牛气了。这个阶段，专业知识体系不在 话下，更多的是侧重于对于整个企业质量管理体系的建立与优化、维护，企业的研发流程管理优化与维护，以及质量战略的制订、统筹企业管理。具备的素质我也不 知道，呵呵</p></div><div><p>　　Q（ amandating ）：</p> <p>　　在我们这里，好像QA唯一有前途的发展道路就是做咨询了。你们怎么看呢？</p> <p>　　A（ lilyli ）：</p> <p>　　我觉得QA转管理的可行性是比较高的。我的分析主要基于这么几个方面：</p> <p>　　1、QA需要具备很强的沟通能力，这点也是作为管理者的基本要求。</p> <p>　　2、QA要有发现问题、分析问题并解决问题的能力，从组织的日常工作中发现可以改进的地方，并执行改进。这个能力也是作为管理人员的基本要求，管理就是发现问题、分析问题并解决问题嘛。</p> <p>　　3、QA工作可以涉及到组织工作的方方面面，大处着眼小处着手，很锻炼人的。真要练成了一定的功力，转管理是自然而然的事。</p> <p>　　当然，还得看组织只否具有这种竞争管理职位的机会哦</p> <p>　　A（ grace ）：</p> <p>　　还有一种和QA差不多的职位，是项目监理</p> <p>　　A（tyrone）：</p> <p>　　呵呵，其实我觉得这样的讨论会让人很泄气呢。因为 QA  原本是一项过程，后来因为资源管理的需要，把技术特性类似的工作集合在一起，发展成为一个部门。 QA  其实是公司里每一个人的责任，但是现在误打误撞成了一项看似专业又不像是专业的领域。不过，最好是成立这种部门的公司，人力资源管理单位，能够为这些人发 展一个职涯流路，或者在社会上，有系统地成立 QA 的专业协会，利用群体的力量，建立专业知识技能认证体系，并透过立法的方式，真正形成 QA  专业，让软件或产品的开发制程中，一定要有 QA 专业人员的参与，就如同盖房子要有建筑师及鉴测专业人员的参与，而且这些人一定要专业执照才行。</p> <p>　　QA 人员如果没有项目管理与产品开发经验，一定要设法申请去参与，那怕是一年两年的时间，这些经验对于未来职涯会有非常大的帮助。</p> <p>　　一个公司的 QA 部门如果非常强的话，就可以做很多事情，例如去承揽其它公司的 QA 、测试的工作，这样公司的 QA  部门可以从成本中心变成利润中心，或者到达某一个规模的时候，又可以把这个部门独立成为一个子公司，除了承揽母公司的 QA  与测试的工作外，更可以对外做更多 QA  、测试、审计、项目监理、第三方验证与确认、质量保证咨询等等服务的业务，不断培养自己的专业领域，例如专门在飞航控制或交通方面的软件测评、核电厂控制 系统的软件测评、汽车电子自动控制类软件的测评、银行金融系统软件的测评 &#8230;&#8230;. ，看来钱景不错呢，因为中国的内需市场够大。</p> <p>　　QA 人员的发展方向，并不会是 EPG 而已，而是其它的相关事业，例如，软件测评中心、产品开发维护项目监理公司 （  职司开发与维护的验证与确认 ）  、质量管理咨询公司等等，在这类的公司里，所有的管理技能都会被需要，可以有各种职务分工，包括测试、模拟、评估、验证与确认、审计等等服务的专业了，在 这些公司里，也可以导入 CMMI（ 未来还有 CMMI-SVC 呢 ） ，想当 EPG  的机会多得很。而在这类公司里，又有总经理、技术总监、测试工程师、项目经理、质量保证人员 &#8230;&#8230;.  等等职务，从这些角度去看，其实不管是那一类人都有很好的发展呢。</p></div><img src ="http://www.blogjava.net/qileilove/aggbug/374036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qileilove/" target="_blank">顺其自然EVO</a> 2012-04-13 10:18 <a href="http://www.blogjava.net/qileilove/archive/2012/04/13/374036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>