51Testing丛书连载:(十一) QTP自动化测试实践

发表于:2008-7-04 13:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈能技    来源:51Testing软件测试网

3.3  自动化测试工具的原理
        测试工具的优势在于可部分地替代人工的测试过程,能重复不断地执行,能精确判断数值和字符对象。自动化测试工具把测试用例用自动的方式执行,例如,自动地产生数据,自动地打开应用程序,自动地查找控件,自动地输入数据,自动地操作控件,自动地收集测试结果,自动地与预期结果进行比较等。
        自动化功能测试工具可基于GUI层面进行测试,也可基于代码层面进行测试。只要实现了自动化执行测试用例,自动化地检查测试数据的测试工具,替代人工进行测试步骤的执行,从而验证应用程序是否满足了特定功能的测试工具,都可以称为自动化功能测试工具。
3.3.1  基于代码层面的功能自动化测试工具
        基于代码层面的功能自动化测试工具主要是一些单元测试工具,例如JUnit、NUnit、MSTest等,这些工具直接访问被测试的应用程序的代码,对其中的类和函数进行调用,输入各种测试数据,检查函数的返回值,通过比较返回值与期待的值是否一致来判断测试是否通过。图3.2所示的是Visual Studio.NET 2005中的单元测试管理界面。
 

图3.2  Visual Studio.NET 2005中的单元测试管理界面
        这种类型的工具主要实现了测试代码框架产生的自动化,例如,下面代码是Visual Studio.NET 2005中的单元测试框架MSTest为某个类的方法自动产生的单元测试代码框架:
// 以下代码由 Microsoft Visual Studio 2005 生成。
// 测试所有者应该检查每个测试的有效性。
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Text;
using System.Collections.Generic;
using AUT;
namespace TestProject1
{
    /// <summary>
    ///这是 AUT.Form1 的测试类,旨在包含所有 AUT.Form1 单元测试
    ///</summary>
    [TestClass()]
    public class Form1Test
    {
        private TestContext testContextInstance;
        /// <summary>
        ///获取或设置测试上下文,上下文提供有关当前测试运行及其功能的信息。
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region 附加测试属性
        //
        //编写测试时,可使用以下附加属性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        //
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        //
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion

        /// <summary>
        ///Add (int, int) 的测试
        ///</summary>
        [DeploymentItem("AUT.exe")]
        [TestMethod()]
        public void AddTest()
        {
            Form1 target = new Form1();
            TestProject1.AUT_Form1Accessor accessor =
new TestProject1.AUT_Form1Accessor(target);
            int i = 0; // TODO: 初始化为适当的值
            int j = 0; // TODO: 初始化为适当的值
            int expected = 0;
            int actual;
            actual = accessor.Add(i, j);
            Assert.AreEqual(expected, actual, "AUT.Form1.Add 未返回所需的值。");
            Assert.Inconclusive("验证此测试方法的正确性。");
        }
    }
}
        在代码框架的背后,单元测试框架负责查找和调用被测试的类和方法,通过代码反射机制可以访问到被测试代码中的所有方法和属性。另外,单元测试框架会提供一系列的Assert类,使用这些Assert类可以简化测试结果检查、判断的工具。
        提示:在执行单元测试时,单元测试框架负责加载包含测试类的程序集文件,通过查找里面的测试类和测试方法标识来加载测试方法,例如,上面代码中的“[TestMethod()]”就是用于标识其中的测试方法。

连载一   连载二    连载三   连载四   连载五    连载六   连载七    连载八    连载九    连载十    连载十二

连载十三    连载十四    连载十五    连载十六    连载十七    连载十八  连载十九    连载二十    连载二十一

连载二十二    连载二十三

本文选自:《51Testing软件测试作品系列》之二的QTP自动化测试实践》,本站经电子工业出版社和作者的授权,近期将进行部分章节的连载,敬请期待!

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • dcyan
    2008-7-16 20:24:48

    跑题了,受不了

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号