比尔•盖茨曾经说过:“微软不是一家
软件开发公司,而是一家
软件测试公司。” 足见其对于软件测试的重视程度。 ATC( advanced Technology Center,微软亚洲工程院)测试组负责微软某些产品的测试
工作。其测试工作的方法沿袭微软的工作习惯和软件测试的普遍方法,同时因其测试对象的特殊性,又具有其自身的特点。从本期开始,我们将陆续邀请ATC测试组的相关负责人来介绍他们所认识的测试工作,以及如何进行测试工作的。
51Testing软件测试网&\
^
uH3~N'K,r_51Testing软件测试网3rzP mZ2j U.G]$]\c/Zk\!k-f0你喜欢“找茬儿”么? 或者你有着和别人不一样的思维方式,总能发现问题的存在?是不是从小就被称之为“破坏之王”呢? 或者能够静下来,在纷繁复杂的事物里找到你想要的东西?如果你满足以上两条或者更多的条件,那么请关注一下你可能非常适合的行业――软件测试。
6e9rO CqE051Testing软件测试网(d?4X@s0A`认识测试工作
mgY8?!h%Ri0由于种种原因,国内的软件测试并没有规范化,也没有真正地被重视起来,甚至没有被足够地了解。许多软件公司都没有自己独立负责测试的部门,也不会把测试工作外包出去,开发人员往往是自己开发自己测试,边开发边测试,这种很原始的测试方式,没有比较科学的方法指导,更没有文档可依。这样的局面让之前提到的软件测试天才们没有足够的用武之地。
51Testing软件测试网c,a$oX%Z~T%V {3h2d然而,软件测试是在有限的时间内提供高质量软件的保证,是一个完整正规的软件开发过程中非常重要的一个部分。在大型的软件公司里,往往软件测试工作被高度重视,在微软也不例外。ATC测试组负责Exchange Server、MSN Search、IE、Office Communicator等产品的测试工作。在这些产品发布之前,都要经历无数次严格地测试,并且测试工作不是从开发人员开始编写代码的时候才开始,而是从该产品建立研发项目伊始,就一直作为项目进行的一项重要工作而伴随项目的进行贯穿始终的。
51Testing软件测试网$D2h3c"`e'iZg O软件测试的任务不仅包括通常认识中的找出软件中存在的缺陷和错误,在不同的操作平台下软件的兼容性以及是否存在安全漏洞等等,作为一个优秀的软件,还要在用户使用习惯和体验方面进行大量深入的考虑,所以要找出软件提供的功能和用户需求有出入的地方,在检测软件 的执行效率和对于破坏性操作的承受能力是否在用户容忍度范围内等等,这些涉及到非软件功能上问题的测试工作同样很重要,但是通常容易在工期或者
其他因素影响下被忽视。微软件的产品之所以能被广大用户接受,其良好的用户体检是一个非常重要的因素,其中就有测试人员在改善用户体检和使用习惯方面所做出的巨大贡献。
51Testing软件测试网4nl'Rx,}Q|J6VY6N51Testing软件测试网rh)PN+T0^%U工作的角色和职业的发展
JZNRC)qh0如同大家对测试工作知之甚少一样,对于测试人员的职业道路的发展也不被大多数人熟知。兴趣和个人的期望发展方向因人而异,测试工作人员也能够选择驾驭还是领导团队。
/`5qE u
i5\TU0在ATC成为软件测试工程师)SET-Software Test Engineer)后,可以按照自己的喜好和特长继续发展。通过努力,可以成为在测试方面的软件设计工程师(SDET-Software Design Engineer In Test),之后,如果痴迷于具体技术的研究和应用,可以继续发展成为
测试技术主管)Technical Lead), 最后成为测试架构师(Test Architect)――测试技术方面的顶峰职位;若是有领导才能,钟情于在团队中扮演领导角色,可以尝试发展成为测试主管(Test Lead)和测试经理(Test Manger), 最终成为测试总监(Test Director)。
51Testing软件测试网 IGKWaXMy%h0u E0_7z!G*}Yjh0不同阶段的测试工作
51Testing软件测试网K(BZOM@~#KP%OA9~在微软,软件产品的研发项目一般都分为产品定义阶段、设计阶段、开发阶段、确认阶段和发行阶段,测试工作则覆盖到这里的每个阶段,在每个阶段的工作重点都有不同。
51Testing软件测试网%FES@)V(`;E通常大家认为在产品定义阶段,测试工作的介入还为时尚早,事实上测试人员在这个时候也已经开始忙碌起来。他们会根据产品规格书的描述理解产品,然后对照需求文档,找到其中不符点,并综合考虑项目的要求和资源,对纳入需求和开发目标的功能进行取舍,然后向项目经理反馈变更,同时开始构建测试的基础架构。在产品的设计阶段,测试人员在开发人员忙于设计产品同时,审视开发设计的文档并给出反馈意见,同时准备制订测试计划和开发
测试工具的工作。开发阶段可能是Bug最多的时期,ATC测试组的工作人员会将找到的Bug提交到开发组中一个共有的
数据库中以供开发人员参考。为了防止针对某个Bug的修正引发更多的问题,他们在开发人员修正完Bug之后经过严格反复的测试,才能将修正后的代码重新发布到团队共有的代码库中。产品在确认阶段将不再有大的变动,这个时候测试工作仍然紧张地进行,不但针对功能进行测试,还会进行针对性能,压力和安全的测试。目的就是为了保证产品的稳定性和提高用户体检方面。测试人员的神经在发布阶段通常仍然非常紧张,担心在这个时候出现较大的问题而影响产品的发布。然而众所周知,没有完美的软件,所以在这个阶段查找出来的Bug就需要测试人员去全面权衡是否那么重要,一定要去修复,如果时间紧急并且不那么重要,就要对这样的Bug进行有效的取舍了。
'WtT2^VB8jAr0在产品进行测试的过程中,有时候也会发现操作系统和其他产品的安全漏洞和Bug。与软件公司不同的是, ATC测试组将会把这些问题及时反馈给微软件负责相关产品研发的部门,或者累积到下一个版本集中解决,或者是发布补丁来进行修下。
51Testing软件测试网
q*avOx%z另外,由于测试工作是个“得罪人”的职业,测试人员如何能和开发人员进行有效且友好的沟通需要他们在平时提升自己的沟通水平和人格魅力了。
E!_
D @ }0
Q*u$d9nG"W+x5\&XDQ0人工测试和自动测试的选择
s}8Y8b"] TC0对于一些大型的软件来说,测试工作确实是非常复杂和繁重的。在繁重的测试工作中,善于平衡人工测试和自动测试来进行工作可以节省很多的人力和时间,也能将工作做得更好。例如很多时候,对于软件测试中存在要在一定时间内完成类似枚举的大量重复或者需要模拟大量用户访问的服务器压力承载能力的工作时,测试人员往往会借助测试工具或者自己编写测试代码进行软件的自动测试来代替人工测试以节省时间和人力。例如,在测试BizTalk Server的时候,由于该产品涉及到26种人类语言,需要在多种不同的操作平台和不同的编码语言的情况下对软件进行全面的测试,浩大工作只能交给测试工具和软件自动测试来进行。在这种繁重的工作下,利用自动测试来能够避免由于人工的疲倦和其他影响因素造成的误操作带来的无效或者不准确的测试结果,而这是测试工具和自动测试所不会有的问题。
51Testing软件测试网3x?K1rN在对于产品的性能、压力承载能力方面,自动测试能够模拟出例如大量的访问量这亲的场景来进行测试,这个优势是人工测试无法涉及的。对于像产品的功能以及本地化/全球化这样方面的测试,也同样是自动测试的优势所在。
51Testing软件测试网K"x
Y1l
F*F%[9pLui3U:t编写代码也许也是从事软件行业的人最喜爱并最能获得成就感的工作。自己编写测试工具进行
自动化测试也是让工作变得更加有趣,而不是机械性地进行重复性的实验。在这里,每个人都可以最大限度地迸发个人创造性和智慧,为了更好更快地检测出软件的Bug,编写优秀的测试工具是测试人员成就感的巨大来源。另外这些测试工具还能够在下一个类似的产品和工作中重用,节省更多的时间和人力。
51Testing软件测试网(uX#FRaW
xqq然而,人工测试也有它不可替代的优势和独到之处。例如,对于软件的操作方式、外观、使用便易性等这些有关用户体验方面的测试,就不是自动测试所能代替的了。在对于测试工具和自动测试代码有时所不能触及的部分,例如软件的语法和文法错误,人工测试是唯一的选择。人工测试不需要参与此项工作的测试人员有深厚的编码基础,这能够降低项目的人员成本。另外,在软件的生命周期很短、软件本身相对比较简单的进修,使用人工测试就能降低成本,并显现出其不可替代的优势。
0i|1Bm!U1msRV0对需要测试的软件选择人工测试还是自动测试就要看工作对于时间、人力、技术以及对稳定性的要求来平衡两者的比例了。这种情况下,不仅是努力工作就能完成工作的唯一方法了。 “Work Smartly”就显得非常重要。在ATC的测试组,每个人都不断地被来自Work Smartly的成就感所激励,测试工作成为他们展示创造性和智慧的舞台。
51Testing软件测试网#H
b\ku;Z6o5P$[51Testing软件测试网4c8miP%sU:E)q