zoukankan      html  css  js  c++  java
  • WF4.0实战(五):实现一个直观易扩展的自动测试框架

    概述:

          这篇文章用WF实现一个软件自动测试框架,这个框架你可以随意扩展。本这个框架根据WF流程去自动地点击你的页面;自动的在你的文本上输入值;自动的做一些人为的操作。也就是说WF相当于一个测试用户,自动地帮你测试软件。只需要你定制测试流程。

    写一个待测试的软件:

          这里我写了一个很简单的待测试的软件:一个加法运算。界面如下图,就一个Form。

    后台代码如下:

     1  public partial class MainForm : Form
     2     {
     3         public MainForm()
     4         {
     5             InitializeComponent();
     6         }
     7 
     8         private void btnAdd_Click(object sender, EventArgs e)
     9         {
    10             try
    11             {
    12                 int a =int.Parse(txt1.Text);
    13                 int b =int.Parse(txt2.Text);
    14                 int c = a + b;
    15                 txt3.Text = c.ToString();
    16             }
    17             catch
    18             {
    19                 txt3.Text = "";
    20             }
    21         }
    22 
    23      
    24     }

    画测试流程:

    1、新建一个Test1流程,如下图:

    2、拖测试活动:

    3、修改display属性,使流程更加形象:

    4、设置活动属性,这里以几个个活动为例,看下面的图:

    “设置加数1的值”设置如下:

    “点击计算按钮”设置如下:

    “获取计算结果”设置如下:

    “验证结果”设置如下:

    “关闭表单”设置如下:

    4、 这个流程分为:

        a、设置表单上两个加数文本的值

        b、自动点击计算按钮

        c、获取表单上的值

        d、判断从表单上取得的值与正确的值是否相等

        e、如果相等输出正确,否者输出存在bug。

        f、关闭表单

    以上6个步骤会自动执行,你可以看见下图的Output输出:程序正确。

    修改待测试软件,将下面代码屏蔽掉。看运行效果:

                   //int c = a + b;
                   
    // txt3.Text = c.ToString();

    输出如下图:

    我们可以看到Output输出:程序有bug。

    框架实现:

    类图如下:

    StartFlow用于启动流程,其余的为自定义活动。

    WindowsControlActivity代码如下,FormType参数是表单的类型(要带上命名空间),RequiredArgument属性表示这个参数是必需的。

     1     public  class WindowsControlActivity : CodeActivity
     2     {
     3         public delegate void SetControlValueCallback( Control oControl);
     4         // Define an activity input argument of type string
     5        [RequiredArgument]
     6         public InArgument<string> FormType { getset; }
     7 
     8         // If your activity returns a value, derive from CodeActivity<TResult>
     9         // and return the value from the Execute method.
    10         protected override void Execute(CodeActivityContext context)
    11         {
    12             // Obtain the runtime value of the Text input argument
    13     
    14         }
    15 
    16     }

    ClickButtonActivity代码如下,ButtonName参数表示按钮的名称,这个活动的父类是WindowsControlActivity,故它也要求有FormType参数。

     1     public sealed class ClickButtonActivity : WindowsControlActivity
     2     {
     3         // Define an activity input argument of type string
     4         [RequiredArgument]
     5         public InArgument<string> ButtonName { getset; }
     6 
     7         // If your activity returns a value, derive from CodeActivity<TResult>
     8         // and return the value from the Execute method.
     9         protected override void Execute(CodeActivityContext context)
    10         {
    11             StartFlow.Extensions ext = context.GetExtension<StartFlow.Extensions>();
    12             Form frm = ext.GetForm(FormType.Get(context));
    13             Button button = ext.GetControl(frm, ButtonName.Get(context)) as Button;
    14             SetControlPropertyValue(button);
    15         }
    16 
    17         private void SetControlPropertyValue( Control  oControl)
    18         {
    19             if (oControl.InvokeRequired)
    20             {
    21                 SetControlValueCallback d = new SetControlValueCallback(SetControlPropertyValue);
    22                 oControl.Invoke(d, new object[] { oControl });
    23             }
    24             else
    25             {
    26                 Button button = oControl as Button;
    27                 button.PerformClick();   
    28             }
    29         }
    30   
    31     }

    由于工作流运行时是多线程的,故这里使用了委托。

    总结:这个自动测试非常方便。你可以很方便的扩展,具体见代码。如果你有什么不明白的地方,欢迎给我留言,我会及时回复你的。

    代码:/Files/zhuqil/TestflowFramework.rar



    (全文完)


    以下为广告部分

    您部署的HTTPS网站安全吗?

    如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

    SSL检测评估

    快速了解HTTPS网站安全情况。

    安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

    SSL证书工具

    安装部署SSL证书变得更方便。

    SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

    SSL漏洞检测

    让服务器远离SSL证书漏洞侵扰

    TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

  • 相关阅读:
    C#修饰符
    Exploring jQuery .live() and .die()
    ASP.NET Session丢失问题原因及解决方案
    5个 PHP 安全措施(转)
    jQuery方法click() bind() live() delegate()区别
    高性能网站的十四条黄金法则(雅虎14条)
    计算机科学概论读书笔记系列——绪论
    进程、线程、应用程序域、托管代码、元数据等。
    互联网协议入门(转)
    js跨域访问问题
  • 原文地址:https://www.cnblogs.com/zhuqil/p/TestflowFramework.html
Copyright © 2011-2022 走看看