软件工程学习笔记一:单元测试

软件的完成一般需要多人的合作,作为团队中的一员,可以通过对自己负责的模块进行单元测试而得到一个质量高的、稳定的成果。单元测试,刚遇到这个概念是很迷茫的,在之前编写程序的过程中,一般都是在多次编译中发现自己的问题并改正之,一旦运行通过就不再管了。当然,程序和软件是不同的概念,有的软件是需要多次维护的,为了避免程序员写的某些模块被其他接手的人误解而引起软件的bug,写完代码后进行单元测试是很必要的。

创建单元测试函数的主要步骤是:

1.设置数据

2.使用被测试类型的功能

3.比较实际结果和预期的结果

而什么才是好的单元测试呢?下面将列举一系列的标准:

1.单元测试应该在最基本的功能/参数上验证程序的正确性(如C++中的类)

2.单元测试必须由程序的作者来写

3.单元测试过后,机器状态保持不变(在teardown阶段删掉单元测试创建的临时文件或目录)

4.单元测试要快,且产生可重复、一致的结果

5.独立性(当其他模块费时或不稳定时可以人为构造数据来进行单元测试)

6.单元测试应覆盖所有代码路径(必须测试公开的和私有的函数/方法)

7.对于需要长期使用的软件,最好将单元测试自动化

8.单元测试必须和产品代码一起保存和维护

看起来,单元测试不是一件简单的事,尤其是对于大量代码的程序,但如果不写单元测试,可能将在后期遇到更多难以修复的bug。

因此,在编写完软件的一项功能后(如我们想要做的音乐软件的读取音乐功能),最好做一下测试。并养成做单元测试的习惯。

引用部分出自《构建之法》,作者邹欣。

时间: 2024-08-24 19:02:02

软件工程学习笔记一:单元测试的相关文章

软件工程学习笔记

<构建之法>第一章 概论 读过了第一章概论,让我对软件工程有了新的认识.我认为如果将程序比作人,那么软件工程就是他的衣着,所以有了“软件=程序+软件工程”这句话.软件工程来源于现实问题,现实中的各种需求会形成一个个便于人们解决问题和使用的程序,软件工程便是针对程序保驾护航的重要因素. 1.软件的构建:源于人们的需求,形成了源程序,这只是软件工程的服务对象而非我之前认为的“写出了程序就是成功了”.写程序的能力不可或缺,但是这不是全部. 2.软件测试:写出的程序必须是能够有效解决问题的产品. 3.

Android学习笔记-junit单元测试

我们都知道测试对于程序员来说是必不可少的,所以,做Android程序,也要学会使用junit,这里比着java的junit测试,要稍微复杂一点,需要一些配置,下面饿哦就介绍一下怎样使用junit的测试. 第一步: 1,新建包:包名是我们"要测试的业务方法报名后加+.test". 2,建类:类名是"test+要测试的类名". 3,建方法:方法名是"test+要测试的方法名". 当然这不是必须要遵守的,知识作为面向对象的开发,我们需要这样的规范. 比

传播智客学习笔记--L10Junit单元测试

配置单元测试的环境 <uses-library android:name="android.test.runnre" <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.njulya.xxxx"/> 建立单元测试类 编写测试方法 最好单独新建单元测试项目

Python学习笔记__8.3章 单元测试

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对函数abs(),我们可以编写出以下几个测试用例: 输入正数,比如1.1.2.0.99,期待返回值与输入相同: 输入负数,比如-1.-1.2.-0.99,期待返回值与输入相反: 输入0,期待返回0: 输入非数值类型,比如None.[].{},期待抛出TypeError. 把上面的测试用例放到一个测试模块里,就是一个完整的单元测试. 单元测试的意义: 方便的检测

UML学习笔记

这个学期有幸选到章老师的UML精品课程,虽然到目前仅仅上课两周,但是收益匪浅.尽管在本科接触过UML,却没有非常详细的对其进行深入的了解,只是对一些图的名称有所耳闻,没有深究其功能. 就最近所学知识,谈一下我对uml统一建模语言的一个总体认识,软件工程作为一门工程类学科,如同建筑类学科一样,当我们需要搭建一所建筑时,我们都需要对其进行需求和设计,在施工的时候,我们就需要一些设计图纸,例如各个房间的具体设计.三维视图等,通过这些图纸进行施工.软件工程也是如此,当我们拿到一个项目时,并不是直接开始编

C++学习笔记之继承

一.基类和派生类 很多时候,一个类的对象也“是”另一个类的对象,如矩形是四边形,在C++中,矩形类Rectangle可以由四边形类Quad继承而来,于是,四边形类Quad是基类,矩形类Rectangle是派生类.但是如果说四边形一定是矩形显然不对.几个简单的基类和派生类的例子: 基类                         派生类   食物 米饭.面条.水饺   交通工具 汽车.火车.飞机 国家 中国.美国.西班牙 可以看出,每个派生类的对象都是基类的一个对象,并且一个基类可以有很多派生

NFC学习笔记——三(在windows操作系统上安装libnfc)

本篇翻译文章: 这篇文章主要是说明如何在windows操作系统上安装.配置和使用libnfc. 一.基本信息 1.操作系统: Windows Vista Home Premium SP 2 2.硬件信息: System: Dell Inspiron 1720 Processor: Intel Core 2 Duo CPU T9300 @ 2.5GHz 2.5GHz System type: 32-bit Operating System 3.所需软件: 在windows操作系统上安装软件需要下列

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被