qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

捉虫记--大容量Web应用性能测试与LoadRunner实战(连载三)

1.4  软件测试的核心I:测试用例

  前文提到,测试用例代表了软件测试的工具方面,是它的核心之一。那么什么是测试用例,它又有哪些要点需要我们去掌握?

  1.4.1  什么是测试用例

  软件测试的核心行为就是针对要测试的软件设置测试用例。所谓测试用例,英文名为Test Case,是一个与程序部分行为以及输入、输出相关的描述或者标识。

  【测试用例的IEEE定义】

   美国电气与电子工程师协会(IEEE,The Institute of Electrical and Electronics Engineers),它出台了一个标准的测试用例定义,即"测试用例是描述输入实际值和预期输出行为或者结果的文档,它同时也标识了测试过程结果与约 束。"

  在实际工作中,花费测试工程师大部分时间的,都是与测试用例相关的。

  1.4.2  测试用例的几大要素

  一般来说,测试用例应该清楚地描述出对被测试软件发出什么数据或者条件,以及该输入所期望的结果。在小白这样的商业网站,测试部门规定测试用例应该具备如下几个要素。

  1.标识符

   这一点虽然和测试用例的内容没有关系,但却是测试过程中不可缺少的。比如,小白所在的部门每周都要开一次例会,向经理或者开发部门的同事说明当前整个产 品的测试状态,有时候需要特别指出某个测试用例的内容,那么用一个简单的代号来代表这一测试用例是非常适合的,这个代号一般情况下都是一个正整数,比如 1、88、437等这样。在小白所在的公司,测试用例是存放在一个数据库中的,代号也就自然地采用了数据库系统中的标识符字段类型。如果采用其他的方式存储测试用例,可以人工指定,只要保证标识符不重复就可以了。

  如图1-6显示了应用于真实测试场景的某测试用例文档,它实际上是一个Office Word文件,测试工程师(即编写者)在文件内容中手工指定了各个测试用例的标识符。

图1-6  测试用例的标识符

  2.测试的内容

  测试内容可以说是测试用例最重要的部分,它一般指明了当前测试用例的运行目的,比如测试网页是否可以打开、单击按钮后是否能够显示正确的计算结果等。在很多情况下,测试内容与下个要点:输入的条件区别并不是很清楚。

  3.输入的条件

  输入条件可以是操作步骤,也可以是输入的数据,还可以是系统运行环境的需求(比如处于某种特别的操作系统环境内这一条件)。图1-6中的各个测试用例,都详细地写明了每一步骤的具体操作。

  【复现步骤】

  对于被测试软件而言,不同的输入条件会导致不同的输出预期,因而可能出现的Bug表现并不一定相同。如果重复某些输入条件,总会导致某个Bug的出现,那么就把这些输入条件称为Bug的复现步骤(Repro Step)。

 4.输出的预期

  该项信息描述了在当前的输入条件下,预期的输出。比如计算器程序中十进制数字的2+3的输出应该等于5。若输出预期与实际结果不同,则应该考虑 为Bug的可能性(有的时候,输出预期也会随项目的进度而变化,因此预期与实际不同并不意味着100%是Bug,此时需要与项目经理等相关人员进行协 商)。

  5.测试环境信息

  这一部分的内容描述了该测试用例所适用的环境,比如操作系统的版本,所依赖硬件软件的版本、语言等。测试环境信息有时候也可以成为输入条件或者 复现步骤的一部分,比如某个按钮只有在IE浏览器中才会出现、某个Bug只在IE浏览器中才会产生,那么IE既是测试环境信息,也是输入条件和复现步骤。

  6.与其他测试用例的依赖关系

  在测试某些软件的时候,比如MSN,如果登录这个测试用例都无法通过,那么剩下的发消息,发文件等测试用例也肯定继续进行(除去直接调用接口的 那些测试之外),这就是一种测试用例之间的依赖关系。合理地应用测试用例之间的依赖关系,能够提高测试效率,减少无谓的测试时间浪费。

  7.测试用例需要被开发、审阅、使用、维护和保存

  这也是测试工作很重要的一部分。软件的说明书Spec可能会变化,因此测试用例需要变化,这就要求对测试用例进行增加、修改和删除。测试用例是 文档,需要有固定的场所进行保存,一般是数据库或者文件。测试用例需要审阅,以达到预期的效果和更高的工作效率(重复的测试用例肯定会浪费测试工程师的时 间)。

  1.5  软件测试的核心II:测试工程师

  除了测试用例之外,软件测试的另一个核心,同时也更为关键,就是测试工程师了。这是因为,测试用例也是由测试工程师来编写的,受人的因素影响很大。可以说,人是决定软件成败的主要因素。本节将介绍测试工程师所必备的一些素质。

  1.5.1  测试工程师与软件质量保障

  有的时候我们在招聘广告上能够发现有些公司招聘测试人员的时候,列出的职位名称是软件质量保障工程师(QA,quality assurance),那么这两种称呼是否是代表同一种工作内容呢?

  回答是基本一样,但有细微不同。软件测试工程师的主要职责在于发现并确认Bug的解决与否,而软件质量保障工程师则更进一步,在测试工程师的职 责之外,还包括创建、维护为保障软件质量而确立的规范、规则与流程,比如软件配置管理(Software Configuration Management,又称SCM工程师)等。

  【字面意义的理解】

  从字面意义上来看,测试工程师主要针对软件的已有Bug,类似体检部门;而软件质量保障工程师则不光针对已有Bug,还对预防Bug的产生提出建议,类似健康顾问。当然,在实际工作中,两者的区别并不是那么清晰的,在很多公司内部,他们所从事的工作内容是完全一致的。

  1.5.2  测试工程师应该具备的素质

  一个合格的测试工程师,应该具备如下专业素质:

  具备基本的数据结构,操作系统等专业知识。这一点对于从事性能测试的人员来说更为重要。

  具备一定的程序开发经验。掌握一到两门语言对于进行自动测试是大有益处的,另外,具有程序开发经验,也更容易理解软件Bug的来龙去脉。这一到 两门语言可以是某些高级语言,比如C#和VB.net,以及一种脚本语言,比如JavaScript、VBScript或者Python等的组合。

  软件使用经验丰富,对于软件的不正常行为敏感。这一点对于发现Bug是很有帮助的。

  同时,测试工程师还应该具备如下的性格特征。

  有好奇心,乐于探索软件功能,乐于尝试新的软件产品。

  乐于探索谜题,追根溯源。对于一个Bug,必须有追根溯源的精神,才能够发现它的特点,这个性格特征在判断Bug的产生原因,以及是否与其他Bug重复等日常的工作内容中都会展现。

有耐心,不轻言放弃。测试工程师在工作中经常会试图复现一个软件中的Bug,这需要细心、耐心和坚持。

  必须具备一定的创造性。测试工程师是无法模拟出用户使用软件的所有场景的,因此必须具备一定的创造性,通过测试更多情况下软件的不同表现,发现被测软件更多的问题。

  具备一定的沟通和交流技巧。这一点尤为重要,测试工程师由于工作性质的要求,要给开发工程师所编写的代码找到问题。因此在平时的工作中要注意利 用良好的沟通、交流技巧,使得开发工程师能够接受自己正确的观点,在保证软件质量的情况下不影响团队的合作氛围,让整个团队都体会到测试工程师和测试工作 的重要性。

  1.5.3  测试工程师的职业发展

  软件测试工程师在我国尚属一个比较新的职业,目前专业人才相对缺乏。另外,和软件开发相比,软件测试具有进入门槛相对较低,职业生涯相对较长的特点。因此,从事软件测试的职业是具备较好的发展前途的。随着工作经验的不断积累,比较好的发展路        径是:

  初级测试工程师。进行黑盒手工功能性测试(第2章我们将讲解什么是黑盒测试、功能性测试)或者本地化测试等,一般是从学校毕业后参加工作的2~3年,正处于学习或者进一步熟悉、巩固测试基本知识与方法的阶段。

  中级测试工程师。进行测试计划的编写,测试工具的开发,各种测试的实施等。处于这一阶段的人员,相比于初级测试工程师工作了更长的一段时间,掌握了测试的基本理论和知识,对软件开发流程有了比较深入的了解,同时对某项软件开发技术有较深入研究的程度。

  高级测试工程师或者测试经理。经历了初级和中级测试工程师的磨炼,从头至尾参与了一个产品或者多个产品的生命周期,在其他方面能力也具备的情况下,就可以从事这样的职位了。工作职责一般是统筹软件的测试计划,决定测试方法,确立、实现测试框架,管理控制测试进度等。

  开发人员。实际上,从测试人员转为开发人员的比例不算小,因为测试人员对产品比较熟悉,如果自身的开发能力较强,往往具备纯开发人员所不具备的测试知识和用户视角,因此编写的代码质量更高。

  以上是软件测试工程师的发展路线。在公司的选择上,一般来讲,大型或者国外的企业往往更加重视测试,所以软件测试工程师更多出现在这样的企业中,导致其平均薪资水平相对比较高。对于想从事初中级测试工程师的读者来说,一般可以考虑如下4类公司。

  国内的IT相关企业。这些企业大致有各软件开发公司,通信、电子、游戏公司等。

  外资企业在国内的研发中心。这类公司的产品开发人员相对更集中在公司总部,同时为了节省成本,测试工程师则较多地安排在国内。

  为外资企业做软件外包的国内企业。微软、Google、IBM等很多在华的跨国企业都会聘用这些企业的员工进行外包测试工程师的工作。

  大型网站。中小型网站往往没有专职的测试人员;大型网站由于架构较复杂,分工相对更为专一,会有专职的测试工程师队伍以保证质量。

  1.6  本章小结

  本章通过刚刚作为软件测试工程师新人的小白短短几天的经历,对软件测试的基础知识进行了简要的介绍。

  在本章的开头,给出了公认的软件定义。所谓软件,就是计算机系统中的程序和相关文件或文档的总称。

  随着软件越来越复杂,软件危机逐渐出现,人们为了从软件开发的初期就避免出现这样的问题,研究总结出若干软件生命周期的模型,主要有如下4种:

  Big-Bang大爆炸模型;

  Code and Fix边做边改模型;

  Waterfall瀑布模型;

  Spiral螺旋模型。

  通过在工作中应用这些模型,很好的进行了软件项目管理。

  但是,软件中的Bug依然不可避免。所谓Bug就是软件的错误或者偏差。在软件开发的过程中,越早发现Bug就越能节约软件开发的成本。

  编写测试用例,利用人工或者自动的方法寻找被测试软件Bug并确认修复,是软件测试工程师在工作中要完成的职责,加上有效的预防Bug产生的规范,就可以在很大程度上保障软件的质量。

  (未完待续)

相关链接:

捉虫记--大容量Web应用性能测试与LoadRunner实战(连载一)

捉虫记--大容量Web应用性能测试与LoadRunner实战(连载二)

posted on 2013-05-24 11:50 顺其自然EVO 阅读(231) 评论(0)  编辑  收藏 所属分类: selenium and watir webdrivers 自动化测试学习


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜