前言(仅看介绍本身的可以略过)

在离职后的一段时间里,个人总结了过去几年工作的心得,结合以往的工作经验。重新思考并重构了前些年做的一些东西(主要是测试相关),产生了设计AutoTest这样的一个测试工具/系统的想法,当然其实这样的想法一直都有自己也曾试图慢慢去完善及实现,不过工作的原因一直没有太大进展。而离职后自己并没有忙于找工作,也使得自己有时间去实现自己的想法。

另外有篇关于AutoTest的系统设计的简单介绍 【一个基于.NET平台的自动化/压力测试系统设计简述(可独立运行,提供源码)

AutoTest简介

  • AutoTest被设计为一个基于协议的支持分布式部署测试系统/工具。

AutoTest支持自定义协议的定制,除支持基础协议外,可根据公司或项目的特殊要求定制所需要的通信协议(定制过程仅需要修改AutoTest执行库文件,定制可参见【如何添加一种新Case协议】)

  • AutoTest以Runner为单个执行体,runner的行为由case文件(脚本)文件决定,工具本身可以加载任意数目runner(可以选择加载不同case文件),并且支持runner的并行执行,AutoTest同时支持分布式部署,您可以将case文件即测试任务部署到远程主机,AutoTest可以连接这些远程主机,并控制这些远程主机上runner以获得更高性能。
  • AutoTest的case文件(脚本)是一种基于xml并且完全符合xml规范的简单描述文件,该文件描述case的执行方式,如执行需要的数据,断言的处理,遇到错误的行为,及运行次数,延时等等您可能需要限定的内容。case文件包含一个执行器描述(提供您协议可能需要的基础数据,比如对于串口的串口号,波特率等,对于telnet的ip,登陆名密码等···),还有任意数量的project节点,project中包含单个case体或循环体

以上为主runner运行时界面,主runner中每个case执行时都会显示独立的执行过程,并会在界面上有明显反馈动作,执行完成后,您可以选择输出测试报告,测试报告以html的形式呈现,报告中会包含执行细节。

上图为多runner同时执行的界面,这里可以构建或虚拟许多不同的用户行为对测试对象进行测试。您可以指定任意runner加载任意的case文件,然后选择任意的runner进行执行或者一起执行

上图为AutoTest连接远程主机进行测试,要连接远程主机您需要先在远程主机上运行AutoTest的分布式部署程序(上图中的3台远程测试主机实际上运行在一台主机上)

使用分布式测试时请先在防火墙中允许您指定的服务端口(或关闭防火墙)

  • 关于Case文件

当前case文件支持简单的参数化,您可以预定义一些您需要的需要且可能随时改变的数据设置为可参数化的数据,这些数据可以在case文件中如变量一样被使用,也可以在运行中被运行结果所替代或新增。(跟其类似的还支持简单的静态数据如随机数,系统时间等等)

支持的断言包括【default/is/not/like/endwith/startwith/contain/uncontain】

断言支持多种动作,如达/未达到条件时,跳转(goto)到指定case,或者失败后进行重试,或进行语音提示报警

对于多条cace组成的业务可以选择性进行循环(循环中支持任意次的循环嵌套)

更多关于Case文件的内容见【CASE 文件 范例

AutoTest简介的更多相关文章

  1. 一个基于.NET平台的自动化/压力测试系统设计简述

    AutoTest系统设计概述 AutoTest是一个基于.NET平台实现的自动化/压力测试的系统,可独立运行于windows平台下,支持分布式部署,不需要其他配置或编译器的支持.(本质是一个基于协议的 ...

  2. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  3. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  4. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  5. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  6. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  7. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  8. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  9. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

随机推荐

  1. tomcat支持多少并发

    作者:孟男男 来源:https://zhidao.baidu.com/question/1445941399668603020.html Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与 ...

  2. sql server 导出的datetime结果 CAST(0x00009E0E0095524F AS DateTime) 如何向mysql,oracle等数据库进行转换

    1. 处理 sql server 导出的 datetime 类型的字段 在进行sql server向mysql等其他数据进行迁移数据时,会发现使用sql server导出的datetime类型的结果是 ...

  3. Servlet/JSP-01 Servlet及其生命周期

    一.起步 1.新建一个类继承Servlet接口 public class HelloServlet implements Servlet { @Override public void destroy ...

  4. (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

    昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...

  5. [转]Javascript中的自执行函数表达式

    [转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 20 ...

  6. HDU 1102 Constructing Roads

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. MySQL数据库学习笔记(三)----基本的SQL语句

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. [推荐] BC/Beyond Compare(差异比较软件)

    Beyond Compare 前一段时间,介绍过用Total Commander来完成文件夹同步的时候,一位朋友留言推荐了Beyond Compare--一个强大的超越了文件差异比较的工具.Beyon ...

  9. QTP基础学习(二)启动与设置

    1.启动QTP选择要求的Add-in 默认带有3个Add-in,之后可以安装其他的Add-in,如.net的Add-in 2.设置QTP的选项 点击Tools-Options,弹出如下框: 3.建立记 ...

  10. Java Executor并发框架(三)ThreadPoolExecutor 队列缓存策略

    前面两篇讲解了线程池中线程创建后的运行情况,其中有一系列的策略来保证线程正常运行.但是我们知道线程池是可以设置容量的,而且这容量的设置也是至关重要的,如果容量设置的太小,那么将会影响系统的运行效率,如 ...