软件测试用例经典方法 | 单元测试法案例

这篇具有很好参考价值的文章主要介绍了软件测试用例经典方法 | 单元测试法案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

单元测试又称模块测试,是对软件设计的最小单元的功能、性能、接口和设计约束等的正确性进行检验,检查程序在语法、格式和逻辑上的错误,并验证程序是否符合规范,以发现单元内部可能存在的各种缺陷。

单元测试的对象是软件设计的最小单位——模块、函数或者类。在传统的结构化程序设计语言(如C语言)中,单元测试的对象一般是函数或者过程。在面向对象设计语言(如Java、C#)中,单元测试的对象可以是类,也可以是类的成员函数/方法。由此可见,单元测试与程序设计和编码密切关联,测试者需要根据详细设计说明书和源程序清单来了解模块的I/O条件和逻辑结构。

本节利用风靡全球的“俄罗斯方块游戏排行榜”的程序作为案例来串讲单元测试的内容。

01、测试策划

1. 目的

俄罗斯方块游戏(Tetris)的排行榜功能经过编码后,在与其他模块进行集成之前,需要经过单元测试,测试其功能点的正确性和有效性。以便在后续的集成工作中不会引入更多的问题。

2. 背景

俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。

排行榜功能是俄罗斯方块游戏中不可或缺的一部分,其用于将当前用户的得分与历史得分记录进行比较并重新排序。

该程序主要涉及的功能点有历史记录文件的读取、分数排名的计算与排序、新记录文件的保存、新记录的显示等。这些功能将在一局游戏结束,并获取到该局游戏的得分后启动。

3. 待测源代码

private void gameOver (int score)//游戏结束
{//Display game over
string s="您的得分为:";
string al =".
char[]A={};
int i=1;
_blockSurface.FontStyle= new Font(FontFace,BigFont);//设置基本格式_blockSurface.FontFormat.Alignment = StringAlignment.Near;
_blockSurface.DisplavText ="GAME OVER!!
string sc = Convert.ToString( score);//得到当前玩家的分数//write into file;
string path="D: test2.txt";//文件路径
try{
FileStream fs = newFileStream
(path,FileMode.OpenOrCreate,FileAccess.ReadWrite);
StreamReader strmreader = new StreamReader(fs);//建立读文件流
String[] str = new String[5];
String[] split = new String[5];
while(strmreader.Peek()!= -1)
for(i=0;i<5;i++)
strli] = strmreader.ReadLine();//以行为单位进行读取,赋予数组
//str[i]
split [i]split[i]= str[i].split(':')[1];//按照":"将文字分开,赋予数组 
person1 = Convert.ToInt32(split[0]); //splt[0]的值赋予第一名
person2 = Convert.ToInt32(split[1]); //splt[1]的值赋予第一名
person3 = Convert.ToInt32(split[2]); //splt[2]的值赋予第一名
person4 = Convert.ToInt32(split[3]); //splt[3]的值赋予第一名
person5 = Convert.ToInt32(split[4]); //splt[4]的值赋予第一名
strmreader.Close(); //关闭流
fs.Close();
FileStream ffs = new
FileStream(path, FileMode.OpenOrCreate,
FileAccess.ReadWrite));
StreamWriter sw = new StreamWriter(ffs)//建立写文件流
if(_score > person1)//如果当前分数大于第一名,排序
{
person5=person4; person4 = person3; person3 = person2; person2 = person1;
person1=score;
}
else if(_score> person2)//如果当前分数大于第二名,排序
{
person5 = person4; person4 = person3; person3 = person2; person2=
_score;
}
else if(_score> person3)//如果当前分数大于第三名,排序
{
person5 = person4; person4 = person3; person3 =_score;
else if(_score> person4)//如果当前分数大于第四名,排序
{
person5 = person4; person4 =_score;
}
else if(_score > person5)//如果当前分数大于第五名,排序
{
person5 = _score;
//在文件中的文件内容
string ppl ="第一名:“+ Convert.ToString(person1);
string pp2 ="第二名:"+ Convert.ToString(person2);
string pp3 ="第三名:”+ Convert.ToString(person3);
string pp4 ="第四名:"+ Convert.ToString(person4);
string pp5 ="第五名"+ Convert.ToString(person5);
string
ppR= pp1+"r\n"+ pp2 +"r\n" + pp3 +"r\n"+ pp4+"r\n"+ pp5 +"r\n";
byte[] info = new UTF8Encoding(true).GetBytes(ppR);
sw.Write(ppR); //将内容写入文件
sw.Close();
ffs.Close();
}
Catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
S=s+""+ sC;
//Draw surface to display text;
MessageBox.Show(s);  //在界面中显示排行榜内容
} 

02、测试设计

下面将利用相关静态和动态(白盒测试、黑盒测试)方法对案例进行相应的测试,得到测试报告与错误列表,在实际项目中可进一步反馈给开发方进行Bug的确认与修复。

1. 代码走查

利用代码走查的方法检查该模块的代码,对代码质量进行初步评估。具体实现如表1所示。

        ■ 表1 代码走查情况记录

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

从表1的分析中可以看出,本模块的代码基本情况如下。

(1) 代码直观。

(2) 代码和设计文档对应。

(3) 无用的代码已经被删除。

(4) 注释过于简单。

2. 基本路径测试法

基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出可执行的路径集合,从而设计测试用例的方法。首先需要简化程序模块,绘制程序模块如图2所示。接着按照模块图的设计路径来覆盖策略。主要可分为以下4步执行。

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

■ 图2 程序模块图

1) 绘制程序的控制流图

基本路径测试法的第一步是绘制控制流图,根据程序模块图的逻辑关系,获得该程序块的控制流图,如图3所示。

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

■ 图3 程序模块的控制流图

2) 计算环路复杂度

其次是根据控制流图计算环路复杂度,环路复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,该度量将用于计算程序基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。

V(G)=P+1=5+1=6

根据以上公式确定至少要覆盖6条路径。

3) 导出独立路径

根据控制流图可以方便地得到以下6条路径。

path1:1—2—11。

path2:1—3—4—11。

path3:1—3—5—6—11。

path4:1—3—5—7—8—11。

path5:1—3—5—7—9—10—11。

path6:1—3—5—7—9—11。

4) 设计测试用例

最后设定一组初始参数,以此来设计测试用例。令:

person1=23

person2=20

person3=10

person4=6

person5=4

作为测试输入,可设计测试用例如表2所示。

■ 表2 基本路径法测试用例

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

3. 边界值分析

边界值分析法利用输入变量的最小值、略大于最小值、输入范围内任意值、略小于最大值、最大值等来设计测试用例。

由于输入的只会是数据,且数据均大于0,因此可令:

person1 = 23

person2 = 20

person3 = 10

person4 = 6

person5 = 4

采用边界值法设计测试用例如表3所示。

■ 表3 边界值法测试用例

软件测试用例经典方法 | 单元测试法案例,软件测试,测试用例,单元测试,原力计划

03、测试执行

将设计的测试用例整理合并为测试用例集合,必要时需要开发相应的驱动模块和桩模块。本次测试需要开发一个驱动模块,用于初始化相应的参数,并调用待测模块以达到测试效果。驱动模块代码如下。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main(){
public static void main(String[]args)
throws IOException{
int person1 = 23,person2 = 20, person3 = 10,person4 = 6,person5 = 4;
int score;
String s;
BufferedReader bf = new BufferedReader(newInputStreamReader(System.in));
s = bf.readLine():
score = Integer.valueOf(s);
_gameOver(score);
}
}

04、测试总结

测试结果可利用Bug记录平台进行记录,在实际项目中则可反馈给开发人员,由开发人员确认并修复。

测试结束后,形成测试报告。

 文章来源地址https://www.toymoban.com/news/detail-687796.html

 

 

 

 

 

 

 

到了这里,关于软件测试用例经典方法 | 单元测试法案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常见的6种软件测试用例设计方法

    常见的软件测试用例设计方法,个人认为主要是下面这6种: 流程图法(也叫场景法) 等价类划分法 边界值分析 判定表 正交法 错误推测法 这6种常见方法中,我分别按照定义、应用场景、使用步骤、案例讲解这4个部分进行讲解。 所以本文行文结构如下 每种用例方法定义、

    2024年01月24日
    浏览(53)
  • 软件测试过程与方法(1):单元测试,集成测试,确认测试

    软件测试从测试计划编写到测试实施,需要经过一系列的过程。这些测试按软件从编写到交付的各个阶段的先后顺序可分为以下5个阶段: 单元测试 集成测试 确认(有效性)测试 系统测试 验收(用户)测试 单元测试 单元测试的定义: 单元测试(Unit Testing)是对软件基本构

    2024年02月02日
    浏览(53)
  • 软件测试技术之单元测试—工程师 Style 的测试方法

    什么是单元测试? Wikipedia 对单元测试的定义: 在计算机编程中,单元测试(Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 在实际测试中,一个单元可以小到一个方法,也可以大到包含多个类。从定义上讲,单元测试和

    2024年02月12日
    浏览(61)
  • 软件测试技术之单元测试—工程师 Style 的测试方法(2)

    怎么写单元测试? JUnit 简介 基本上每种语言和框架都有不错的单元测试框架和工具,例如 Java 的 JUnit、Scala 的 ScalaTest、Python的 unittest、JavaScript 的 Jest 等。上面的例子都是基于 JUnit 的,我们下面就简单介绍下 JUnit。 JUnit 里面每个 @Test 注解的方法,就是一个测试。@Ignore 可以

    2024年02月11日
    浏览(49)
  • 软件测试技术之单元测试—工程师 Style 的测试方法(3)

    如何设计单元测试? 单元测试设计方法 单元测试用例,和普通测试用例的设计,没有太多不同,常见的就是等价类划分、边界值分析等。而测试用例的设计其实也是开发者应该掌握的基本技能。 等价类划分 把所有输入划分为若干分类,从每个分类中选取少数有代表性的数据

    2024年02月12日
    浏览(65)
  • Selenium 学习(0.16)——软件测试之测试用例设计方法——白盒测试——逻辑覆盖法(语句覆盖和判定覆盖)

            写在前面          今天回来有点晚,因为上午给小伙伴们开了个小会,随便说了些什么,结果小伙伴们下班就没急着走,弄点我还有点不好意思提前走了,就略留了一会。其实也没说什么,就是强调工作要抓点紧,8小时内提高效率就好,我反对无意义的加班;

    2024年02月05日
    浏览(56)
  • 如何避免软件bug?优化你的测试流程和设计用例方法就对啦!

    目录 引言 一、测试流程 二、测试用例设计方法 等价类 边界值 场景设计法 判定表 错误推测法 结语 对于大多数软件开发者和测试人员而言,避免出现bug是一项非常重要的任务。但是,在实际的开发过程中,我们经常容易忽略一些细节或者流程上的问题,导致测试的结果不尽

    2024年02月05日
    浏览(54)
  • 软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法

    白盒设计方法分为静态和动态。 静态的白盒测试方法有桌面检查、代码审查、代码走查和代码扫描工具。 动态的白盒测试方法有逻辑覆盖法和基本路径测试法。 2.1 逻辑覆盖 逻辑覆盖法有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。 例1 将上

    2024年02月02日
    浏览(41)
  • 【软件测试】测试用例

    目录 🌷1. 测试用例的基本要素 🌷2. 测试用例的设计方法 🌳2.1 基于需求进行测试用例的设计 ⭐️(1)功能需求测试分析 ⭐️(2)非功能需求测试分析 🌳2.2 具体的设计方法 (黑盒测试) ⭐️(1)等价类 ⭐️(2)边界值 ⭐️(3)错误猜测法 ⭐️(4)场景设计法 ⭐️

    2023年04月15日
    浏览(41)
  • 软件测试测试用例

    等价类: 把输入的数据可以分为有效的数据和无效的数据 被测试的对象输入的数据: 1、有效的数据 2、无效的数据 测试一个产品,需要考虑它的正确场景,也需要考虑它的异常场景 边界值: 边界值测试用例是针对等价类测试用例方法的补充,因为等价类测试用例的方法只考

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包