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

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

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

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

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.rhkb.cn/news/229531.html

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

相关文章

VMware 虚拟机 ubuntu 20.04 硬盘扩容方法

前言 最近由于需要编译 【RK3568】的 Linux SDK&#xff0c;发现 虚拟机默认的 200G 空间不足了&#xff0c;因此想增加这个 200G 空间的限制&#xff0c;通过网络上查找了一些方法&#xff0c;加上自己亲自验证&#xff0c;确认 硬盘扩容 正常&#xff0c;方法也比较的容易&a…

P5534 【XR-3】等差数列————C++、C

目录 【XR-3】等差数列题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 解题思路Code运行结果 【XR-3】等差数列 题目描述 小 X 给了你一个等差数列的前两项以及项数&#xff0c;请你求出这个等差数列各项之和。 等差数列&#…

如何使用idea部署springboot项目全过程

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

k8s的陈述式管理

k8s的陈述式管理&#xff1a; 所谓的陈述式管离也就是命令行工具 优点&#xff1a;90%以上都可以满足 对资源的增删查比较方便&#xff0c;对改不是很友好 缺点&#xff1a;命令比较冗长&#xff0c;复杂&#xff0c;难记 声明式&#xff1a; k8s当中的YAML文件来实现资源管…

对接第三方接口鉴权(Spring Boot+Aop+注解实现Api接口签名验证)

前言 一个web系统&#xff0c;从接口的使用范围也可以分为对内和对外两种&#xff0c;对内的接口主要限于一些我们内部系统的调用&#xff0c;多是通过内网进行调用&#xff0c;往往不用考虑太复杂的鉴权操作。但是&#xff0c;对于对外的接口&#xff0c;我们就不得不重视这个…

Axure骚操作:【制作可暂停与不可暂停进度加载条】

目录 一、不可暂停进度条 1.1 前期准备 1.2 效果假想 1.3 适用场景 1.4 实现步骤 &#xff08;1&#xff09;除按钮外的元件设置隐藏 &#xff08;2&#xff09;给按钮添加交互 &#xff08;3&#xff09;给变量值文本标签添加交互 &#xff08;4&#xff09;给进度条矩…

android开发百度地图api实现定位图标随手机方向转动

该功能的实现依赖于手机中的传感器元件如陀螺仪、加速度计等&#xff0c;具体开发详见android的官方开发文档&#xff1a; 传感器概览 | Android 开发者 | Android Developershttps://developer.android.com/guide/topics/sensors/sensors_overview?hlzh-cn要自定义一个传…

zookeeper之集群搭建

1. 集群角色 zookeeper集群下&#xff0c;有3种角色&#xff0c;分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader)&#xff1a; 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保…

【Spring Security】认证之案例的使用、MD5加密、CSRF防御

目录 一、引言 1、什么是SpringSecurity认证 2、为什么使用SpringSecurity之认证 3、实现步骤 二、快速实现&#xff08;案例&#xff09; 1、添加依赖 2、配置 3、导入数据表及相关代码 4、创建登录页及首页 5、创建配置Controller 6、用户认证 6.1、用户对象User…

【LabVIEW FPGA入门】创建第一个LabVIEW FPGA程序

本教程仅以compactRIO&#xff08;FPGA-RT&#xff09;举例 1.系统配置 1.1软件安装 FPGA-RT 1. LabVIEW Development System (Full or Professional) 2. LabVIEW Real-Time Module 3. LabVIEW FPGA Module 4. NI-RIO drivers 1.2硬件配置 1.使用线缆连接CompactRIO至主机…

uniapp的css样式图片大小截图展示

目录 截取图片前截取图片后第一种方式&#xff1a;代码第二种方式&#xff1a;代码最后 截取图片前 截取图片后 第一种方式&#xff1a;代码 <view class"swiper-box-img"><image class"swiper-box-img-img" :src"item.file_path" mod…

ARM CCA机密计算架构软件栈之软件组件介绍

在本节中,您将了解Arm CCA的软件组件,包括Realm World和Monitor Root World。以下图表展示了Arm CCA系统中的软件组件: 在这个图表中,世界之间的边界显示为粗虚线。由较高权限的软件强制执行的较低权限软件组件之间的边界显示为细虚线。例如,非安全EL2处的虚拟机监视器强制…

java企业网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web企业网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Jenkins的Transfers路径怎么配置,解决Transfers配置不生效的问题

Transfers配置: 1.配置Source files: 要填写jar包的相对路径,从当前项目工作空间的根目录开始,看看我的工作空间你就懂了 !如图 我填的是 parent/build/libs/parent-1.0.0.jar,即不要 fdw1/ 的前缀 2.配置Remote directory: 远程目标文件夹,也就是你jar包要放到远程…

第一个Python程序

安装好python解释器之后呢&#xff0c;我们打开PyCharm 这里选择使用本地解释器 注意这个python.exe的路径&#xff0c;AppData是隐藏文件夹 创建完成项目之后&#xff0c;点击new->Python File 写入 print(hello world)输出

分布式【zookeeper面试题12连问】

1. 面试官&#xff1a;工作中使用过Zookeeper嘛&#xff1f;你知道它是什么&#xff0c;有什么用途呢&#xff1f; 「小菜鸡的我&#xff1a;」 有使用过的&#xff0c;使用ZooKeeper作为**「dubbo的注册中心」&#xff0c;使用ZooKeeper实现「分布式锁」**。ZooKeeper&#…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档&#xff1a; https://kafka.apache.org/documentation/#security 在官方文档中&#xff0c;kafka有五种加密认证方式&#xff0c;分别如下&#xff1a; SSL&#xff1a;用于测试环境SASL/GSSAPI (Kerberos) &#xff1a;使用kerberos认证&#xff0c;密码是…

elasticsearch列一:索引模板的使用

概述 近期一直在负责es这块&#xff0c;就想着和大家分享一些使用经验&#xff0c;我们从存储、查询、优化、备份、运维等几个方面来做分享。今天咱们先看下如何更加合理的存储数据。 初见索引模板 记得刚接触es还是18年那会&#xff0c;项目上线后因一些原因导致日志这部分的…

C语言——小细节和小知识7

一、逆序字符串 1、递归1 #include <stdio.h> #include <string.h>void ReverseArray(char *str) {char temp *str;//1int len (int)strlen(str);*str *(str len - 1);//2*(str len - 1) \0;//3if(strlen(str 1) > 2)//只要字符串还大于2&#xff0c;就…

企业微信开发:自建应用:获取企业微信IP段(用于防火墙配置)

概述 在企业微信开发流程中&#xff0c;为了确保与企业微信API的网络通信安全&#xff0c;并适应防火墙配置要求&#xff0c;开发者需要获取企业微信API服务的IP地址范围。这样&#xff0c;仅允许与企业微信官方通信的合法请求通过防火墙&#xff0c;从而保障数据传输的安全性…