实验一 白盒测试用例设计

简介: 实验一 白盒测试用例设计

1.png

实验名称


白盒测试用例设计


实验目的


(1)能够利用白盒测试方法对程序进行测试。

(2)会用各种逻辑覆盖法设计测试用例。

(3)会用基本路径测试法设计测试用例。


实验内容


题目1


使用语句覆盖、条件组合覆盖方法为下列程序模块设计测试用例


void DoWork (int x,int y,int z)
{
①  int k=0, j=0;
②  if ( (x>3)&&(z<10) )
③  {
④  k=xy-1;
⑤  j=sqrt(k);
⑥  }
⑦  if((x==4)||(y>5))
⑧  j=xy+10;
⑨  j=j%3;
⑩ return j;
⑪ }


要求:


(1)给出被测模块的程序流程图

(2)给出满足语句覆盖和条件组合覆盖的测试用例

(3)设计驱动程序main函数,运行被测模块。


题目2


isLeapYear是一个判断年份是否闰年的程序模块,使用基本路径测试法为该程序模块设计测试用例。


int isLeapYear( int year )
① {
②  int flag;
③  if( year % 4 == 0 )
④  {
⑤  if( year % 100 == 0 )
⑥  {
⑦  if( year % 400 == 0 )
⑧  flag = 1;
⑨  else
⑩  flag = 0;
⑪  }
⑫  else
⑬  flag = 1;
⑭  }
⑮  Else
⑯  flag = 0;
⑰  return flag;
⑱ }


要求:

(1)给出被测模块的控制流图

(2)分析独立路径集合

(3)设计测试用例

(4)设计驱动程序main函数,运行被测模块。


实验要求


(1)绘制程序流程图、控制流图(注意二者的区别),图中符号要规范。

(2)测试用例的组织可以参照表1的格式:


2.png


(3)在程序中加必要注释说明:创建日期、创建者、函数功能

(4)运行测试程序,记录和分析测试结果。


实验过程


题目1

(1)程序流程图


3.png


(2)测试用例


4.png5.png6.png


(3)实验代码


public class demo01 {
    public static void main(String[] args) {
        demo01 demo01 = new demo01();
        int x = 4;
        int y = 2;
        int z = 3;
        demo01.DoWork(x,y,z);
    }
    public void  DoWork ( int x, int y, int z) {
        System.out.println("x = " + x + "  y = " + y + "  z =  " + z);
        int k = 0, j = 0;
        if ((x > 3) && (z < 10)) {
            k = x * y - 1;
            j = (int) Math.sqrt(k);
        }
        if ((x == 4) || (y > 5)) {
            j = x * y + 10;
        }
        j = j % 3;
        System.out.println(" k = " + k + " j = " + j);
    }
}


(4)运行结果


11.png8.png7.png9.png10.png


题目2


(1)控制流图


12.png


(2)测试用例


13.png


(3)实验代码


public class demo02 {
    public static void main(String[] args) {
        demo02 demo02 = new demo02();
        int leapYear = demo02.isLeapYear(2000);
        if (leapYear == 0 ) {
            System.out.println("不是闰年");
        } else {
            System.out.println("是闰年");
        }
    }
    int isLeapYear( int year ) {
        int flag;
        if( year % 4 == 0 ) {
            if( year % 100 == 0 ) {
                if( year % 400 == 0 )
                    flag = 1;
                else
                    flag = 0;
            } else
                flag = 1;
        } else
            flag = 0;
        return  flag;
    }
}


(4)运行结果


14.png17.png16.png15.png


实验心得


逻辑覆盖分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖六种。


语句覆盖是相对较弱的测试标准。语句覆盖的定义是:测试时,首先设计若干测试用例(越少越好),然后运行被测程序,使程序中的每一个可执行语句至少执行一次。

路径覆盖是指覆盖程序中所有可能执行路径。路径覆盖可对程序进行彻底的覆盖,比前5种方法的覆盖率都高。


条件组合覆盖又称组合覆盖,是指每个判断语句中的各个条件的各种可能组合都至少执行一次,因此条件组合覆盖的测试用例可满足判定覆盖、条件覆盖以及判定/条件覆盖。

通过白盒测试,能够利用白盒测试方法对程序进行测试。会用各种逻辑覆盖法设计测试用例。会用基本路径测试法设计测试用例。


相关文章
|
7月前
|
测试技术
包含用例执行时间的测试报告代码
包含用例执行时间的测试报告代码
|
7月前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
|
3月前
|
测试技术
软件测试用例设计之微信群抢红包经典用例
作者在浏览招聘网站时遇到为微信群发和抢红包设计测试用例的问题,作为软件测试新手,作者通过实际体验并撰写测试案例来加深对业务的理解,并分享了测试案例表格。需要注意的是,该用例未考虑添加银行卡支付、红包类型选择及红包描述。
94 5
软件测试用例设计之微信群抢红包经典用例
|
3月前
|
人工智能 测试技术 Python
基于 LangChain 的自动化测试用例的生成与执行
本章节详细介绍了如何利用人工智能技术自动化完成Web、App及接口测试用例的生成与执行过程,避免了手动粘贴和调整测试用例的繁琐操作。通过封装工具包与Agent,不仅提升了测试效率,还实现了从生成到执行的一体化流程。应用价值在于显著节省时间并提高测试自动化水平。
|
3月前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
|
4月前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
|
4月前
|
人工智能 自然语言处理 测试技术
基于LangChain手工测试用例转接口自动化测试生成工具
本文介绍利用大语言模型自动生成接口自动化测试用例的方法。首先展示传统通过HAR文件生成测试用例的方式及其局限性,随后提出结合自然语言描述的测试需求与HAR文件来生成更全面的测试脚本。通过LangChain框架,设计特定的提示词模板,使模型能够解析测试需求文档和HAR文件中的接口信息,并据此生成Python pytest测试脚本。示例展示了正常请求、非法请求及无效路径三种测试场景的自动化脚本生成过程。最终,整合流程形成完整代码实现,帮助读者理解如何利用大模型提高测试效率和质量。
|
4月前
|
存储 测试技术 API
apifox实例应用-自动化测试用例for循环的使用
总结来说,通过在Apifox自动化测试用例中结合for循环的使用,我们可以有效地对接口进行批量测试,提升测试效率和覆盖率。同时,通过参数化测试数据的灵活应用,能够确保我们的接口在不同的输入条件下都能保持正确的行为。这种方法能够显著减少手动测试工作量,同时通过标准化的流程确保测试的一致性。
326 0
|
6月前
|
人工智能 测试技术 索引
基于LangChain手工测试用例生成工具
使用Python的LangChain框架,测试工程师能自动化从需求文档生成思维导图。代码示例演示了如何加载文档,提取信息,创建向量索引,执行检索,并通过PlantUML生成MindMap图像。流程中,AI替代了手动梳理需求和创建测试用例的过程,涉及的关键组件包括TextLoader、OpenAIEmbeddings、FAISS检索和AgentExecutor。该实践帮助掌握LangChain的检索和Agent功能,以实现文档到测试用例的智能转换。
|
5月前
|
测试技术 Apache
单元测试策略问题之设计有效的单测用例问题如何解决
单元测试策略问题之设计有效的单测用例问题如何解决