软件测试技术(七)自动化测试
- 第一章 软件测试概述
- 第二章 软件测试基本知识
- 第三章 黑盒测试
- 第四章 白盒测试
- 第五章 软件测试流程
- 第六章 性能测试
- 第七章 自动化测试技术
- Android自动化测试技术——Espresso的使用
- 各种测试技术的区别
自动化测试
自动化测试的定义:使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施、测试脚本的开发与执行。
自动化测试只是测试工作的一部分,是对手工测试的一种补充;
自动化测试绝不能代替手工测试;多数情况下,手工测试和自动化测试应该相结合,以最有效的方法来完成测试任务。
自动化测试的意义
通常,软件测试的工作量很大(据统计,测试会占用到40%的开发时间;一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%)。而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。
软件自动化测试是相对手工测试而存在的,主要是通过所开发的软件测试工具、脚本等来实现,具有良好的可操作性、可重复性和高效率等特点。
要理解为什么要进行自动化测试,可以从两个方面考虑:
- 手工测试的局限性
- 软件自动化测试所带来的好处
手工测试的局限性
- 通过手工测试无法做到覆盖所有代码路径。
- 简单的功能性测试用例在每一轮测试中都不能少,而且具有一定的机械性、重复性,工作量往往较大。
- 许多与时序、死锁、资源冲突、多线程等有关的代码隐形逻辑错误,通过手工测试很难捕捉到。
- 进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,很难通过于工测试来进行。
- 进行系统可靠性测试时,长时间持续测试,需要模拟系统运行10年、几十年,以验证系统能否稳定运行,这也是手工测试无法模拟的。
- 如果有大量(几千)的测试用例,需要在短时间内(1天)完成,手工测试几乎不可能做到。
自动化测试带来的好处
- 缩短软件开发测试周期,可以让产品更快投放市场。
- 测试效率高,充分利用硬件资源。
- 节省人力资源,降低测试成本。
- 增强测试的稳定性和可靠性。
- 提高软件测试的准确度和精确度,增加软件信任度。
- 软件测试工具使测试工作相对比较容易,且能产生更高质量的测试结果。
- 手工不能做的事情,自动化测试能做,如负载、性能测试。
自动化测试的前提条件
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。通常需要同时满足以下条件:
- 需求变动不频繁
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。
项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。 - 项目周期足够长
自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。 - 自动化测试脚本可重复使用
如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段了。 - 在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。比如性能测试、配置测试、大数据量输入测试等。
自动化测试的方法
软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作过程、操作行为,或者类似于编译系统那样对计算机程序进行检查。
软件测试自动化实现的原理和方法主要有:
- 直接对代码进行静态和动态分析
- 测试过程的捕获和回放
- 测试脚本技术
- 虚拟用户技术和测试管理技术。
自动化测试的不足
- 不正确的观念或不现实的期望
- 缺乏具有良好素质和有经验的测试人才
- 测试工具本身的问题影响测试的质量
- 没有进行有效、充分的培训
- 不考虑公司的实际情况、盲目引入测试工具
- 没有形成一个良好的测试工具使用环境
- 其他技术问题和组织问题
自动化测试的应用方向
自动化测试和手工测试它们各有各自的特点,其测试对象和测试范围都不一样
在系统功能逻辑测试、验收测试、适用性测试、涉及物理交互性测试时,多采用黑盒测试的手工测试方法。
单元测试、集成测试、系统负载测试、性能测试、稳定性测试、可靠性测试等比较适合采用自动化测试。
那种不稳定软件的测试、开发周期很短的软件、一次性的软件等不适合自动化测试。
典型开源的自动化测试工具
功能测试工具
工具名称 | 简介 | 网址 |
---|---|---|
Abbot Java GUI Test Framework | Java GUI测试工具 | http://abbot.sourceforge.net/ |
SharpRobo | 针对dotNet的WinForm应用进行录制/回放的测试工具 | http://gforge.public.thoughtworks.org/projects/sharprobo/ |
soapui | 通过HTTP协议对Web Service进行测试 | http://www.soapui.org/ |
httpUnit | 通过代码控制对Web应用的访问和功能测试 | http://httpUnit.sourceforge.net |
Samie | Web功能测试工具,基于Perl | http://samie.sourceforge.net/ |
Watir | Web功能测试工具,调用IE的Automation接口实现,基于Ruby | http://wtr.rubyforge.org/ |
Linux Test Project | Linux的Kernel测试工具 | http://ltp.sourceforge.net/ |
性能测试工具
工具名称 | 简介 | 网址 |
---|---|---|
OpenSTA | 使用者较多的一个WEB性能测试工具,支持HTTP/HTTPS协议 | http://opensta.org/ |
JMeter | 基于Java的性能测试工具,能支持HTTP/HTTPS、FTP、Socket等协议 | http://jakarta.apache.org/jmeter/ |
The Grinder | 测试J2EE应用的性能测试工具 | http://grinder.sourceforge.net/ |
TestMaker | 测试WEB应用的性能测试工具,能支持HTTP, HTTPS, SOAP, XML-RPC, SMTP, POP3, IMAP 协议 | http://www.pushtotest.com/ptt/ |
DBMonster | 用于产生数据库基础数据的工具 | http://dbmonster.kernelpanic.pl/ |
Database Opensource Test Suite | 测试数据库性能的套件 | http://ltp.sourceforge.net/ |
缺陷库
工具名称 | 简介 | 网址 |
---|---|---|
Bugzillar | 最负盛名的缺陷库之一,功能强大,和配置工具CVS集成度好 | http://www.mozilla.org/projects/bugzilla/ |
Mantis | 简单易用的缺陷库,完整包含一个缺陷管理工具的基本功能 | http://mantisbt.sourceforge.net/ |
Trac | 很好的缺陷和事件管理工具,能够与Subversion很好集成,保留每个缺陷的解决痕迹 | http://projects.edgewall.com/trac/ |
BugFree | 号称是微软缺陷管理系统的精简版本,中国人自己的开源工具 | http://bugfree.1zsoft.com/ |
单元测试工具
工具名称 | 简介 | 网址 |
---|---|---|
JUnit | Java的回归测试框架,通过各种扩展已经成为一个庞大的测试框架 | http://www.junit.org/index.htm |
Cactus | 测试ServerSide的单元测试工具,可针对Servlets、EJB等进行测试 | http://jakarta.apache.org/cactus/index.html |
CppUnit | C++的单元测试工具 | http://cppunit.sourceforge.net/ |
NUnit | dotNet下的单元测试工具 | http://www.nunit.org/ |
DbUnit | 用于在不同测试间维护数据库环境 | http://dbunit.sourceforge.net/ |
软件测试技术(七)自动化测试相关推荐
- 软件测试技术之【自动化测试】
自动化测试 自动化测试的定义:使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施.测试脚本的开发与执行. 自动化测试只是测试工作的一部分,是对手工测试的一种补充; 自动化测试绝 ...
- 软件测试技术工程师面试这些离职原因不能说!
为什么要离职?很多人在面试时都会碰到这样的问题,作为一名软件测试技术工程师也要面临面试也是一样,那么在回答这个问题时应该如何避免让自己陷入困境呢?哪些回答不能有呢?现在就跟随小静一起去了解一下吧. 1 ...
- 《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论...
本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第1章,第1.1节软件测试的基本理论,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...
- 《软件测试技术实战:设计、工具及管理》目录—导读
版权 软件测试技术实战:设计.工具及管理 • 著 顾 翔 组 编 51Testing软件测试网 责任编辑 张 涛 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 ...
- 软件测试技术与项目实训pdf,软件测试技术任务驱动式教程pdf
软件测试技术任务驱动式教程 内容简介 <软件测试技术任务驱动式教程>分四个篇章介绍了软件测试的基本知识.方法.工具及流程.软件测试的基本理论阐述了软件测试的概念.模型和分类,软件质量管理与 ...
- 《软件测试技术实战:设计、工具及管理》—第2章 2.2节运用决策表设计测试用例...
本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第2章,第2.2节运用决策表设计测试用例,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 【软件测试技术】初识软件、软件测试
文章目录 一.软件 (一)什么是软件 (二)软件的分类 二.软件缺陷[bug] (一)软件缺陷的定义 (二)缺陷的由来 三.软件测试 (一)软件测试的由来 (二)软件测试的定义 (三)软件测试的目的 ...
- 【软件测试技术期末复习选择题】
软件测试技术期末复习选择题 1.在软件测试阶段,测试步骤按次序可以划分为以下几步:( A ) A.单元测试.集成测试.系统测试.验收测试 B.验收测试.单元测试.系统测试.集成测试 C.单元测试.集成 ...
- 东软学院软件测试,软件测试技术与测试标准
本教材面向软件测试的实际应用,系统阐述了软件测试所涉及到的基础理论.常用技术.过程管理和质量控制:重点讲解软件测试中的白盒测试技术.黑盒测试技术以及自动化测试技术,全面剖析了软件测试从单元测试阶段.集 ...
最新文章
- 二叉树节点间的最大距离
- 【渝粤题库】陕西师范大学152108 电子政务理论与实践 作业(高起专)
- 萌宠历险记html5游戏在线玩,《神武2》天外魔境现世 萌宠历险记首发
- CentOS切换运行级别 图形模式/命令行模式
- 关于在线机器学习ftrl_proximal_lr的二三件事
- jQuery之创建节点
- 循环渐进NsDoor(三)
- vue + typescript 父子组件传值记录
- Erlang实战练习(一)
- 四轴飞行器的设计与开发过程
- Win10专业版系统Docker安装、配置和使用详细教程
- java求面积_Java计算几何图形的面积
- 惠普战66键盘win10亮度调节快捷键失灵的解决办法
- DLNA(明基的返校讲座)
- ViTAE论文阅读与官方代码讲解
- RTX2080Ti和RTX2080 Super 那个好
- 企业微信登录二维码样式修改
- mysql8对系统的要求_linux-mysql8的安装步骤详解及需要注意的坑
- bootloader的作用
- Win10系统通用串行总线(USB驱动损坏)的一种解决方法
热门文章
- 企业采用RPA机器人可以获得的10个优势
- Neurocomputing模板下载及编译
- win10系统无法正常打开便签功能的解决方法
- png格式的特点是什么?图片怎么转成png
- mysql gitd 主从搭建_Yii2 优雅的 Active Record - SegmentFault 思否
- BIM计算-属于自己的减肥小程序
- android开发百度地图定位到几内亚湾问题的解决
- 微信小程序红包(优惠劵)弹窗的实现
- 计算机c盘删除的文件怎么找回,电脑C盘里面文件误删了,不能开启电脑了,怎么办?...
- Kernel 启动流程梳理