软件测试方法分类-按照开发阶段划分细讲

前面我给出了整体的软件测试分类,那么接下来,我会将每个分类进行细讲。

第一个我们要说到的就是按照开发阶段划分。

我们都知道软件测试方法分类中,如果按照开发阶段划分,可以分为:

1,单元测试 (Unit Testing)

2,集成测试 (Integration Testing)

3,系统测试 (System Testing)

4,验收测试 (Acceptance Testing)

为什么把他放在第一个呢?有以下几方面的原因:

1,软件测试和软件开发是一个相互的过程,离开了开发,单独谈软件测试是没有任何意义的。

2,在面试的时候,很多面试官认为软件测试分类,说到这个层次就可以了。

3,早期的开发流程其实就是按照瀑布或者V模型去进行的,由此也就默认流程是这样一个流程。

首先,软件在开发的开始,先是一个个小单元模块的开发,也就是一个个方法的开发,比如说我要开发一个微信的功能。

第一步,肯定是先要完成注册功能的开发,对应的我就要写相关注册的方法。

/*注册功能* 键盘输入用户名与密码,如果用户存在则要求重新输入。* 如果用户不存在,在数组中插入注册的账号密码。* 此时可能会有数组长度不够的情况,所以需要增加数组的长度。*/public static void register() {boolean isNewUser; //判断是否是新用户String usernames;do {System.out.print("请输入注册用户名:");usernames = scanner.next();isNewUser = true;/*两种表达方式:* ①for(String uname:USERNAMES)* {* System.out.println(uname);* }* ②for(int i=0;i<USERNAMES.length;i++)* {* System.out.println(USERNAMES[i]);* }*/for (int i = 0; i < USERNAMES.length; i++){if (USERNAMES[i] != null && usernames.equals(USERNAMES[i])){System.out.println("用户名已存在,请重新输入!");isNewUser = false;break;}}} while (!isNewUser); //新用户会跳出循环,不再要求重新输入System.out.print("请输入密码:");String passwords = scanner.next();boolean isFull = true; //判断当前数组是否装满for (int i = 0; i < USERNAMES.length; i++){if (USERNAMES[i] == null){isFull = false;break;}}if(isFull){String[] newUSERNAMES=new String[USERNAMES.length+10];String[] newPASSWORDS=new String[PASSWORDS.length+10];//arraycopy可以实现一个数组的指定个数元素负责到另一个数组中//将USERNAMES数组里从索引为0的元素开始,复制到newUSERNAMES数组里索引为0的位置,复制USERNAMES.length个元素System.arraycopy(USERNAMES,0,newUSERNAMES,0,USERNAMES.length);System.arraycopy(PASSWORDS,0,newPASSWORDS,0,PASSWORDS.length);USERNAMES=newUSERNAMES;PASSWORDS=newPASSWORDS;}for(int i=0;i<USERNAMES.length;i++){if(USERNAMES[i]==null){USERNAMES[i]=usernames;PASSWORDS[i]=passwords;System.out.println("注册成功!");break;}}}

开发完成之后,我们就可以单独对这样一个注册的小单元进行单元测试。

第二步,写完注册,并且测试没问题之后,开发这个时候进行登录的开发。

/*登录功能:* 键盘输入用户名与密码* 使用for循环+if语句验证输入的用户名和密码是否正确*/public static void login(){ //登录for(int retry=1;retry<=3;retry++){System.out.print("请输入注册用户名:");String usernames = scanner.next();System.out.print("请输入密码:");String passwords = scanner.next();for(int i=0;i<USERNAMES.length;i++){if(passwords!=null){if(usernames.equals(USERNAMES[i])&&passwords.equals(PASSWORDS[i])){System.out.println("登录成功!");return;}}}System.out.println("登录失败 "+retry+" 次,请重新输入!");}System.out.println("登录失败超过三次,退出登录功能!");}

开发完成之后,我们就可以单独对这样一个登录的小单元进行单元测试。

第三步,注册和登录开发并且测试没有问题之后,开发这个时候,可以菜单显示等具体功能的编写。代码如下:

public static void menu(){//菜单 System.out.println("------------XXX系统------------");System.out.println("1.登录功能(login)");System.out.println("2.注册功能(register)");System.out.println("3.查看(show)");System.out.println("0.退出(exit)");System.out.println("------------XXX系统------------");}

第四步,菜单显示开发并且经过测试之后也没有问题,我们就可以进行查看功能的代码

public static void show(){System.out.println("系统当前存在的用户为:");for (int i=0;i<USERNAMES.length;i++){if(USERNAMES[i]!=null){System.out.println("用户名:"+USERNAMES[i]+",密码:"+PASSWORDS[i]);}}}

第五步,查看这样一个单元的代码没问题之后,我们下来可以进行主功能入口的编写,代码样例如下:

//使用static修饰属性,则称该属性为静态属性(或全局属性)static Scanner scanner =new Scanner(System.in);// 存储用户名和密码public static String[] USERNAMES = new String[3];public static String[] PASSWORDS = new String[3];public static void main(String[] args){USERNAMES[0]="JAVA";PASSWORDS[0]="java";while(true){menu(); //调用menu()方法System.out.print("请选择功能:");int choice = scanner.nextInt();switch (choice){case 1:login(); break; //输入1,调用login()方法case 2:register(); break; //输入2,调用register()方法case 3:show(); break; //输入3,调用show()方法default:System.out.println("系统退出!");System.exit(0); //输入0,退出程序执行}}}

以上每一步都是我们对单独的模块或者说是单元进行的单元测试。

这就是我们测试的第一步,也就是单元测试。

就像是在盖房子的时候,第一步,我们单独对每块砖头的质量进行测试一样,如果某一块砖头有问题,那就代表着到时候盖出来的房子是有问题的。

同理,上述的某个方法出现问题的时候,也就代表着整个软件的功能也是肯定会存在问题。

单元测试完毕之后,下来就要进行的是集成测试。

集成测试的概念可以参考我上篇文章写的,其实就是把之前单元测试没有问题的代码方法,串联起来进行测试。

比如:上面的注册和登录都没有问题之后,我们要把这两个功能联合集成在一起,从注册一个账号,再用这个注册的账号进行登录,整个流程都没有问题,在测试下登录成功之后能不能进行菜单的显示。

这就好比我们盖房子一样,单元测试的每一个砖头都没有问题,之后,我们下来要进行的就是将这些砖头拼接成墙面,地面,天花板,然后测试这些墙面,地面,天花板都没有问题。

集成测试都没有问题之后,下来我们就是对整个系统进行整体的测试,就叫做系统测试,

将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试。

我们不仅要测试注册,登录,显示功能,还要将软件结合实际的电脑手机等硬件设备进行检测,甚至还要尝试多个人共同使用有没有问题,所以要对功能、性能以及软件所运行的软硬件环境进行测试。这就跟盖房子一样,前面集成测试已经将砖头垒成了墙面,地面,天花板等等,现在就相当于把这些都合成一个房子。我们不仅要对功能(能不能住人,放置物品),性能(抗不抗风吹,日晒,雨淋,抗不抗地震),所运行的软硬件环境(房子盖在海边,沙漠,山上,平原)等一系列整体因素的测试。

因为很多时候,单元测试和集成测试都是开发内部组织内测,所以作为测试人员,我们大部分的时间还是在这个阶段为主。

系统测试完成之后,下来就需要把软件交给对应的人员进行验收测试,比如产品经理当初提出的软件设计,他就会按照对应的文档检查软件开发完成之后,是否能满足他当时的设计文档。比如可以交给对应的用户进行使用,检测软件是否满足他们的诉求。这也就跟盖房子测试完了之后,最终还是要由房子的设计人员对照对应的图纸进行验证或者交给用户使用一样。

所以按照开发阶段划分整个测试过程,分为单元测试,集成测试,系统测试和验收测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

androidStudio 没有新建flutter工程的入口?

装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选

鸿蒙崛起:互联网大厂加速鸿蒙原生应用开发,人才争夺战打响

随着华为鸿蒙系统的发布和不断推进&#xff0c;一场以鸿蒙为中心的生态竞争已经拉开帷幕。近日&#xff0c;网易、美团等多家互联网公司发布了与鸿蒙系统有关的岗位招聘&#xff0c;加速推进鸿蒙原生应用开发转型。这种趋势表明&#xff0c;鸿蒙系统已经引起了行业的广泛关注&a…

【Unity引擎技术整合】 Unity学习路线 | 知识汇总 | 持续更新 | 保持乐趣 | 共同成长

前言 本文对Unity引擎的知识进行了一个整理总结&#xff0c;基本包含了Unity中大部分的知识介绍。网上也有很多Unity相关的学习资料&#xff0c;但大多数都不成体系&#xff0c;学起来的时候难免会东奔西走的摸不着头脑。本文整理的多数文章都是有对应的系列性文章专栏&#x…

如何修改Anaconda的Jupyter notebook的默认启动路径

1.打开Anaconda控制台 2.输入下面的命令 jupyter notebook --generate-config 这个命令的作用是生成 Jupyter notebook 的配置文件。如果你是第一次运行&#xff0c;会直接生成这个文件。如果曾经运行过这个命令&#xff0c;就会像下图一样问你时候要覆盖原来的文件。这个时候…

听GPT 讲Rust源代码--compiler(2)

File: rust/compiler/rustc_codegen_cranelift/build_system/prepare.rs 在Rust源代码中&#xff0c;rust/compiler/rustc_codegen_cranelift/build_system/prepare.rs文件的作用是为Cranelift代码生成器构建系统准备依赖项。 具体来说&#xff0c;该文件的主要目标是处理Crane…

C语言注意点(2)

1.使用pow函数的相关问题 局部变量n0 while(num/pow(10,n)) n; 为什么不可行 printf("%d",num/pow(10,4)%10) 为什么要提前用temp先引出来 答&#xff1a;pow函数的返回值为double类型&#xff0c;1.终止条件不会满足 2.num/pow(10,4)结果为浮点型&#xff0c;浮…

为即将到来的量子攻击做好准备的 4 个步骤

当谈到网络和技术领域时&#xff0c;一场风暴正在酝酿——这场风暴有可能摧毁我们数字安全的根本结构。这场风暴被称为 Q-Day&#xff0c;是即将到来的量子计算时代的简写&#xff0c;届时量子计算机的功能将使最复杂的加密算法变得过时。 这场量子革命正以惊人的速度到来&am…

如何使用Node.js快速创建本地HTTP服务器并实现公网访问服务端

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

三、C语言中的分支与循环—while循环 (5)

本章分支结构的学习内容如下&#xff1a; 三、C语言中的分支与循环—if语句 (1) 三、C语言中的分支与循环—关系操作符 (2) 三、C语言中的分支与循环—条件操作符 与逻辑操作符(3) 三、C语言中的分支与循环—switch语句&#xff08;4&#xff09;分支结构 完 本章循环结…

2023年郑州轻工业大学软件学院数据结构实验五-查找与排序(详解+源码C语言版+运行结果)

实验要求 一、实验目的 1&#xff0e;掌握常用的查找和排序算法思想&#xff1b; 2&#xff0e;能够用所学过的查找和排序算法解决生活中的实际应用问题。 二、课程目标 支撑课程目标&#xff08;4&#xff09;&#xff1a;能够在软件开发过程中&#xff0c;针对特定需求综…

Nginx 代理静态资源,解决跨域问题

&#x1f602; 背景&#xff1a;移动端 H5 项目&#xff0c;依赖了一个外部的 JS 文件。访问时&#xff0c;出现跨域&#xff0c;导致请求被 block。 当前域名&#xff1a;https://tmcopss.test.com要访问的 JS 文件&#xff1a;https://tm.test.com/public/scripts/y-jssdk.j…

漏洞复现-海康威视网络对讲广播系统远程命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

基于Java (spring-boot)的在线培训考试系统

一、项目介绍 在线培训系统是一款基于SpringBootVue开发的考试系统。一款多角色在线培训考试系统&#xff0c;系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能&#xff0c;考试流程完善。 多角色&#xff1a;多…

基于蝴蝶算法优化的Elman神经网络数据预测 - 附代码

基于蝴蝶算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蝴蝶算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于蝴蝶优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

100天精通Python(实用脚本篇)——第111天:批量将PDF转Word文档(附上脚本代码)

文章目录 专栏导读1. 将PDF转Word文档需求2. 模块安装3. 模块介绍4. 注意事项5. 完整代码实现6. 运行结果书籍推荐 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业》&#xff1a;本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教…

GRU算法

前置知识&#xff1a;RNN&#xff0c;LSTM LSTM需要训练的参数很多&#xff0c;极消耗计算资源。GRU是一种LSTM的改进算法&#xff0c;参数更少&#xff0c;更容易训练。 它将忘记门和输入门合并成为一个单一的更新门&#xff0c;同时合并了数据单元状态和隐藏状态&#xff0…

CSS 缩减顶部动画

<template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container" mou…

MATLAB指令

01--根据数学公式进行绘制 1.绘制连续函数 ①一元函数 t0:0.1:10; y3*t2; plot(t,y) ②一元二次函数 t0:0.1:10; yt.*t; plot(t,y) 注意此处应为点乘 ③一元3次 t0:0.1:10; yt.*t.*t; plot(t,y) ④y1/t t0:0.1:10; y1./t; plot(t,y) ⑤yexp(t) t0:0.1:10; yexp(2*t); p…

计算机基础面试题 |03.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Python爬虫---selenium基本使用

为什么使用selenium&#xff1f; 使用urllib.request.urlopen()模拟浏览器有时候获取不到数据,所以使用selenium (1) selenium是一个用于web应用程序测试的工具 (2) selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样 (3) 支持通过各种driver (FirfoxDri…