单元测试的运用

上个星期做了有关白盒测试的测试,何为“白盒测试”,

白盒测试:又称结构测试,它一般用来测试程序的内部结构(Control Flow , Data Flow)。并判定其结果是否与预期的结果一致。

白盒测试的种类:静态分析测试(Static Analysis Test,Code Inspection)、语句分支覆盖测试(Ctrl  Flow Test)等。

这次实验一开始大家都不知道如何下手,于是,我便在网上参照了教材对一个简单的APP进行了白盒测试。

测试项目名称:闰年测试器

版本号:1.0

测试项目介绍:通过输入年份判断该年是否为闰年,便于人们使用

测试目的:测试该程序判定条件是否正确,是否考虑到非法输入的情况

测试时间:2014年4月20日

测试人员:潘博

测试环境:windows8+visual studio2013

操作步骤:

1.在解决方案资源管理器中,选择解决方案名称,从快捷菜单中选择“添加”,然后选择“新建项目”。 在“新建项目”对话框中,展开“已安装”、“Visual C#”,然后选择“Windows 应用商店”。 然后从项目模板列表中选择“单元测试库(Windows Store 应用程序)”

2. 在 Visual Studio 编辑器中打开 UnitTest1.cs。

3.在 UnitTest1.cs 文件的 TestMethod1 中插入一些测试代码

验证测试是否在测试资源管理器中运行

4.在“测试”菜单上,选择“运行”,然后选择“全部运行”。

5.将对 App4应用程序的引用添加到 RooterTests 项目。

  1. 在解决方案资源管理器中,选择“RooterTests”项目,然后选择快捷菜单上的“添加引用...”。
  2. 在“添加引用 - RooterTests”对话框上,展开“解决方案”,再选择“项目”。 然后选择“App4”项目。

6.向 UnitTest1.cs 文件添加 using 语句:

  1. 打开 UnitTest1.cs

2.在 using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 行下添加以下代码:

7.添加使用 Rooter 函数的测试。 将下列代码添加到 UnitTest1.cpp

8.生成解决方案。

新测试将显示在测试资源管理器的“未运行的测试”节点中。

在测试资源管理器中,选择“全部运行”。

测试用例:


用例编号


输入


预期输出


实际输出


覆盖路径


是否通过测试


1


2000


该年是闰年


该年是闰年


1-2-4-5-6


通过


2


2001


该年不是闰年


该年不是闰年


1-2-4-5-7


通过


3


1000


该年不是闰年


该年不是闰年


1-2-4-5-7


通过


4


一九二五


输入有误


输入有误


1-2-3


通过


5


Abcd


输入有误


输入有误


1-2-3


通过

输出结果:

测试源码:

MainPage.xaml.cs

1

2 using System;

3 using System.Collections.Generic;

4 using System.IO;

5 using System.Linq;

6 using System.Runtime.InteropServices.WindowsRuntime;

7 using Windows.Foundation;

8 using Windows.Foundation.Collections;

9 using Windows.UI.Xaml;

10 using Windows.UI.Xaml.Controls;

11 using Windows.UI.Xaml.Controls.Primitives;

12 using Windows.UI.Xaml.Data;

13 using Windows.UI.Xaml.Input;

14 using Windows.UI.Xaml.Media;

15 using Windows.UI.Xaml.Navigation;

16

17

18

19

20

21 // ???é???é????? http://go.microsoft.com/fwlink/?LinkId=234238 ä???ä???

22

23 namespace App4

24 {

25     /// <summary>

26     /// ??ä??è??è????è??è?? Frame ?é?????é???

27     /// </summary>

28     public sealed partial class MainPage : Page

29     {

30         public MainPage()

31         {

32             this.InitializeComponent();

33         }

34

35         private void TextBox_TextChanged(object sender, TextChangedEventArgs e)

36         {

37         }

38         private void TextBox_TextChanged_1(object sender, TextChangedEventArgs e)

39         {

40

41         }

42

43         private void Button_Click(object sender, RoutedEventArgs e)

44         {

45             string year = textbox.Text;

46

47

48             Rooter rr = new Rooter();

49             textbox1.Text = rr.isleap(year);

50

51

52

53         }

54

55         }

56

57

58         }

59

60

Rooter.cs

1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Text;

5 using System.Threading.Tasks;

6

7

8 namespace App4

9 {

10     public class Rooter

11     {

12         public Rooter()

13         {

14         }

15          public string isleap(string year)

16

17         {    string shuchu;

18             try

19             {

20                 int year1 = Int32.Parse(year);

21

22                 if ((year1 % 4 == 0 && year1 % 100 != 0) || year1 % 400 == 0)

23                 {

24                     shuchu = "è????é???";

25

26                 }

27                 else

28                 {

29                     shuchu = "è???ä???é???";

30

31                 }

32             }

33             catch (FormatException)

34             {

35                 shuchu = "è????è??";

36

37

38             }

39             return shuchu;

40

41         }

42     }

43

44 }

UnitTest1.cs

1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Text;

5 using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;

6 using App4;

7

8 namespace UnitTestLibrary1

9 {

10     [TestClass]

11     public class UnitTest1

12     {

13         [TestMethod]

14         public void TestMethod1()

15         {

16             Rooter rr = new Rooter();

17             String year = "2000";

18             String shuchu = rr.isleap(year);

19             String expect = "è????é???";

20             Assert.AreEqual(shuchu, expect);

21         }

22

23     }

24 }

时间: 2024-10-17 11:12:24

单元测试的运用的相关文章

单元测试Junit

###<center> 单元测试Junit </center>###- - -1.**单元测试**:> ==单元测试==是软件之中对于最小的功能模块的的测试,其可以对最基本的软件构成单元来测试.> 需要注意的是:> >**测试用例是用来达到测试想要的预期结果,而不能测试出程序的逻辑错误**. 2.**JUnit**:>1.**Junit是基于断言机制的**.是用于编写可复用测试集的简单框架,是xUnit的一个子集.xUnit是一套基于测试驱动开发的测试

MVC与单元测试实践之健身网站(四)-动作管理

网站后台负责进行动作的管理,包括动作名称.介绍.训练要点.配图等内容,以便前台能够使用这些内容.在上一篇< Fit项目图片上传和云存储的调通>中已经准备好了这里涉及到的主要技术难点,现在就开始完成该模块了. 一 列表介绍 健身管理模块包括肌群.肌肉的显示以及动作的管理.这儿也算是开始涉及"业务内容"了,还好我之前有储备了一些关于健身的资料,现在是时候派上另一种用场了. a) 肌群和肌肉因为内容相对固定,所以为了减少业务逻辑以及单元测试的代码量,当然最主要是为了偷懒,就只提供

MVC与单元测试实践之健身网站(二)-管理员模块

开始动手做这个项目时,发现无法做到完全的先设计.再编码,于是决定分模块进行,从管理员模块开始设计.编码,而且接口就已经改了好几次了. 管理员模块涉及的功能有登录和后台对管理员的维护,其中也涉及前端的开发.UI模板使用Inspinia,感觉这套模板功能丰富.界面美观,而且基于HTML5和BootStrap,对这两方面的知识也可以多些了解. 在上一篇<如何在单元测试时隔离ORM>中,解决了对Service层进行测试怎样构建伪对象的问题,随后管理员模块的Service层和单元测试在齐头并进中完成了:

单元测试(一)-NUnit基础

单元测试作为提高代码和软件质量的有效途径,其重要性和益处自不必多说,虽然我没有实践过TDD之类,但坚信单元测试的积极作用.作为一种开发方法,单元测试早在上世纪70年代就已经在Smalltalk语言被运用了,这么多年来,单元测试一次又一次证明了自身的价值,在各种开发方式此起彼伏的浪潮中,经受住了时间的考验. 现在,俺也开始学习了,并在以后好好实践.这个系列的学习素材为Roy Osherove所著The Art of Unit Testing with examples in C#, 2nd Edi

OA项目CRUD和单元测试(一)

使用ModeFirst方法生成数据库,EntityFramework5.0. 一:Model层的模型:(根据模型生成数据库) 二:Dal层的UserInfo代码: namespace SunOA.EFDAL { public class UserInfoDal { //crud DataModelContainer db = new DataModelContainer(); public UserInfo GetUserInfoById(int id) { return db.UserInfo

词频统计-单元测试

我自己的单元测试没有弄出来,我用c编的,在visual studio中貌似实现不了单元测试,而李俞寰同学是用c#编写的词频统计,在vs2015中实现单元测试无比的方便,所以我请教了他并借鉴了一下. [TestMethod()] public void DictionarySortTest() { Dictionary<string,int>input=new Dictionary<string,int>() { {"you,1}, {"are",1},

使用Xunit来进行单元测试

不管你爱与不爱,单元测试对于一个软件的长治久安还是必不可少的一环.在Visual Studio 2012后,VS中的测试浏览器也能与第三方的集成了,用起来还是非常方便的.目前在.Net框架下的测试工具主要有Nunit.内置的MSTest以及Xunit这三个工具,本文就简单的介绍一下如何在VS中使用XUnit这个测试框架的后起之秀. 安装Xunit: Xunit的安装现在不需要插件支持了,直接使用NuGet安装如下两个库即可: PM> Install-Package xunit PM> Inst

作业八——单元测试练习(个人练习)

必做一: 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例: 测试用例如下:(红色字体为错误预言) 序号 测试输入:三条边 测试预言:[Oracle:Illegal(非三角形),Scalene(一般三角形), Isoceles(等腰三角形),Regular(等边三角形)] 1 (5,5,5) Regular 2 (-5,-5,-5) Regular 3 (1,4,5) Illegal 4 (2,3,5) Illegal 5 (3,4,5) Sc

作业8:单元测试练习(个人练习)

要求 [必做题1] 针对附录1给出的三角形判断Java 代码,应用等价类划分法设计测试用例,用表格形式列出设计的测试用例,写到博客中.(10分) [必做题2] 模仿附录2给出的三角形判断Junit测试代码,设计单元测试脚本,测试 [必做题1]设计得到的测试用例.注意测试脚本中测试用例出现顺序与[必做题1]表格所列顺序一致.运行所得的测试脚本,截运行结果图,写到博客中,同时将源代码push到你自己的github.(20分) [必做题3] 心得体会.写下本次练习你收获的知识点(PS:测试用例设计方法

实验二 单元测试

1. 学习单元测试和代码覆盖率工具的使用 (1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示.(单词之间用空格隔开,如“Hello World My First Unit Test”): (2)编写单元测试进行测试: (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%. import java.util.HashMap; import java.util.Map; public class Test { private static String