软件测试中的一个项目的自动化测试实践
随着社会的不断发展和信息化的不断普及,各种软件越来越多,在日常生活中也起着越来越重要的作用,再加上客观系统的复杂性,无论经验多丰富的开发人员、无论采用哪种开发模型开发出来的软件,每个阶段的技术复审也不可能毫不遗漏地查出和纠正所有的错误,因此如何才能把新的软件做得更稳定、错误更少呢?测试! 统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。
测试是软件能否通向市场的最后也是最重要的一关。传统的测试方法是手工测试,目前大部分都是采用此方法,其特点就是简单,但是它存在的问题非常多。手工测试可能引入人为的输入错误,尤其在数据量大的情况下;另外大量重复性的手工测试可能成本较高,如果考虑软件发生改动而需要重复手工测试的情况,这个成本还会更高;没有办法对组件进行隔离的测试,从而导致发现问题和解决问题的成本都太高。在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上有很大一部分重复性强的测试工作是可以独立出来自动实现的。
针对手工测试的缺点,自动化测试应运而生。相比手工测试,自动化测试的优势很多;规范测试流程,提高测试效率、测试覆盖率等。很多人对自动化测试存在误区,把其理解为找到一种自动化测试工具,把它应用到软件工程项目中,自动化测试工具只是被看作是一种录制和回放的工具。事实上自动化测试远不止这么简单,录制和回放仅是自动化测试中的最低级别。目前常把自动化测试分为5个级别,如图l所示。
现在常用的是基于数据驱动的测试,它是以数据来控制自动化测试的流程和动作的测试,其中数据是独立于测试用例脚本的,通常以文本文件形式、Excel文件形式、XML文件等形式存在。
项目上线,有时间总结一下当前的项目,对自己而言,一直是一个学习的过程。本篇总结我们的测试实践。本文分5部分,分别是:项目背景、系统架构与模块划分、我们的测试实践、自动化测试在项目中的价值与对自动化测试的进一步思考。
一、项目背景
所有对项目的介绍一定是从客户开始。
客户:我们的客户是一家全球领先的时尚内容提供商,通过遍布全球的员工,客户每天获取大量关于时装发布、产品设计、街边流行、城市热点等信息,这些信息的绝大部分以图片的形式上传到公司服务器,然后由专职编辑对这些图片进行整理和归类(打标签),最后再由设计人员根据这些信息书写分析报表。
关键内容:分类细致的海量高清图片和具有前瞻性的分析报表。
商业模式:网站,行业内用户订阅-付费。
客户面临的问题:同质化竞争、客户流失。
新系统的关键词:CMS、更精确的内容分类、更好的全文检索、更好的用户体验(更有表现力的内容展现)、更快的内容发布。
二、系统架构与模块划分
1、REST的架构风格
系统采用了Sling作为WEB框架,JCR作为了底层内容存储框架。
系统的特点:
URI唯一标识资源
通过URI能够直接映射到JCR节点,例如http://localhost:80/content/section/news.html能够映射到JCR里的/content/section/news节点
GET/POST/DELETE标准方法对资源进行操作
支持标准方法对资源的直接操作
资源的多重表述
同一资源可以存在多种表述形式,例如http://localhost:80/content/section/news.html展现网页,
http://localhost:80/content/section/news.json展现资源信息的JSON描述,
http://localhost:80/content/section/news.pdf展现网页的PDF。
服务器端的无状态
通过JS获取当前用户信息并缓存在客户端。
2、系统分层
系统分为四层:JS、Servlet、Domain Model和JCR。
因为JCR提供了一套节点模型,所以Domain Model是在节点模型上的行为增强,例如所有对图片节点的操作我们封装在Asset领域模型里。
3、程序划分
程序分为两个大的模块:Migration和Bundles。为什么叫Bundles?因为Sling使用了OSGI框架Felix。
Migration负责导入客户的遗留数据到新系统。之前客户的CMS运行已有10多年的时间,积累有大量数据。主要是各种类型的报表和图片。
Bundles实现系统功能。主要包括了定义报表模板、定义报表各种所见即所得的展现组件、实现对图片的管理、搜索(包括基于图片的可视化搜索)和其他七七八八。
三、测试实践
1、Migration的测试
自动化测试
对Migration,我们采用了TDD的方式。
输入是客户实际提供的xml文件,输出是JCR里的节点。测试环境的搭建主要是在本地建立起Jackrabbit实例。我们的工作方式是这样:每天早上领到一张migration故事卡,然后先写一个xml到jcr节点的集成测试描述出该类型报表的功能需求,接下来就是让这个测试通过。经过开始阶段的熟悉过程,我们的速度保持在一对Pair一天一种报表类型的导入。
文章来源于领测软件测试网 https://www.ltesting.net/