读完Google软件测试之道之后,在关于如何做自动化测试方面对本人非常有启发,以下结合自己的工作背景谈谈关于自动化测试以及关于测试工程师的一些启示
自动化测试
关于测试,在Google有个70/20/10原则:分别对应小型测试,中型测试与大型测试的比例.Google倾向于将能自动化的东西尽量自动化,当然这一切的前提是Google基于迭代开发,快速发布的需求.
再回到自己的工作.我自己所在的项目组大部份都是基于Ajax的网站,软件的开发基于前台+后台的模式:
- 前台:使用Jquery之类的JS框架去调用后台提供的服务去填充页面的内容
- 后台:使用Spring MVC编写大量的API供前台调用,一般都是以@RequestMapping标记的方法,大部份方法返回的是JSON字符串,供前台调用
目前项目组中已经进行的自动化测试包含如下内容
- 基于UI,使用Selenium web driver编写的自动化测试:目前已经将网站最重要的功能实现自动化.并且已经稳定地用于回归测试
- 后台的单元测试:一般是类级别的测试,比如DAO类和Service类的测试
所以目前这情况很明显缺少所谓的"20"的中型测试那一部分.当然我这里的"20"部分指的是Spring MVC里@Controller标识的类中带有@RequestMapping的方法,他们大部分会返回JSON,以API的形式供前端调用.和Google里指的并不一定是一个东西.在我们每一个新的或者老的项目中,都会有大概几十个这样的接口(API),如果能将这些接口进行自动化测试,无疑是有很多好处的
- 基于API的测试对UI没有依赖性,运行起来跟单元测试差不多
- 跟基于Selenium的测试比起来,这种测试运行时间相对更短
- 一般来说API不会频繁变动,维护成本会比基于UI的要低
- 如果程序有多个版本比如PC版和手机版.基于API的测试将始终是通用,与UI无关的
具体如何实施这样的测试呢?可以参照使用HttpClient进行接口测试,当然这篇文章只是描述了一个最简单的例子.主要思想就是使用HttpClient以及一些处理JSON的API比如Jackson之类的.
如果将这一部分测试完成,那么我也将我自己的70/20/10体系即:
- 开发工程师做基于类的单元测试
- 使用HttpClient+Json API测试的接口测试:将能自动化的都进行自动化
- 基于Selenium的端到端测试:这部分只做最重要/重复性的功能
测试工程师职位的几点启示
在Google软件测试之道中描述的TE的未来是测试架构师,他们会变成测试活动的管理者,我个人感觉这种水平或者境界并不是可以刻意追求的,它是基于知识加经验的不断积累.它更多需要的是实践,所以对此我觉得没有什么可以多说的.
以下是自己关于测试工程师这个职位的一些有用的启示:
- 要想成为一个好的测试工程师,必须成为产品专家.即使你在公司的职责并非是负责端到端的测试,但是成为产品专家对自己的工作无疑是很有益处的,我个人觉得这也是责任感的一个体现
- 我赞同书上说的测试工程师他首先是工程师,对于编程知识,尤其是工作相关的编程知识,一定要加强学习.对我自己而言,以后依然要多看看开发人员写的功能代码
- 对于测试产品而言,多进行一些探索式测试是非常有益的,我觉得James Whitttaker的<探索式软件测试>应该成为每个测试人员的案头书
最后,在本书5.6的结论中作者讲到"我们熟知和喜爱的测试方式即将终结.... (省略)....软件开发的问题也已经彻底改变.继续死守已存在数十年之久的测试教条无异于刻舟求剑".我个人所在的层次让我感受不到这种终结,哈.但是测试无疑是需要不断创新的.Google正是通过他们强大的技术能力以及创新精神来面对这种挑战,书中着重介绍的工具Quality Bot(质量机器人),BITE(浏览器测试环境)以及Google测试分析系统无疑都体现了这一点.让我们"拥抱这些变化吧,并促其发生,做一个与时代同行,与时俱进的测试者"
本文出自"lijingshou"博客,请务必保留此出处http://lijingshou.iteye.com/blog/2002642
相关推荐
谷歌的软件测试之道并非一成不变,而是随着技术和市场需求的演进而不断进化。它鼓励团队成员保持好奇心和学习态度,定期参加内外部培训和研讨会,以吸收最新的测试理论和技术。这种持续的学习文化是谷歌测试团队能够...
【2019年软件测试年度总结】 在2019年的软件测试行业中,随着软件质量日益受到重视,软件测试这一领域也在不断发展和完善。然而,许多从事软件测试的专业人士仍面临不少挑战,如如何提高自身技能,如何有效地解决...
本文将分享作者作为一个软件测试工程师的学习经历,希望能为其他同行提供一些启示。 首先,要学会利用网络资源。互联网是获取知识和解决问题的强大工具。在软件测试工作中,搜索引擎如Google能帮你找到许多解决方案...
9. **测试**:为了确保收藏夹管理功能的正确性,需要进行单元测试、集成测试和系统测试。 通过分析"收藏夹管理启示例子"的源码,开发者可以学习到上述各个方面的具体实现细节,从而提升自己的编程能力,尤其是在...
PaaS则提供开发、测试、部署应用的平台,如Google Cloud Platform、微软Azure;SaaS则以订阅方式提供各种应用程序,如Salesforce、Zoom等。这三种服务模式满足了不同企业和组织的数字化需求,共同构成了云计算的广阔...
描述部分并未给出具体信息,但我们可以从标签“计算机”推断这与计算机科学和软件测试相关。 1. **起源和发展**:AI在UI自动化测试的应用可以从语音识别(如Siri和Google Voice)、体感交互(如Kinect和Leap Motion...
《深入浅出Android、Google手持设备应用程序设计》是一本针对Android应用开发的详细指南,旨在帮助读者理解Android系统的内部机制,以及如何有效地构建高质量的Google手持设备应用程序。这本书结合源码分析和实用...
项目实施过程中,学生不仅掌握了软件工程的基本流程,如项目立项、需求分析、概要设计、编码、测试和验收,而且深入理解了CMMI3软件开发流程。在实践中,他们运用Java应用开发技术和Google Android开发理念,熟练...
在这个特定的上下文中,"猫头鹰双关语启示录"可能是指一个项目或者一种创新的方式,利用猫头鹰(owl)的特性——智慧和夜视能力,来比喻在编程或软件开发中的智能辅助功能。 "Go"标签表明这个项目是使用Go语言(也...
Marc Fasel,一位拥有丰富经验的高级顾问、架构师和软件开发者,针对Node.js和Java EE进行了详尽的性能测试。他利用CouchDB作为后端存储,创建了一万份4KB的随机文本样本文件,以模拟真实工作负载。测试环境包括配备...
在构建与测试环节,Google强调云端构建的重要性。由于代码库规模巨大,传统的本地构建可能效率低下。因此,Google构建系统全部基于云端,如Blaze或Bazel,这些工具采用声明式语法,以目标(target)为最小单元,保证了...
文档中反映的是一个典型的软件开发和维护过程中的问题,即当遇到原有接口或算法失效时,开发者需要如何通过分析、测试以及利用新算法来解决问题。此过程中涉及的跨平台兼容性问题及其解决方法,对于软件开发人员来说...
软件测试是确保翻译质量的重要环节,通过对不同软件的比较分析,可以找出优化的方向和潜在的改进点。 "反编译利VAXC的设计与实现技术:兼论反编译....pdf"虽然主要关注的是反编译技术,但反编译在某些情况下也与...
### Android个人记账本计算机毕业设计论文知识点梳理 #### 一、智能手机操作系统...本文介绍的个人记账软件项目不仅展示了如何利用Android平台的优势来开发实用的应用程序,也为其他开发者提供了宝贵的经验和启示。
数据安全与隐私保护:在设计和开发过程中,注重用户数据的安全性和隐私保护,采用Room数据库框架,这是一款由Google提供的SQLite数据库管理库,能够更方便地进行数据持久化,并提供了事务处理、类型转换等高级功能,...
通过外部提供依赖关系,而不是在组件内部创建或查找依赖,依赖注入使得各个组件更加独立,易于测试、维护和扩展。依赖注入有三种主要类型:构造器注入、setter注入和字段注入。 ### Google Guice框架 Google Guice...
9. **测试**:可能包含单元测试和集成测试,了解如何编写和运行Kotlin测试代码。 通过这个项目,开发者不仅可以提升Kotlin编程技能,还能学习到Android应用开发的最佳实践,为自己的项目提供有价值的启示。