-
选择测试,你的比较优势在哪里?
2009-08-11 11:37:05
何谓“比较优势”?经济学上:和他人相比,有能力以较低的成本生产某种东西。关键点为:1、和他人相比;2、较低的成本。对于从事IT的人来说,比方说,对于都是写代码的程序员,如果你的性格比其它人的性格外向且喜欢与人沟通,亲和力强,那么这个就是你在这个群体里的比较优势,售前工程师和售后工程师都更适合你,可以让自己在工作中得到更有快感和充实的精神状态。
作为测试人员,你的比较优势在哪里?抛开测试技术和流程方面,还有其它的几个方面,可以成为你的比较优势。
1、细心和耐心。测试工作是一个相对比较乏味的工作,对于一些中小型IT企业来说,它没有太多的技术含量,也就没什么成就感。耐得住枯燥的工作,并能从中找到乐趣和意义,这就是最基本的测试人员素质。所以很多人,认为女孩子比较适合。也许吧,不过就像大多数行业一样,做到最顶端的一般都是男性,连服装和美容这个适合女性的行业都不例外,何况IT行业了,^_^!
2、发散性思维。世界是普遍联系的,而对于测试这个职业,如果具有较为灵活的发散思维,则是对工作一个比较有利的补充。但前提是这种发散思维必须以软件工程为基础,不能脱离这个圈子而过度发散。
3、喜欢接受新事物。对于不同的行业系统或软件,都有着其特殊的标准或是规范,这就需要测试人员平时能广泛的涉猎相关行业的业务知识,对特定行业的特殊背景或服务目标有个大致的了解与熟悉,这样在接受任何一个项目的时候都能相对容易的进入测试角色。
4、擅于积累和总结。测试这门从软件工程中独立划分出来的行业,毕竟有着它举足轻重的作用,打个不太恰当的比方,就好比医生诊断病情一样,对于医生这个行业,经验是最重要的,谁都喜欢找个老中医或老西医看病,这就是因为经验丰富。
经验从哪里来?对于这个朝阳产业来说,经验就是擅于积累与发现,对于每完成一个项目,都能将测试发现的所有问题记录,并归类,按照各种归类方式进行分析,然后统计其共性和个性的地方,这就是经验,也是资本。
总之,我个人认为一个优秀的测试人员就是一个通才,一个复合型人才,他能在保证在项目生命周期内,平衡技术、时间和质量三者的关系。作为一名测试人员,你的比较优势是什么呢?
-
测试职业生涯阶段发展方向(收藏)
2009-08-11 11:08:16
由于国内软件测试行业目前的发展迅速、需求旺盛,在国内的软件测试职位晋升一般要比国外快,但因行业本身太年轻,大家对软件测试中软件测试职业的发展了解不够,从而导致许多有志在此发展的年轻人举步不前。所以下面介绍一下海外公司成熟的软件测试行业职位分布情况,我国一些在软件测试行业中处于前端的公司与之也相仿,这可以作为软件测试职业规划的参考,给新人一个导向。
第一阶段:(测试员)初级测试工程师
自身条件:初入行具备计算机专业学位或一些手工测试经验的个人。
具体工作:执行测试用例,记录bug,并回归测试,通过qtp等测试工具录制回归测试脚本,并执行回归测试脚本。
学习方向:开发测试脚本并且开始熟悉测试生存周期和测试技术。第二阶段:(测试工程师)程序分析员
自身条件:有1~2年工作经验的测试工程师或程序员。具有初步的自动化测试能力,完善自动化测试脚本。
具体工作:设计和编写测试用例,编写自动测试脚本程序且担任测试编程初期的领导工作。
学习方向:拓展编程语言、操作系统、网络与数据库方面的技能 。第三阶段:(高级测试工程师)程序分析员
自身条件:有3~4年经验的测试工程师或程序员。具有一定的行业业务知识,储备系统分析员的能力。
具体工作:帮助开发或维护测试或编程标准与过程,分析软件需求,获得测试需求。确定测试需求相应的测试方法,获得测试策略方案。参与同行的评审(软件需求,软件测试计划等),并为其它初级的测试工程师或程序员充当顾问。
学习方向:继续拓展编程语言、操作系统、网络与数据库方面的技能。第四阶段:测试组负责人
自身条件:有4~6年经验的测试工程师或程序员。具有丰富的行业业务知识,具有系统分析员的能力,专长性能测试。
具体工作:负责管理1~3名测试工程师或程序员。集中于技能方面,担负一些进度安排和工作规模/成本估算职责。分析性能瓶颈的原因,为开发团队提供bug解决策略。
学习方向:性能测试,测试技能第五阶段:(资深安全或性能测试工程师)测试/编程高级负责人
自身条件:有6~10年经验的测试工程师或程序员。
具体工作:负责管理8~10名技术人员。性能测试整体方案设计,软件系统性能问题定位和性能优化,内存优化及分析数据溢出等,分析系统的安全漏洞等。 负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。负责开发项目的技术方法。为一些用户提供支持与演示。
学习方向:开发一些特定领域的技术专长第六阶段:测试/质量保证/开发(项目)、经理
自身条件:有10多年的工作经验。
具体工作:管理8名或更多的人员参加的1个或多个项目。负责这一领域(测试/质量保证/开发)内的整个开发生存周期业务。为一些用户提供交互和大量演示。负责项目成本、进度安排、计划和人员分工
第七阶段:(公司级质量总监)计划经理自身条件:有15年以上开发与支持(测试/质量保证)活动方面的经验。
具体工作:管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任 -
一个女研究生(高级测试工程师)的职业选择
2009-06-17 11:35:00
&u"U3Wb"nd129109 51Testing软件测试网.公司选择
终于下定决心要离开,我想去的是重视测试的外企或大公司。
我的逻辑很简单,测试在国内还未获得足够的重视,即使很多公司有测试,也是一些非常表层的测试,只有在规范的公司的测试才做得深入。在长达两个多月的面试和等待中,终于等来了我想要的机会,不过,选择摆在面前的机会,也不是一件轻松的事情。公司A,是一家具有一百多年历史的外企, 也是在IT行业非常有名的公司,专注于通信领域。这个公司提供给我的机会是高级软件测试工程师,主要负责软件测试,年薪比现在高50%。不过我看重的并不是这个公司提供给我的职位,也不是薪金,这些对我而言都没有太大的吸引力。吸引我的是这个公司本身完善的管理制度、规范的测试流程、先进的测试工具与测试方法、完善的培训机制以及全球共享的资源,当然,更重要的是公司的文化。
我现在所积累的测试技术,都是自己在测试的过程中摸索出来的,没有经过规范的培训;所使用的测试工具,也是自己在业余时间学习的,也没有深入应用到测试中。虽然说积累了一些测试经验,但还不够深入、也不够专业,我希望自己能够有一个完善的培训机会,也希望自己能够系统地深入学习测试技术与测试工具。而且,在一个全球化的公司工作,不但可以增长自己的见识,也可以进一步提高自己的整体素质,还可以加强自己的英文水平。
我对这个公司的印象很好,这源于业内对它的评价,也源于在面试过程中面试官问问题的水平以及对应聘者的态度。面试是一个双向选择,是企业在考核应聘者,也是应聘者在选择企业。在面试过程中的有一个小细节让我非常感动,hiring manager在用英文跟我交谈的过程中,有句话听不明白,重复问了她一遍,但她第二次给我复述后我还是不能马上领悟某个单词的意思,结果,她很耐心地换了一种方法问我,当我回答清楚她的问题后,自然也马上明白她所说的单词的中文含义了。
这是一个小小的细节,但透过这个细节,可以体会到她对人的尊重,她没有因为我不明白某个单词否认了我的英文水平或我的能力,跟着这样的manager干活,是一件幸运的事情。而且,不管是hiring manager的技术面试,还是PM的项目面试,或者是后来的HR Manager的综合素质面试,他们所问的问题都非常专业,与他们的交谈也非常愉快。不过,在这样大型的外企工作,在管理层的发展机会相对较少,带领团队干活的机会相对也较少。而我,相对于单纯的技术而言,更喜欢一些沟通协调的工作。
公司B,是一家在国内迅速发展的私企,也是在国内非常有名的公司,而且很需要人才也很珍惜人才。这个公司提供给我的机会是高级软件测试工程师,主要负责软件测试和流程改进,年薪是现在的两倍。说句心里话,这个公司最吸引我的是薪金,在那里干一年就可以有我现在两年的收入,不能不另人心动。而且,更重要的是,他们对我的赏识与信任,这样的工资水平自然是对我能力的肯定,也是希望通过薪金吸引我过去。
在面试的交谈中,他们对我的CMMI5实施经验以及缺陷追踪经验很感兴趣,希望我能过去跟他们一起规范公司的测试与开发流程,这自然提供了我一个施展的机会。公司B的规模,与我现在公司的规模相差不大,工作环境也相差不大,也是一个给活你干让你自己去摸索自己成长的公司,这样的跳槽,在工作环境或平台上并没有太大的突破,变化的是我的报酬。我已经这样摸索了四年,我会想换一个平台,接触一些规范的管理、接触一些先进的技术,当然,也想得到一些规范的指导。
公司C,是国内通信行业非常出名的一个国企,是大多数女孩子向往的地方。这个公司提供给我的机会是测试主管,年薪也是比现在高50%。吸引我的,是测试主管这个机会,相对于技术,我更擅长也更喜欢带领一个团队,我喜欢沟通协调多过技术,这也是我自己想发展的方向。不过,我不太喜欢国企,不喜欢里面的形式化与口号,也不喜欢里面死板的管理,更加不喜欢里面复杂的人际关系。而且,在面试时他们问的问题不够专业,我感觉他们并没有考核出我的真实水平,就这样把一个主管的机会给了我,反而让我觉得公司不够专业。
我的大多数朋友,在选择的时候看的都是工资水平,他们建议我哪个公司给的工资高就去哪个公司,因为生活很现实,我们需要生存。也有朋友建议我去国企,因为他们觉得,在国企相对来说稳定、悠闲、福利好,对于女孩子来说,是一个很不错的选择。而我自己,在意的是在这个公司工作三年或五年或十年后,我会是怎样的一个人。
如果在一个公司工作三年后,我还是跟现在差不多,那么三年后我肯定是失去了竞争力。现在的工资肯定是选择的一个重要因素,但我觉得目光不能停留在眼前,而是这个选择是否会让自己开心、是否能让自己增值、是否有利于长远的发展。早在一年前,我的朋友就建议我离开,因为我的工资与我的付出不合理,但我还是坚持留下,一方面是我在现在的团队中干得很开心,这是钱所不能买到的,另一方面是我觉得在现在的公司还有很多机会可以让我增值,也有很多机会让我学习让我成长。如果当初选择了离开,我就不可能有机会主导一个全新架构的系统开发,也不可能有机会参与CMMI L5的流程改进与评估,我也就可能不会成长成今天可以主动选择机会的人了。所以,我觉得,人的眼光不能只看眼前,而要放得更远一些。
公司A是我最想去的公司,因为直觉告诉我在里面我会有一个质的改变,在那里会学习到很多先进的管理方法与测试 ,但我也会有些担心机遇不多,我想往管理方面发展的机会不多。如果没有公司B翻倍的年薪以及他们对我的赏识与信任,我会毫不犹豫地选择公司A,但翻倍的薪金是一个诱惑,他们想让我主导公司的流程改进也是一个诱惑。
相对于公司A来说,B公司会有更多的机会让我往管理层发展。不过,公司B与我现在的工作平台差不多,自己在技术上摸索了这么长时间,一点一滴的积累,自然也让我成长了,但这样的一个积累会有一个局限性。在我的身边,我的测试水平是不错的,但是,如果跟国际水平相比,我还有很多不足的地方,还有很多需要学习的地方。而且,公司也B不会有那么完善的测试环境,也不会舍得像公司A那样投入那么多的资源在软件测试中,测试肯定不会像公司A那样专业、规范。
而我自己,很想与别人分享自己所积累的东西,同时也希望能够以学习的姿态成长,这是A公司能给我而B公司所不能给的。如果真的用心去学、用心去做,我相信在公司A会有一个质的提高,也会在公司A会有一个更加好的发展,因为在外企,只要有能力只要肯努力,机会是公平的。我也相信,自己的能力不差,只要用心做好每一件事情,机会自然就来了。退一步说,即使没有往管理层发展的机会,从里面出来,也会很不一样。那50%的年薪,就当是继续深造的学费。毕竟,机会的选择,不能只看钱,也不能只看眼前。
-
网站链接自动化测试原理及工具介绍(转)
2009-04-13 12:13:14
摘要:在软件测试中,链接测试是网站所特有的测试。链接测试测试包括测试所有链接是否都是链接到正确的目标、链接的目标是否存在和是否存在孤立的页面。链接测试需要多整个网站的所有链接进行,而一般的网站内的链接错乱复杂,犹如一张大蜘蛛网,稍有疏附便有测试不完全的地方,因此引入链接自动化测试能够大幅提高链接测试的效率。 关键字:网站测试 链接测试 自动化测试 测试工具
正文:
链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。
链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。
链接测试的原理
从待测网站的根目录开始搜索所有的网页文件,对所有网页文件中的超级链接、图片文件、包含文件、CSS文件、页面内部链接等所有链接进行读取,如果是网站内文件不存在、指定文件链接不存在或者是指定页面不存在,则将该链接和处于什么文件的具体位置记录下来,一直到该网站所有页面中的所有链接都测试完后才结束测试,并输出测试报告。
如果发现被测网站内有页面既没有链接到其他资源也没有被其他资源链接,则可以判定该页面为孤立页面,将该页面添加到孤立页面记录,并提示用户。
测试链接目标是否存在和是否有孤立页面都可以通过程序自动完成,但是程序却不能判断目标页面是否于用户的意是否相符合,如果链接到不正确的页面,例如将公司介绍链接到产品介绍,则程序无法进行判断,因此链接页面的正确性需要人工进行判断。
链接测试工具软件介绍
Xenu Link Sleuth
该工具可以说是本人所见过的最小但功能最强大的检查网站死链接的软件了。你可以打开一个本地网页文件来检查它的链接,也可以输入任何网址来检查。它可以分别列出网站的活链接以及死链接,连转向链接它都分析得一清二楚;它支持多线程,可以把检查结果存储成文本文件或网页文件。
HTML Link Validator
该工具软件可以检查Web中的链接情况,看看是否有无法连接内容。本程序可以在很短时间内检查数千个文件,只需用鼠标双击放有网页的文件夹就能开始检查。可以标记错误链接的文件﹐很方便的显示链接﹐使用者也可以编辑这些资料。
Web Link Validat
Web Link Validat用输入网址的方式来测试网络连结是否正常,你可以给出任一个任意存在的网络连接,像软件文件、HTML文件、图形文件等等都可以测试。
如何利用HTML Link Validator对网站进行链接测试
该软件可以对单个HTML文件、文件夹内的所有HTML文件、远程网站等内容进行链接测试,测试结果可以保存为文件文件、网页文件或者导入到Access数据库中。
安装Web Link Validat后,打开Web Link Validat,进入到Web Link Validat的主界面,如下图所示。Web Link Validat的界面很简单,功能也很单一,操作很容易上手。
+”号图标,因为在Web Link Validat双击有特殊的用途。默认情况下,双击HTML文件则对该文件中的所有链接进行链接测试,双击目录则对该目录和所有
子目录中的HTML文件进行链接测试。测试结果会再右下角的窗口进行显示,如下图所示。
测试完毕后,可以通过REPORT菜单中的HTML REPORT来进行测试结果的查看,可以查看的方式包括:
1、 错误链接报告
2、 完整的报告
3、 测试文件清单
4、 用户自定义的HTML报告,可以允许用户定义显示条件。
5、 重定向链接列表
除了测试本地网站,还可以测试远程网站,选择测试方式为“Validate html files on web server”,然后在“Starting address:”中输入被测试网站页面的URL,会车后即开始对指定页面开始测试,如下图所示。
在被测试结果链接列表中,双击任意链接则直接打开该链接所在文件,并定位在该链接处,可以对链接直接进行修改,该功能能够节约寻找错误链接的时间,加快修改速度。
总结
链接测试因为技术含量不高,很多程序员都不愿意做链接测试,但是链接的正确却直接影响用户对该网站的印象,一个网站如果出现链接上的错误,不管其页面做的如何漂亮,用户对其信任度都会大打折扣。因此,我们首先必须重视链接测试,虽然其需要耗费很多的时间,但是可以提高网站的整体质量,另外引入链接自动化测试工具可以加快链接测试进行的速度。 -
Web的系统测试方法 二(转)
2009-04-13 12:11:47
4. 客户端兼容性测试
4.1.平台测试
市场上有很多不同的操作系统类型,最常见的有 Windows 、 Unix 、 Macintosh 、 Linux 等。 Web 应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。
因此,在 Web 系统发布之前,需要在各种操作系统下对 Web 系统进行兼容性测试。
4.2.浏览器测试
浏览器是 Web 客户端最核心的构件,来自不同厂商的浏览器对 Java ,、 Javascrīpt 、 ActiveX 、 plug-ins 或不同的 HTML 规格有不同的支持。例如, ActiveX 是 Microsoft 的产品,是为 Internet Explorer 而设计的, Javascrīpt 是 Netscape 的产品, Java 是 Sun 的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和 Java 的设置也不一样。
测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。
5. 安全性测试
Web 应用系统的安全性测试区域主要有:
( 1 )现在的 Web 应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。
( 2 ) Web 应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如 15 分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
( 3 )为了保证 Web 应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。
( 4 )当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
( 5 )服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
6. 总结
本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于 Web 的系统测试方法。
基于 Web 的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于 Web 的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。
-
(转)Web测试方法(1)
2009-04-13 12:10:45
在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。
本文将 web 测试分为 6 个部分:
1. 功能测试
2. 性能测试(包括负载/压力测试)
3. 用户界面测试
4. 兼容性测试
5. 安全测试
6. 接口测试
本文的目的是覆盖 web 测试的各个方面,未就某一主题进行深入说明。
1 功能测试
1.1 链接测试
链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。
链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。
采取措施:采用自动检测网站链接的软件来进行。
推荐软件:
Xenu Link Sleuth 免费 绿色免安装软件
HTML Link Validator 共享(30天试用)
1.2 表单测试
当用户通过表单提交信息的时候,都希望表单能正常工作。
如果使用表单来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使用表单收集配送信息,应确保程序能够正确处理这些数据,最后能让顾客能让客户收到包裹。要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。
当用户使用表单进行用户注册、登陆、信息提交等操作时,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。
1.3 数据校验
如果系根据业务规则需要对用户输入进行校验,需要保证这些校验功能正常工作。例如,省份的字段可以用一个有效列表进行校验。在这种情况下,需要验证列表完整而且程序正确调用了该列表(例如在列表中添加一个测试值,确定系统能够接受这个测试值)。
在测试表单时,该项测试和表单测试可能会有一些重复。
1.2和1.3的采取措施:第一个完整的版本采用手动检查,同时形成WinRunner(QTP)脚本;回归测试以及升级版本主要靠WinRunner(QTP)自动回放测试。
1.4 cookies测试
Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。如果在 cookies 中保存了注册信息,请确认该 cookie能够正常工作而且已对这些信息已经加密。如果使用 cookie 来统计次数,需要验证次数累计正确。采取措施:
1 采用黑盒测试:采用上面提到的方法进行测试
2 采用查看cookies的软件进行(初步的想法)
可以选择采用的软件
IECookiesView v1.50
Cookies Manager v1.1
1.5 数据库测试 在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。 在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。 采取措施:暂时没有更好的测试方法 考虑结合到1.2和1.3的测试中 1.6 应用程序特定的功能需求 最重要的是,测试人员需要对应用程序特定的功能需求进行验证。尝试用户可能进行的所有操作:下订单、更改订单、取消订单、核对订单状态、在货物发送之前更改送货信息、在线支付等等。这是用户之所以使用网站的原因,一定要确认网站能像广告宣传的那样神奇。 采取措施:深刻理解需求说明文档 1.7 设计语言测试 Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、Javascrīpt、 ActiveX、VBscrīpt或Perl等也要进行验证。 暂时没有方法测试,可以多参考一点讨论组内的更新信息 -
WEB测试资料(转)
2009-04-13 11:35:16
1页面部分
(1)页面清单是否完整(是否已经将所需要的页面全部都列出来了)
(2)页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是否显示)
(3)页面在窗口中的显示是否正确、美观(在调整浏览器窗口大小时,屏幕刷新是否正确)
(4)页面特殊效果(如特殊字体效果、动画效果)是否显示
(5)页面特殊效果显示是否正确
2页面元素部分
(1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮、单选框、复选框、列表框、超连接、输入框等等)
(2)元素是否显示(元素是否存在)
(3)页面元素是否显示正确(主要针对文字、图形、签章)
(4)页面元素的外形、摆放位置(如按钮、列表框、核选框、输入框、超连接等)
(5)页面元素基本功能是否实现(如文字特效、动画特效、按钮、超连接)
(6)页面元素的容错性列表(如输入框、时间列表或日历)
(7)页面元素的容错性是否存在
(8)页面元素的容错性是否正确
3功能部分
(1)数据初始化是否执行
(2)数据初始化是否正确
(3)数据处理功能是否执行
(4)数据处理功能是否正确
(5)数据保存是否执行
(6)数据保存是否正确
(7)是否对其他功能有影响
(8)如果影响其他功能,系统能否作出正确的反应
(9)其他错误
(10)对模块的具体功能进行测试时可以列出功能模块的所有功能,进行排列组合,测试所有情况
如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试
单项功能测试(增加、修改、查询、删除)
增加——>增加——>增加(连续增加测试)
增加——>删除
增加——>删除——>增加(新增加的内容与删除内容一致)
增加——>修改——>删除
修改——>修改——>修改(连续修改测试)
修改——>增加(新增加的内容与修改前内容一致)
修改——>删除
修改——>删除——>增加(新增加的内容与删除内容一致)
删除——>删除——>删除(连续删除测试)
(11)查询功能分为两种情况,验证操作结果。
一、打开页面时自动显示结果,则不特别强调;
二、需要手工操作进行查询,则每次在其他功能完成后进行。
4提示信息
(1)成功、失败提示
(2)操作结果提示
(3)确认提示
(4)危险操作、重要操作提示
(5)返回页面提示后显示的页面
5容错性
注意以下几种情况
(1)为空、非空
(2)唯一性
(3)字长、格式
(4)数字、邮政编码、金额、电话、电子邮件、ID号、密码
(5)日期、时间
(6)特殊字符(对数据库)英文单、双引号,&符号
6权限部分
功能权限:指定用户可以使用哪些功能,不能使用哪些功能
数据权限:指定用户可以处理哪些数据,不可以处理哪些数据。可以合并到功能测试
操作权限:在逻辑关系上,操作前后顺序、数据处理情况。可以合并到功能测试
权限变化:可以合并到功能测试
(1)功能权限是否存在
(2)功能权限是否正确
(3)数据权限是否存在
(4)数据权限是否正确
(5)操作权限是否存在
(6)操作权限是否正确
(7)引起权限变化的功能列表
(8)功能权限变化还是数据权限变化,或两者兼有
(9)权限变化是否正确
7键盘操作
(1)Tab键的使用
(2)上下方向键的使用
(3)Enter键的使用
(4)系统设定快捷键的使用(如果设置有快捷键)
8测试中还应注意的其他事项
(6)完整性:是否是一个整体,没有功能缺损
(7)易用性:使用是否方便
(8)一致性:类似的问题用类似的方法处理
(9)提示信息:提示信息是否完整、正确、详细
(10)帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细
(11)兼容性:包括操作系统兼容和应用软件兼容,可能还包括硬件兼容
(12)可扩展性:是否由升级的余地,是否保留了接口
(13)稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护
(14)运行速度:运行的快慢,带宽占用情况
有几点:
1.功能点测试:是否满足需求所要求的功能
2.字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度,会不会出错.
3.字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
4.标点符号检查:输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
5.中文字符处理:在可以输入中文的系统输入中文,看会否出现乱码或出错.
6.信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
7.界面测试:界面的正确性、一致性、友好性、易用性。
用户界面测试是从最终的使用者用户的角度来看软件,软件难以理解,不易使用就是软件缺陷。可以从以下几个方面重点来检查用户界面:
1.易用性检查:确保软件易于理解,方便使用。
2.一致性检查:
a.注意系统页面的风格是否一致,如字的大小、颜色、字体要相同。
b.提示信息的表达方式是否一致。
c.按钮排列顺序是否一致。
d.back, cancel等按钮跳转页面处理是否一致。
e.各字段的名称,位置、长度、类型是否和设计文档要求一致,如Employee No和LoginName不一致。
3.正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。
4.友好性检查:
a.提示信息是否友好.
b.系统应该在用户执行错误的操作之前提出警告,提示信息.
c.页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。
5.合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。
6.检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。
7.页面最大化检查:测试最大化/最小化/还原时页面是否做了对应的处理。 -
软件测试工具速查手册
2008-10-15 17:33:57
1、 从测试功能上分
(1) 单元测试
针对不同语言,如JUNIT
(2) 功级测试
E—Test:功能强大,由于不是采用POST URL的方式回放脚本,所以可以支持多内码的测试数据(当然要程序支持),基本上可以应付大部分的WEB SITE。
MI公司的WINRUNNER
COMPUWARE的QARUN
RATIONAL的SQA ROBOT
(3) 压力测试
MI公司的WINLOAD
COMPUWARE的QALOAD
RATIONAL的SQA LOAD
(4) 负载测试
LOADRUNNER
RATIONAL VISUAL QUANTIFY
(5) WEB测试工具
MI公司的ASTRA系列
RSW公司的E—TEST SUITE等
(6) WEB系统测试工具
WORKBENCH
WEB APPLICATION STRESS TOOL(WAS)
(7) 数据库测试工具
TESTBYTES
(8) 回归测试工具
RATIONAL TEAM TEST
WINRUNNER
(9) 嵌入式测试工具
ATTOLTESTWARE。是ATTOLTESTWARE公司的自动生成测试代码的软件测试工具,特别适用于嵌入式实时应用软件单元和通信系统测试。
CODETEST是AppliedMicrosystemsCorp.公司的产品,是广泛应用的嵌入式软件在线测试工具。
GammaRay。GammaRay系列产品主要包括软件逻辑分析仪GammaProfiler、可靠性评测工具GammaRET等。
LogiScope是TeleLogic公司的工具套件,用于代码分析、软件测试、覆盖测试。
LynxInsure++是LynxREAL-TIMESYSTEMS公司的产品,基于LynxOS的应用代码检测与分析测试工具。
MessageMaster是ElviorLtd.公司的产品,测试嵌入式软件系统工具,向环境提供基于消息的接口。
VectorCast是VectorSoftware.Inc公司的产品。由6个集成的部件组成,自动生成测试代码,为主机和嵌入式环境构造可执行的测试架构。
(10) 系统性能测试工具
Rational Performance
(11) 页面链接测试
Link Sleuth
(12) 测试流程管理工具
Test Plan Control
(13) 测试管理工具
TestDirector
Rational公司的Test Manager
Compuware公司的QADirector
TestExpert:是Silicon Valley Networks公司产品的测试管理工具,能管理整个测试过程,从测试计划、测试例程、测试执行到测试报告。
(14) 缺陷跟踪工具
TrackRecord等
(15) 其他测试工具包
TestVectorGenerationSystem是T—VECTechnologies公司的产品。提供自动模型分析、测试生成、测试覆盖分析和测试执行的完整工具包,具有方便的用户接口和完备的文档支持。
TestQuestPro是TestQuest公司的非插入码式的自动操纵测试工具,提供一种高效的自动检测目标系统,获取其输出性能的测试方法。
TestWorks是SoftwareResearch.Inc公司的一整套软件测试工具,既可单独使用,也可捆绑销售使用。
2、 从测试的方法上分:
(1) 白盒测试工具
白盒测试工主要有:Numega、PuRe、软件纠错工具(Rational Purify)。
内存资源泄漏检查:
Numega中的BounceChecher
Rational的 Purify等
代码覆盖率检查:
Numega的TrueCoverage
Rational的PureCoverage
TeleLogic公司的LogiScope
Macabe公司的Macabe
代码性能检查:
Numega的TrueTime
Rational的Quantify等
代码静态度量分析度量检查工具:LogiScope和Macabe等
黑盒测试工具主要有:QACenter、SQATeamTest、Rational Visual Visual Test。
QACenter:QACenter帮助所有测试人员创建一个快速、可重用的测试过程。这些测试工具自动帮助管理测试过程、快速分析和调试程序,包括针对回归、强度、单元、并发、集成、移植,容量和负载建立测试用例,自动执行测试和产生文档结果。QACenter主要包括以下几个模块:
QARun:应用的功能测试工具。
QALoad:强负载下应用的性能测试工具。
QADirector:测试的组织设计和创建以及管理工具。
TrackRecord:集成的缺陷跟踪管理工具。
EcoTools:高层次的性能监测工具。
3、部分具体测试工具的介绍
(1)、性能优化工具EcoScope
EcoScope 是一套定位于应用(即服务提供者本身)及其所依赖的所有网络计算资源的解决方案。EcoScope可以提供应用视图,并标出应用是如何与基础架构相关联的。这种视图是其他网络管理工具所不能提供的。EcoScope能解决在大型企业复杂环境下分析与测量应用性能的难题。通过提供应用的性能级别及其支撑架构的信息,EcoScope能帮助IT部门就如何提高应用性能提出多方面的决策方案。
EcoScope的应用主要表现在以下几个方面:
确保成功部署新应用
维护性能的服务水平
加速问题检测与纠正的高级功能
定制视图有助于高效地分析数据
(2)、数据库测试数据自动生成工具——TestBytes
在数据库开发的过程中,为了测试应用程序对数据库的访问,应当在数据库中生成测试用例数据,我们可能会发现当数据库中只有少量数据时,程序可能没有问题,但是当真正投入到运用中产生了大量数据时就出现问题了,这往往是因为程序的编写没有达到,所以一定及早地通过在数据库中生成大量数据来帮助开发人员完善这部分功能和性能。
TestBytes是一个用于自动生成测试数据的强大易用的工具,通过简单的点击式操作,就可以确定需要生成的数据类型(包括特殊字符的定制),并通过与数据库的连接来自动生成数百万行正确的测试数据,可以极大地提高数据库开发人员、QA测试人员、数据仓库开发人员、应用开发人员的工作效率。
(3)、PC—LINT
PC—LINT 主要进行更严格的语法检查功能,还完成相当程度的语义检查功能。可以这样认为:PC—LINT是一个更加智能、更加严格的编译器。PC—LINT在实现语法和某些语义规则检查时,是通过参数配置完成的,它的选项就有数百个之多,因此,在使用PC—LINT过程中,了解选项的含义也很重要。
(4)、TCL
TCL是Tool Command Language的缩写,它是一种很流行的脚本解释器,尤其在测试领域,它的最大特点是可移植性好,接口简单,方便,可以很容易地嵌入到软件中,作为自己的解释器使用。
TCL提供两种接口:编程接口和用户接口。编程接口是通过LIB或DLL形式提供的,提供了一些函数(命令)供调用,包括:分配一个解释器指针(对象);初始化解释器(指针);注册扩展函数等。用户接口很简单,即编写的脚本,脚本里面包含对扩展命令的调用。
(5)VB测试工具:VB Watch
(6)Java 程序的测试工具
1)Bean—Test
2)EJBQuickTest
3)JStyle
4)JTest
5)HttpUnit
6)JUnit
(7)、覆盖测试
C—Cover
C—Cover是一个测试工具软件,用来找出没有被测到的代码,并报告测试的覆盖率。C—Cover
只支持C/C++的代码覆盖率分析,其它语言不支持。但不受OS的限制
单元测试方面:(对开发人员比较有用) J-Unit工具。
功能测试方面:E-test是个不错的选择,功能很强大,由于不是采用Post URL的方式回放脚本,所以可以支持多内码的测试数据(当然要程序支持)。基本上可以应付大部分的Web Site。
如果只是利用脚本回放代替手工劳动,或者做对页面响应数的性能测试,Microsoft Web Application Stress Tool是个不错的选择。
另外,在性能测试方面,PureLoad也是一个不错的工具,完全用Java写成,可以测试各种C/S程序,如SMTP Server等。这两个工具都是使用Post URL的方法测试Web Application的。对大量使用Javascrīpt的页面不太适合。当然,如果程序在Unix,linux下面运行的话,可以直接编写Shell 脚本程序,更加方便。
另外,还有很多专门的工具,比如说Linkbot是专门作页面链接测试的。
另外,测试流程管理工具也有不少,个人用过也一直在用的是Test Plan Control,短小精悍,不错。 至于WinRunner和LoadRunner之类,因为没有License,所以都没怎么用过,惭愧。不过我看过一篇英国人评价英国测试市场上最流行的五个软件的文章。WinRunner得分最高。
测试工具从测试的方法上可以分为两种:白盒测试和黑盒测试 白盒测试工具主要有:
内存资源泄漏检查:Numega中的bouncechecker,Rational的Purify等
代码覆盖率检查:Numega中的truecoverage,Rational的Purecoverage,Telelogic公司的 logiscope, Macabe公司的Macabe等 代码性能检查:Numega中的truetime,Rational的Quantify等
代码静态度量分析质量检查工具:logiscope和Macabe等
黑盒测试工具主要有: 客户端功能测试:MI公司的winrunner,compuware的qarun,Rational的SQA robot等等
服务器端压力性能测试: MI公司的winload,compuware的qaload,Rational的SQA load等等
Web测试工具:MI公司的Astra系列,rsw公司的e-test suite等等
测试管理工具:rational的test manager,compuware的qadirector等等,此外还有缺陷跟踪工具 trackrecord等。
数据库测试工具:TestBytes
黑盒测试工具:QACenter、SQATeamTest,Rational Viaual Test。
回归测试工具:Rational TeamTest,WinRunner(MI公司)
WEB系统测试工具:TEST,Workberch,Web Appication Stress Tool(WAS)
白盒测试工具:Numega 、PuRe、软件纠错工具(Rational Purity)。
嵌入式测试工具:Logiscope(静态测试工具)、CodeTest。
系统负荷测试工具:RationalPerformance
涵盖测试工具范围评估工具
软件性能测试工具:LoadRunner(MI产品)、Rational Visual Qantify
测试管理工具:TestDirector(MI产品支持整个生命周期中测试流程管理)
测试基于Web的应用程序
测试web应用程序和测试桌面系统用很多共同点:例如你需要和执行所有标准测试类型一样测试常见的功能点,配置及兼容性。但是由于与应用程序交互的所有分布式系统组件的复杂性成倍的增加的原因,导致web应用程序测试更加的困难。当我们在web环境中看到一个错误时,通常很难指出错误发生的地方,并且由于我们看到的行为或我们接受到的错误信息可能是发生在Web系统中不同部分的错误的结果。错误可能是很难重现的。那么我们如何在web系统中分析错误呢,并且为了重现那些错误又应该做哪些考虑呢?
当我们对潜在的技术有一个了解时,我们可以更好的最大化测试效率-编写更多可重现的bug报告并且在较少的时间里发现更多的错误。说比做更加容易-特别是在web环境里。Web环境在错误倾向技术变量是密度高的。以下是测试Web应用程序的需要考虑的5个基本事项:
1. 当我们在客户端看到一个错误时,我们所看到的是错误的症状,而不是错误本身。
2. 错误可能是与环境相关的,并且可能不出现在不同的环境里
3. 错误可能是存在代码或是配置中的
4. 错误可能驻留在几个层中的任一个层中
5. 检查操作系统中的两个类别-静态vs动态-需要不同的方法。
现在让我们来详细的看看这5个需要考虑的事项。
1. 什么是我们真正看到的东西?是一个错误还是一个症状?
如果不诊断环境,我们不能够确定是什么导致了一个症状出现。如果客户端和服务器端的一个环境特定的变量被移除或被改变的话,我们或许将不能够重现问题。
例如,我正在测试一个Web的缺陷跟踪应用程序,并且遍历创建一个bug报告的流程。当我选择“新建”按钮时,我接收到一个错误信息:Microsoft OLE DB Provider for ODBC Drivers error '80040e14'。在花了一些时间调查我的浏览器环境后,我发现Javascrīpt在浏览器的参数设置对话框中被禁止了。启用Javascrīpt 就消除了这个错误。(这个问题是否是个bug不在我们今天讨论的范围里)这里是要说如果我在bug报告中增加关于Javascrīpt的信息,我可以节约我们团队花费在分析这个问题的时间。此外,“禁用Javascrīpt”从此应该要添加到我的测试包中;它将被应用到应用程序的各个地方,以使所有潜在的相关问题不会出现。
2. 这个错误是环境依赖的吗?
为了重现一个环境相关的错误,我们不得不完全地复制活动的准确顺序和应用程序操作所在环境的条件(操作系统,浏览器版本,插件的组件,数据库服务器,web服务器,第三方组件,服务器/客户端资源,网络带宽和通信量等等)。例如,当你试图使用一个28.8 kbps的拨号连接登录到你的Web应用程序中,你会碰到一个由于在认证过程中因超时而导致的登录失败-但是同样的登录步骤如果你用一个1.54 mbps 的T-1连接将会成功的通过认证。在这个案例中,你有一个环境依赖的错误,这个依赖条件是在带宽中。
环境无依赖的错误,用另一种话说,相对来说是容易重现的-它没有必要复制操作环境。环境无关的错误,需要复制所有都能够揭示错误的步骤。例如,如果公司的名称在所有产品在线页面上错误地拼写为WebTessting.Con, 你就总能看到这个错误-它是和硬件,软件和你操作环境中资源变量无关的。更为常见的是,我们将环境无关的错误称为功能特定的错误。
3. 是一个代码错误或是一个配置问题
错误(或是假定错误的症状)可能会在代码修复中或系统重新配置(客户,服务器或网络)解决(假设错误是真实的)。不要太快的下结果它是一个bug。
Microsoft OLE DB Provider for ODBC Drivers error '80004005' 对比真正的软件错误,这是一个说明识别可能的配置问题挑战。它显示了由于Web应用程序“登录失败”而引起的一个错误信息。只是简单的查看这个错误信息,是不可能判断这个错误是由于软件bug引起的还是服务器端配置问题,或是兼容性问题,浏览器配置问题或以上所有的。
在进一步分析这个失败以后,我发现几个可能的产生这个错误信息的条件:
IIS (Web server) virtual directory has not been set up properly当虚拟目录没有被正确的配置时,将找不到请求的文件,脚本或数据。这是一个典型的服务器配置的问题。然而,如果安装程序未能根据说明书一样配置web服务器,那么这是一个软件的错误。如果一个系统管理员未能根据说明书正确地配置web服务器,这个就变成了用户错误。
Application directory has not been configured properly to execute scrīpts一个典型的应用服务器目录包含了需要执行的脚本,它们会被代表客户端的Web服务器调用。为了安全的原因,一个Web服务器可以被配置以允许或不允许脚本在一些目录里执行。如果你的应用服务器目录被设计来包含将要被执行的脚本-但是Web服务器被配置为在那个目录里禁用脚本执行-应用程序将不能工作。这是软件错误还是一个配置问题呢?
Default Web page has not been set up properly这个问题和上面的问题相似
SQL Server is not running为了执行查询,存储过程和访问数据,应用服务器需要连接后台在SQL服务器上的数据库。如果SQL服务器进程没有运行,显然应用程序将不能工作。
DLL/COM objects are missing or were unsuccessfully registered可能安装程序在安装过程中未能复制应用服务器要使用的所有DLL。如果遗漏了其中一个应用程序所需的DLL,应用程序将不可以工作。
也可能安装程序正确的复制了所有需要的模块,但是失败的注册一个或多个DLL。例如OLE-Based的对象,例如COM或DCOM,它们的class ID(CLSID) 在它们可以被使用之前必须注册到注册表库中。如果一个应用程序试图访问一个没有被成功注册的COM对象,应用程序将不能工作。
这个问题通常由安装过程中的错误引起来。另一方面,如果组件必须被手工注册地话,就变成一个配置问题。
Browser-side Javascrīpt setting has been disabled这是一个浏览器端的配置问题,由于应用程序要求浏览器启用Javascrīpt。这是一个软件错误,配置问题或是一个技术支持的问题呢?
4.哪个层真正的引起了那个问题?
在Web 系统中的错误通常是很难一直重现因为许多由C/S架构的分布式特性而引入的许多变量。(例如,服务器,客户端和网络组件)。在一个web环境中至少由3个常见的怀疑部分:客户端,服务器和网络。客户端和服务器都会携带诶之和兼容性问题,那些和PC环境相似,所有的组件都在一个盒子里。在C/S系统里,问题成倍的增长,然而,由于可能有很多的客户端和服务器链接在一个网络中。典型的C/S配置和兼容性问题涉及到硬件和操作系统的混合(例如,基于UNIX的 vs基于windows的盒子)以及在服务器端的软件组合(Web服务器包,数据库服务器包,防火墙,COM对象,CORBA对象等等)。问题也可能涉及客户端的软件组合(TCP/IP堆栈,拨号软件,帮助组件,浏览器带宽和浏览器版本)。另外,浏览器设置,例如一些常见的设置,连接设置,安全设置(包括 ActiveX空间,插件,Java,脚本,下载,用户认证等等),内容设置,程序设置,和其他高级设置(包括浏览器选项,多媒体选项,JVM选项,打印选项和HTTP选项)引入很多可以被测试并分析的变量。
网络提供了另一套变量。网络用几个方式影响着Web应用程序,包括由于带宽和响应时间引起的分时相关的问题(竞态条件,性能,超时等等),由于硬件设备例如网关和路由器导致的潜在的配置和兼容性问题,以及和安全实现相关的端问题。
5.静态和动态操作环境是不同的
一般来说,有两类操作环境-每个都有自己独一无二的测试牵连:
静态环境(例如配置和兼容性错误)不兼容性问题可能存在其中,不管可变的条件,例如处理速度和可用的内存
动态环境(例如资源及时间相关的错误)其他方面可兼容的组件可能出现错误在其中,由于内存相关的错误和反应时间条件(我们将在这一节中更详尽的探讨动态环境)
静态操作环境:配置和兼容性变量
配置和兼容性问题可能会出现在web系统中的任何一个点上:客户端,服务器端,或网络中。配置问题包括不同的服务器软件和硬件设置,浏览器设置,网络连接,和TCP/IP堆栈设置。浏览器设置/ 前面提到的Javascrīpt例子说明了配置问题的一种类型。图1和图2展示的是另一个配置问题的类型,两种可能的物理服务器配置:one-box 和two-box配置。
我们用来示范的所测试应用程序有一些制图的功能,可以让用户生成度量报告,例如条形图和直线图。当用户请求一个度量报告时,应用程序服务器执行的伪码如下:
1. 连接服务器并运行查询,
2. 编写查询结果到一个名为c:\temp\chart.val的文件中,
3. 执行Chart的JavaApplet。从c:\temp\chart.val文件中读取数据以生成一个图表
4. 发送JavaApplet到浏览器
在测试这个应用程序过程中,我发现图表功能可以在以上的配置上运行,但是却不能在其他配置上工作。在我更进一步的研究之后,我认识到问题可能出现在two- box配置中。在检查代码之后,我认识到问题在步骤2和3中。在步骤2中,查询结果被写到数据库服务器本地驱动器中c:\temp\chart.val。在步骤3里,Chart JavaApplet是运行在应用服务器上而不是和数据库服务器在一个相同的盒中。当它试图在应用服务器本地驱动器中打开c:\temp\ chart.val文件时,文件并不存在。
在这个用例中,我不建议在遇到问题时就阅读代码,我把调试的工作留给开发人员。我只不过想指出识别哪个服务器配置是有问题的,并且在bug报告中含括这些信息。我也会在测试下的应用程序支持的全部的分别式配置下运行一个粗略的测试用例包。
配置问题在静态操作环境中也是很终于的。例如,在图3中我们看到在Netscape Navigator和IE浏览器的一个兼容性区别。
这个例子并不是要说IE比Netscape Navigator更好,它只不过意味着在浏览器之间有不兼容性问题-并且代码应该假设相对路径在所有的浏览器中都可以工作。更重要的是,它建议当你在一个环境中发现一个错误时,如果它是一个环境相关的错误的话,同样的错误可能不会出现在不同的环境中。
动态的操作环境:事情不会保持一样
当特定环境的属性值不是每次都在测试过程中保持常量时,它会引起操作环境变为动态。属性可以从资源特定(可用的RAM,磁盘空间等)转变为时间特定的(网络反应时间,用户要提交的交易顺序等)。
当一个测试用例取决于步骤集和操作环境的准确复制,然而(由于它的动态本质)操作环境不可能被复制,错误变得不可重现或很难重现。
顺便说一下,这也是内存相关错误通常较难重现的原因。当一个内存覆盖的错误出现在代码中时,例如,它常常会引起一个内存覆盖的问题。然而,从一个黑盒测试的角度看,我们永远没有机会看到这个错误的症状直到执行或读取特定的代码或数据溢出字节。在这个例子中,步骤集代表了黑盒测试的准确集合。内存覆盖错误代表了在代码中的真实的错误。被执行或读取的被覆盖的字节的条件代表了动态的操作环境或需要揭露(重现)错误的条件。
这是一个动态环境相关错误的Web应用程序例子,我们在其中将调查一个时间相关错误。功能说明书要求:
• 在系统中的项目名称必须是唯一的
• 为了可能的复制需要在客户端使用Javascrīpt来执行错误识别和处理
• 用户将可以通过请求项目设置页面增加或删除项目名称
• 当一个用户创建一个新的项目名称时,浏览器端的Javascrīpt检查输入的名称和内嵌在HTML页面中选择列表(如图4)。
看看图5中的时间相关的错误。在项目设置页面之前和之后的屏幕截图中说明了应用程序失败检测重名的“Doomed”。图4解释了这个时间相关的错误,它包括了两个用户增加新的项目名称到同一个数据库中。
如表1中所示,用户A和B同时创建新的项目,但是并不知道其他人的动作。在步骤3中,用户A增加了一个名为Another的项目。由于这个项目名称已经存在,他浏览器的Javascrīpt会显示一个提示他输入不同项目名称的信息。
用户B增加了一个项目名称为Doomed。她浏览器的Javascrīpt不会检测Doomed为一个已经存在的项目名并且添加它到数据库中并返回列表。更新过的项目名称列表被发送到用户B。
用户A随后添加相同名称Doomed到项目列表中。他浏览器的Javascrīpt没有在HTML列表中检测,因此Doomed会再次被添加到数据库中-同样到了返回的列表中。更新的项目名称列表被发送给用户A,并且包括两个Doomed的条目。
这个结果未能满足产品的说明书。除非这种情况出现在一个设计良好的测试用例,偶然发现这个错误并且试图重现它不是一个简单的工作。在这个例子中,实际的错误是应用程序在检查服务器端重名(除了客户端检查以外)的失误。这些步骤包括用户A的活动。通过用户B的活动创建了动态操作环境-这些活动对于用户A是隐藏的或不知道的。
总结
为了有效的在Web环境中分析并重现错误,你需要对操作环境有个掌握。你也需要理解环境特定的变量可能会影响你复制错误的能力。在应用程序有着这份文章中的一些技能,我希望你的Web测试经验将会更少的被挫败和更加开心。
记住没有任何东西将替代你的测试技能-你编写出好的测试用例,问相关what-if的问题,保留仔细的记录,并且有系统的研究难以重现的错误的能力。就是这些技巧不仅在寻找错误中给你提供帮助,而且也会帮助你发现那些和他们相关的隐藏错误。
标题搜索
我的存档
数据统计
- 访问量: 10892
- 日志数: 8
- 建立时间: 2007-08-22
- 更新时间: 2009-08-11