软件测试理论基础知识(三)——测试自动化_什么是使用自动化测试的主要特征-程序员宅基地

技术标签: 软件测试  

一.测试自动化的内涵

(1)手工测试的局限性

  • 通过手工测试无法做到覆盖所有代码路径;
  • 许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很难捕捉到
  • 在系统负载、性能测试时,需要模拟大量数据、或大量并发用户等各种应用场合时,也很难通过手工测试来进行
  • 在进行系统可靠性时,需要模拟系统运行十年、几十年,以验证系统能否稳定运行,也是手工测试无法模拟的。
  • 如果有大量(几千)的测试用例,需要在短时间内完成,手工测试无法做到
  • 测试可以发现错误,并不能表明程序的正确性。
  • 代码全部Code Path测试覆盖也几乎不可能
  • 测试所有可能情况将遭遇“组合爆炸”问题

(2)测试自动化的定义

  1. 自动化测试(automated test)是相对手工测试而存在的一个概念,由手工逐个地运行测试用例的操作过程被测试工具自动执行的过程所代替。测试工具的使用是自动化测试的主要特征。
  2. 自动化测试:焦点集中在测试执行,主要是由测试工具自动地完成测试。
  3. 测试自动化:指“一切可以由计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行”
  4. 软件测试自动化的优势

(3)自动运行的速度快,是手工无法相比的;

  • 测试结果准确。例如搜索用时即便是0.33秒或0.24秒,系统都会发现问题,不会忽视任何差异;
  • 高复用性。一旦完成所用的测试脚本,可以一劳永逸运行很多遍;
  • 永不疲劳 、可靠 ;
  • 独特的能力测试周期缩短;
  • 更高质量的产品;
  • 软件过程更规范;
  • 节省人力资源和硬件资源,降低企业成本。

(4)但是测试自动化并不能完全替代手工测试和手工测试工程师;

          无法保证100%的测试覆盖率;不能弥补测试实践的不足。

二.测试自动化实现的原理

  • 代码分析: 类似于高级编译系统,在工具中定义类/对象/函数/变量等定义规则、语法规则等,在分析时对代码进行语法扫描,找出不符合编码规范的地方。  
  • 捕获和回放: 代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。
  • 直接编写脚本来操作、控制、验证对象:包括对象识别、脚本技术、对运行结果进行比较

脚本技术

  1. 线性脚本,是录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、移动、输入数据等,所有录制的测试用例都可以得到完整的回放
  2. 结构化脚本,类似于结构化程序设计,具有各种逻辑结构、函数调用功能
  3. 数据驱动脚本,将测试输入存储在独立的(数据)文件中,而不是存储在脚本中

三.测试自动化的实施

  1、测试工具的分类

  • 根据测试方法不同,分为白盒测试工具和黑盒测试工具、静态测试工具和动态测试工具等。
  • 根据工具的来源不同,分为开源测试工具(多数是免费的)和商业测试工具、自主开发的测试工具和第三方测试工具等。
  • 根据测试的对象和目的,分为单元测试工具、功能测试工具、性能测试工具、测试管理工具等
  • 静态测试工具:扫描分析:Findbugs, JTest/C++Test、规则定义
  • 动态测试工具:内存检测工具、录制/回放工具、负载测试工具、 监控工具

2、测试自动化的基本结构

3、自动化功能测试基本步骤

  • 录制测试脚本——>对象识别
  • 编辑测试脚本——>加验证点、优化脚本
  • 调试脚本
  • 执行——>验证
  • 结果分析——>确定缺陷

4、功能测试工具特性

  • 支持(多种)流行脚本语言
  • 能引用外部的脚本/编程语言函数库。
  • 支持录制和回放的功能。
  • 提供对象识别工具(Object Spy),用来查看实时对象或测试对象的属性和方法。
  • 支持多种方法来识别对象
  • 支持抽象层和对象库(Object Repository)
  • 支持数据驱动测试(Data-Driven Test)
  • 关键字驱动测试(Keyword-Driven Test)
  • 脚本编辑器支持两种视图——专家(Expert)模式和关键字模式。
  • 支持描述性编程
  • 支持各种类型的验证点,并可以自动引入检查点来验证应用的属性和功能点
  • 设置环境变量,从而使一个测试任务中所有动作共享
  • 错误现场恢复(Recovery Scenario)
  • 测试结果有多种状态
  • 提供调试环境
  • 对外提供了大量的API和对象

  5、自动化测试框架

    Harness/IDE、script Language、Agents、Tools、Scheduler、Report

  6、TA 框架提供的服务及流行的TA框架

服务:测试件的存储与管理、测试脚本开发调试(TIDE)、测试机/资源的管理、任务安排、测试执行启动与调度、系统监控、Log收集、测试结果分析、测试报告查询

流行的框架:

  • xUnit, OCUnit /GHUnit
  • SWTbot, MarathonITE
  • Eclipse TPTP(单元性能)
  • STAF + STAX
  • Selenium + Webdriver
  • Selenium + JUnit/TestNG

  7、Selenmiu框架

应用:适合Web应用的测试,可直接运行在浏览器之上,所见即所得;跨平台,支持多操作系统和多种浏览器;支持分布式应用的测试,构造一个完整的解决方案;支持两种开发脚本的模式test runner (HTML文件)和 driven(脚本语言编写);支持多种脚本语言,包括Java、C#、PHP、Perl、Python 和 Ruby等

  8、Android 及IOS TA框架

  • Android:Robotium、 MonkeyRunner、Robolectric、LessPainful、  ATAF、UIAutomator;
  • IOS:Anteater, Frank/Cucumber, KIF, TouchTest, UI Automation, Zucchini
  • IOS & Android TA 框架:Calabash,MonkeyTalk, Nativedriver, Selenium, Ranorex

  9、支持原生、混合及Web应用测试的Appium

  • 可用于实际设备或模拟器/仿真器
  • 用一个脚本测试iOS应用和Android应用
  • 移动Web应用通常需要一个独立的测试脚本
  • 与Apple/Android的UiAutomator框架进行交互
  • Appium使用Selenium WebDriver API发送测试命令
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38680347/article/details/107767352

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签