五:自动测试

TDD(Test-Driven Development)测试驱动开发

与传统的开发方式不同,TDD不再是先把软件开发好,再测试。而是先写好测试再开发软件。

Web程序更注重两种自动化测试,单元测试和集成测试。

.NET单元测试

在解决方案中可以创建一个独立的测试项目,容纳各种测试套件。一个套件就是一个C#类。它定义了一组测试方法,每个方法对应希望校验的一种行为。一个测试项目可以包含多种多样的测试套件类。

1:新建带有测试项目的示例MVC项目

2:在测试项目中新建一个测试类

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Web.Mvc;
using TestDemoMVC.Controllers;

namespace TestDemoMVC.Tests
{
    [TestClass]
    public class AdminControllerTest
    {
        [TestMethod]
        public void TestHomeController()
        {
            //Arrange
            HomeController controller = new HomeController();
            // Act
            ViewResult result = controller.Index() as ViewResult;
            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(true);
        }

        [TestMethod]
        public void TestTrueMethod()
        {
            Assert.IsTrue(true);
        }

        [TestMethod]
        public void TestFalseMethod()
        {
            Assert.IsFalse(true);
        }
    }
}

3:打开测试界面

4:运行测试

可以看到如下结果

AAA模式(准备/动作/断言模式)

准备(Arrange)指建立测试环境,动作(Act)指执行测试,断言(Assert)是值判断是否能够得到需要的结果。

TDD及“红-绿-重构”工作流程

  • 确定需要给应用程序添加的特性或方法
  • 编写测试,用来检验要添加的特性或方法(先编写测试)
  • 运行测试得到一个红色信号,因为并没有实现
  • 编写实现新特性的代码
  • 再次运行测试修正代码,一直到得到绿色信号
  • 必要时重构代码
  • 运行该测试,确认修改不会改变这个新增特性的行为

TDD和传统的开发流程完全不同。TDD是先定义测试,后实现特性。

TDD的精髓是在实现功能之前就要考虑如何修改和增强功能,也就是在程序开发之前就要有一个计划好的明确的目标。

集成测试

集成测试最常用的方法是UI自动化(UI Automation),含义是通过再现用户要执行的动作,如单击,跟踪链接,提交表单等,模拟或自动操作一个Web浏览器。

  • Selenium RC是一个含有Java的服务器应用程序,可以把自动化命名发送给IE,Firefox,.NET客户端等待浏览器,以方便可以用自己选择的语言来编写测试脚本。
  • WaitN是一个可以把自动化命名发送给IE或Firefox的.NET库,它的API没有Selenium强大,不过处理常见的情况绰绰有余。优点是只要引用一个单一的DLL即可。

 

posted @ 2018-10-30 16:18  岚山夜话  阅读(188)  评论(0编辑  收藏  举报