您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页软件测试单元测试加减乘除测试用例 折半插入测试用例

软件测试单元测试加减乘除测试用例 折半插入测试用例

来源:华佗小知识


实验三 单元测试

一、 实验目的

1、 掌握UNnit的安装、基本使用方法;

2、 掌握编写运行在UNnit上测试类的基本知识。

二、 实验要求

1、 对一个类编写相对应的测试类,设计测试用例。 2、 使用UNnit测试进行测试。

三、 实验内容

1、测试1: 被测试类

using System; namespace Test {

public class Calculator {

///

/// 加法

///

/// /// /// public int Add(int a,int b) {

return a + b; }

///

/// 减法

///

/// /// /// public int Minus(int a, int b) {

return a - b; }

///

/// 乘法

///

/// /// ///

public int Multiply(int a, int b) {

return a * b; }

///

/// 除法

///

/// /// ///

public int Divide(int a, int b) {

return a / b; } } }

2、测试2:对折半插入排序算法进行测试 void BInsertSort() {

public static int[] sort(int[] number)

{

int tmp;

for (int i = 1; i <= number.Length - 1; i++) {

tmp = number[i]; int low = 0; int high = i - 1; while (low <= high) {

int pos = (low + high) / 2; if (tmp < number[pos]) high = pos - 1; else

low = pos + 1; }

for (int j = i - 1; j > high; j--) number[j + 1] = number[j];

number[high + 1] = tmp; }

return number; } }

四、实验步骤

1、测试1:

(1)、针对Calculator设计相应的测试用例。

加法 减法 乘法 除法 操作数a 4 4 4 4 操作数b 2 2 2 2 期望结果 6 2 8 2 实际结果 6 2 8 2 (2)、建立一个测试类对Calculator进行测试。 a) 单个测试用例的测试类

using JSQ;

using NUnit.Framework; namespace JSQTests {

[TestFixture]

public class calculatortests {

[Test]

public void Add_ReturnResult() {

calculator cal = new calculator(); int a = 4, b = 2;//输入数据 int except = 6;//预期输出结果

int actual = cal.Add(a,b);//实际输出结果

Assert.AreEqual(except, actual);//比较是否一样 } [Test]

public void Sub_ReturnResult() {

calculator cal = new calculator(); int a =4,b=2; int except = 2;

int actual = cal.Sub(a,b);

Assert.AreEqual (except,actual);

} [Test]

public void Mix_ReturnResult() {

calculator cal = new calculator(); int a =4, b = 2; int except = 8;

int actual = cal.Mix(a, b);

Assert.AreEqual(except, actual); } [Test]

public void Div_ReturnResult() {

calculator cal = new calculator(); int a = 4, b = 2; int except = 2;

double actual = cal.Div(a, b); Assert.AreEqual(except, actual); } } }

b) 改进的测试类

using JSQ;

using NUnit.Framework; namespace JSQ.Tests {

[TestFixture]

public class CalculatorTests

{ private int a, b,expected,actual; private Calculator cal; [SetUp]

public void Init() {

a=4; b=2;

cal =new Calculator(); }

[TearDown]

public void Des() {

cal = null; } [Test]

public void TestAdd() {

expected = 6;//预期结果 actual = cal.Add(a, b);

Assert.AreEqual(expected, actual); } [Test]

public void TestMinus() {

expected = 2;//预期结果 actual = cal.Minus(a, b);

Assert.AreEqual(expected, actual); } [Test]

public void TestMultiply() {

expected = 8;//预期结果 actual = cal.Multiply(a, b);

Assert.AreEqual(expected, actual); } [Test]

public void TestDivide() {

expected = 2;//预期结果 actual = cal.Divide(a, b);

Assert.AreEqual(expected, actual); }

[Test,ExpectedException(typeof(DivideByZeroException))]

[Category(\"除数为0测试类\")] public void TestDivide()

{

int except = 0;

actual = cal.Divide(a, 0);

Assert.AreEqual(expected, actual); } } }

改进的测试类用了 [SetUp],[TearDown]两个函数,SetUp和TearDown属性可以在测试之前或之后控制测试的初始化和清理,[SetUp]在每一次运行测试类中的一个测试之前都会执行setup方法,[TearDown]在每一次测试运行结束后,执行一次。把需要用到的变量a,

b,expected,actual 以及Calculator私有类写到同一个公共类中,[SetUp]里写a,b,Calculator的初始值,[TearDown]里就写每个测试函数。这样改进的程序就大大地简化了程序,使程序的理解也更加明了。

(3)、使用UNnit进行测试,分析测试结果。 a) 下图为上面测试类的测试结果

b) 当测试到[Text,Ignore]的测试类时,它所对应的测试类就会出现代表忽视的黄色。此测试类为忽视测试类,意思就是在UNnit里测试的时候,这个测试下的测试项为自动忽视项,也即无效项。

c) 当测试到除数为0的测试用例时,测试结果就会出现error的红色,说明测试有错,除数不能为0。如果写在[Test,ExpectedException(typeof(DivideByZeroException))]下面,当测试用例的除数为0时,也不会出现错误。 2、测试2:

(1)、补充完折半插入排序算法BInsertSort (2)、针对折半查找算法,设计相应的测试用例 待排序的数:45, 25, 5, 17, 19, 12, 9, 30, 100, 4, 50 预期排序结果:4,5,9,12,17,19,25,30,45,50,100 (3)、编写测试类

[TestFixture]

public class SortTests {

private int[] data={ 45, 25, 5, 17, 19, 12, 9, 30, 100, 4, 50 }; [SetUp]

public void Init() { } [Test]

public void TestSort() {

int[] expected={ 4,5,9,12,17,19,25,30,45,50,100}; int[] actual;

actual = Program.sort(data);

Assert.AreEqual(expected, actual); }

}

(4)、使用UNunit进行测试,分析测试结果。

五、实验总结

用UNnit软件进行测试用例,显然省了人工的很多实例的操作,在这个实验中的实际练习中也感受到了UNnit的强大。UNnit的使用最重要的还是写测试类,每个测试类都是用[Text]标志的,也含有一些对与异常情况处理的测试类,像[Text,Ignore]等,他们的使用也很方便。我觉得难点在于SetUp和TearDown的使用,这两个属性可以在测试之前或之后控制测试的初始化和清理,可以把多个相似的测试用例的初始值写到SetUp里,因为在每一次运行测试类中的一个测试之前都会执行setup,这个就大大方便了测试用例书写的繁琐。对于对折半插入法排序的测试,先用写上折半插入法的排序代码,本排序的数据使用的是数组定义的,测试类主要是写上预期的排序结果private int[] data={ 45, 25, 5, 17, 19, 12, 9, 30, 100, 4, 50 }; 和实际的排序结果actual = Program.sort(data);然后两个结果相对比Assert.AreEqual(expected, actual);总体来说,这两个实验都加深了我对测试类写法的理解以及UNnit的使用方法,既巩固了我C#的编程能力,也提高了我对软件测试的兴趣。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务