软件测试工程师的成长记第三章
作者:网络转载 发布时间:[ 2013/5/7 11:17:00 ] 推荐标签:
如果要通过提高熟练程度来提升测试的执行效率,提升的空间是有限的。对于测试高手而言,进一步提高效率,考虑的方向应该是减少对测试的人工干预,让测试自动完成。在工业化的测试条件下,自动化水平的高低,在很大程度上衡量了一个测试团队的水平。测试自动化指的是通过编写程序完成执行测试用例的所有或部分步骤。自动化的优势是减少人工的干预,把团队中宝贵的资源--人释放出来;同时,由于自动化是使用程序的方式实现的,因此可以保证每次执行自动化测试程序的条件是一致的,避免了人为因素引起的不一致,影响某些缺陷的可重现性。测试自动化把许多烦琐的步骤交给程序来完成,测试的执行对人的依赖也得到减弱,从这个角度来说,自动化可以提高测试的质量。
自动化测试工具是测试工程师提高效率的利器。对于不同的测试方法,已经有一批针对性很强的自动化工具可供使用。针对基于Java的单元测试,JUnit是常用的测试框架。通过对JUnit进行扩展,还可以实现单元测试调度和自动结果收集等功能。功能测试的测试目标是端对端(End-to-End)的用例场景,在测试基于浏览器的网络应用程序时,常用的自动测试工具有IBM Rational Functional Tester(RFT)、Selenium、JMeter等。对于胖客户端的应用程序功能测试,IBM Rational Functional Tester也可以提供不错的支持。系统测试的过程需要模拟更复杂的用例场景,如不同行为的虚拟用户并发地访问用户界面,这种测试用例通常来说只能使用自动化测试工具来执行。
有一类性能测试工具使用结构化代码来模拟并发的用户行为。自动化测试工具构造测试代码的一种常用方法是录制操作步骤。当人工对界面进行操作时,录制程序可以完整地记录整个操作过程,录制完成后,测试程序员再对录制的内容进行标准化修改,修改后的测试代码能够满足标准的测试场景要求。具备这种功能的系统测试工具很多,如IBM Rational Performance Tester、Borland Silk Performer、Load Runner等。
对于要记录测试页面响应时间的性能测试用例,可以使用Firebug、IBM Page Detailer等工具。对于安装测试,系统安装的过程可以使用安装测试脚本来自动完成,测试脚本同时可以验证系统安装的每个步骤结果是否正确。类似地,构建测试也有自动化构建测试工具完成构建的流程。作为一个成熟的团队,为了适应产品的特点,在使用一款自动化测试工具前,往往还得对工具进行定制,使工具更符合特定的测试需求。在测试创新的章节,我们还会讲述关于自动化工具定制开发的内容。
然而,自动化也会给团队带来额外的负担。如果要追求全局的自动化,那么一个完善的自动化测试框架必不可少,但是搭建自动化框架本身是一个规模不小的工程。软件开发和测试方式随着技术的革新不断变化,这种变化有可能导致原有的自动化框架不再适用。另外,即使有完善的自动化测试框架,测试人员依然得完成基于自动化框架开发的测试用例,测试完成后,也还要对这些自动化执行资源进行维护。如果自动化框架实现的是部分自动化,那么执行过程中有些步骤还是需要人的参与,并不能完全脱离人工干预。可以说,没有经过深思熟虑而仓促上马的自动化执行方案,也许不但不能提高执行效率,反而会增加测试团队的负担。
脱离人工干预的程序控制在执行效率上的优越性很明显,因此在允许的条件下,一个测试团队应该有逐步实现测试自动化的目标和路线图。在初期,可以仅仅使用有针对性的自动化测试工具辅助测试,而随着自动化测试经验的积累,可以基于这些工具开发集成化的自动化测试框架。在实现提高效率目的的同时,也降低了“过度自动化”的风险。
小艾所在的测试团队,正是沿着这种方式逐步完成了手工测试到自动化测试的转变。当然,由于许多测试有着明确的需求,手工测试和人工干预不可能被自动化完全取代;而不同的测试种类,使用的自动化策略也可能完全不一样。
提高效率的方式多种多样,提高熟练程度和测试自动化是比较常见的两种方式。除了完成测试任务,提高测试的效率和质量,同样是测试工程师的一个重要任务。测试高手区别于一般测试人员的关键在于测试高手更善于运用创新,在实践中不断提高。
1.3.3 从拿来主义到创新
小艾所在的电子商务系统,从技术和功能上而言,几年来的变化非常明显。早期的版本采用标准的Java EE技术,业务逻辑是通过命令模式实现的。随后,基于服务的架构开始流行,服务的灵活性的确有利于提高系统的适应能力,于是,系统的实现开始从基于命令转变为基于服务。系统的前端的早期实现主要是基于JSP的标准界面,而随着Web 2.0的兴起,许多新的前端元素逐渐被加入到前端界面中,如Ajax,Remote Widget等技术的使用,使系统的前端可扩展性和可操作性得到很大的提升。早期的电子商务系统实现的功能比较单一,而随着社交化应用的流行,越来越多的社交元素被集成到电子商务系统中,系统的复杂性进一步提高。除了新技术的引入,电子商务系统的核心--中间件的版本同时也在不断更新,在这个过程中,计算机的硬件配置的发展也相当迅速。一个系统似乎从来没有终版本。
电子商务领域仅仅是个缩影,整个信息技术领域都是快速发展的,变化之快可用日新月异来形容。一名技术专家,如果不能紧跟技术发展的步伐,那么终的命运很可能是被技术所抛弃。新的技术常常是伴随着新的业务模式的流行而产生的,除了紧跟技术,有前瞻性的技术专家还应该洞察业务模式的发展。
新技术的出现也对测试提出了新的要求。因为实现的框架变了,测试模型必须做出相应的调整,在新的框架下完成测试需求。前台技术革新了,如果继续使用原来的技术,测试的结果可能不再准确,因此有必要引入新的前台测试技术。随着中间件、系统硬件的升级,测试的基线和指标也必须重新构建。业务在变化,技术在更新,测试技术同样需要创新。
创新不是空想,它是以对现有技术和业务的清晰理解为基础的。对于测试工程师而言,一开始往往需要学习和借鉴现有的经验,如测试的流程、使用的测试技术、分析问题的方法等。随着学习和实践的深入,在特定产品中,特定的需求会逐渐显现。因为是特定的需求,技术上很可能没有现成的解决方案,这种需求会被作为创新的目标。有了明确的目标,可以开始寻找新的解决办法,寻找的过程是一个创新的过程。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11