【软件测试】基础知识笔记(个人用)


前言

个人用的软件测试基础知识的一个笔记梳理,所有资料均来源于论坛、B站等。

文档更新:
2023-2-5 更新笔记内容,修改文档目录顺序,重新排版了部分笔记


提示:以下是本篇文章正文内容,下面笔记为本人自行整理,仅供参考

一、基础知识

1.软件测试的定义、目的

  • 定义:检验程序是否符合设计规范,排查程序缺陷,预防致命性错误发生。
  • 目的:通过技术手段检验软件程序是否符合需求规格说明书的要求。

2.生命周期

软件生命周期总体经过需求评审、产品设计、UI设计、代码编写、测试执行、用户验收六个阶段;

而测试生命周期为需求评审、计划编写、用例设计、用例执行、缺陷管理(提交Bug、回归测试)、缺陷报告。

3.软件测试过程中常用的工具

  • 思维导图:XMind
  • 流程图绘制工具:Visio、Process On
  • 代码管理工具:SVN、Git
  • PC虚拟机:VMware Workstation 等
  • 移动虚拟机:BlueStacks(蓝叠)等
  • ssh:MobaXterm、Xshell 等
  • ftp:Xftp、FileZilla 等
  • 接口测试工具:Postman 等
  • 抓包工具:Charles 等
  • 性能测试工具:LoadRunner 等
  • 数据库管理工具:Navicat
  • 截图工具:Snipaste 等

4.软件测试执行的首要工作

  • 在任何工作开始之前,首先必须要了解需求,明确功能用途、使用场景、业务流程。
    • 功能用途(这个功能是用来做什么的)
    • 使用场景(这个功能的使用场景是什么)
    • 业务流程(这个功能整理的操作流程、逻辑是什么)

二、用例设计

1.什么是测试用例

  • 测试用例就是用户操作的案例

2.测试用例八大要素

  • 测试用例由用例编码、用例标题、项目/模块、优先级、前置条件、操作步骤、预期结果、实际结果八大要素组成。
    • 书写格式:
      • 用例编码:项目_模块_序号
      • 用例标题:预期结果(测试点)
      • 项目/模块:如题
      • 优先级:排序由P0~P3按重要到次要的顺序,不同公司不同软件不同规定
      • 前置条件:执行用例的前置条件
      • 操作步骤:执行用例的操作过程
      • 预期结果:执行用例的预期结果
      • 实际结果:执行用例的知己结果

3.软件质量模型

  • 用例设计整体围绕软件质量模型的功能性、性能性、兼容性、可靠性、安全性、易用性、可移植性、可维护性八大要素。
    • 其中功能性、性能性、可靠性、易用性、可移植性、可维护性为重点。

4.测试类型

  1. 按测试阶段分为单元测试、集成测试、系统测试、验收测试四个阶段;
  2. 按是否需要执行被测试软件分为静态测试、动态测试;
    1. 静态测试是指不运行软件本身,而是从程序源代码、程序界面和各类文档及中间产品(如产品规格说明书、技术设计文档等)寻找可能存在的错误。
    2. 动态测试是指通过测试用例,发现软件程序所表现的行为不符合需求规格说明书设计或客户需求不一致的地方。
  3. 按测试执行时是否需要人工干预分为手工测试、自动化测试;
    1. 手工测试就是完全由人工完成测试工作;
    2. 自动化测试是指通过自动化测试工具或自动化测试脚本进行测试,测试过程中不需要人工干预。
  4. 需要了解的测试类型
    1. 性能测试:验证软件在正常环境和系统条件下重复使用是否还能满足性能指标;【此处需要用到 LoadRunner 等工具进行测试】
    2. 压力测试:验证软件在高并发(多用户同时操作)的情况下是否还能满足性能指标;【此处需要用到 LoadRunner 等工具进行测试】
    3. 弱网测试:验证软件在网络环境差的情况下,输入输出响应是否还能满足性能指标;【此处需要用到 Charles 等工具进行测试】
    4. 冒烟测试:确认软件基本功能正常,可以进行后续正常的测试;
      • 举个例子:现在有一台计算机,我们要检验它是否能够正常运行,我们将其点亮(开机)的过程就是冒烟测试。
  5. 按是否需要查看代码分为黑盒测试、灰盒测试、白盒测试;
    1. 黑盒测试又称功能测试,是指将软件程序看做一个黑色的盒子,只考虑系统的输入和输出,不考虑系统内部的结构和处理过程;
      • 举个例子:计算机通过冒烟测试后,我们检验它开机之后,音频是否正常、显示是否正常等等的过程就是黑盒测试。
    2. 灰盒测试又称接口测试,是指将软件程序看做一个灰色的盒子,通过系统提供的接口,来检验系统输出和输出;
      • 举个例子:我们将鼠标、键盘、显示器等外部接口插入计算机主机检测是否能够正常输入输出的过程就是灰盒测试。
    3. 白盒测试又称单元测试,是指将软件程序看做一个白色的盒子,从系统内部的结构和处理过程来进行检验;
      • 举个例子:假设计算机现在不能正常点亮,我们打开计算机主机,对其硬件(CPU、内存、硬盘等)进行检测的过程就是白盒测试。

5.常用的测试用例设计方法

5.1.等价类划分法
  1. 说明:在所有测试数据中,具有某种共同特征的数据集合进行划分。
  2. 分类:
    • 有效等价类——满足需求的数据集合;
    • 无效等价类——不满足需求的数据集合。
  3. 步骤:
    1. 明确需求;
    2. 确定有效和无效等价类;
    3. 提取数据编写测试用例;
  4. 方法:按区间、长度、类型、规则等方式进行处理。
  5. 使用场景:针对有大量数据测试输入,但是没办法进行穷举测试的地方。如:输入框、下拉列表、单选复选。

在这里插入图片描述

5.2.边界值分析法
  1. 边界值范围节点

    选取正好等于、刚好大于、刚好小于边界的值作为测试数据。

    • 上点:边界上的点(正好等于)
    • 离点:距离上点最近的点(刚好大于、刚好小于)
    • 内点:范围内的点(区间范围内的数据)
    • 从只占位数中来看,用例最多位7条
  2. 优化口诀:上点必选,内点必选,离点开内闭外

    • 意思是考虑开闭区间,开区间选择内部的离点,闭区间选择外部的离点。
    • 开区间指的是区间边界的两个值不包括在内。公式表示(a,b)
    • 闭区间指的是区间边界的两个值包括在内。公式表示[a,b]
    • 半开半闭区间指的是区间边界一边的值在内,另一边不在内。公式表示(a,b]或[a,b)

在这里插入图片描述

5.3.判定表法
  1. 定义:是一种以表格形式表达多条件逻辑判断的工具
  2. 组成:
    • 条件桩:列出问题中的所有条件,列出条件的次序无关紧要
    • 动作桩:列出问题中可能采取的操作,操作的排序顺序没有约束
    • 条件项:列出条件对应的取值,所有可能情况下的真假值
    • 动作项:列出条件项中各种取值情况下应该采取的动作结果
  3. 规则:
    • 判定表中贯穿条件项和动作项的一列就是一条规则
    • 假设有n个条件,每个条件的取值有两个(0,1),全组合有2的n次方条规则
  4. 使用场景:
    • 有多个输入条件,输出多个结果,输入输出之间有组合关系,输入条件和输出结果之间有依赖(制约)关系
    • 判定表一般适用于条件组合数量较少的情况(4个条件以内)

在这里插入图片描述

5.4.场景法
  1. 说明:场景法又称流程图法,是用流程图描述用户的使用场景,然后通过覆盖流程路径来设计测试用例
    • 流程图:使用标准图形和箭头来表达程序或业务的逻辑
    • 作用:梳理业务逻辑
  2. 意义:
    • 用户使用角度:用户平时使用的不是单个功能,而是多个功能组合起来进行使用
    • 测试人员角度:平时测试都是单个功能点进行测试,容易忽略多个功能的组合测试

在这里插入图片描述

5.5.错误推荐法
  1. 定义:通过经验推测系统可能出现的问题
  2. 思想:根据经验列举出可能出现问题的清单,根据清单分析可能原因,推测可能发现的缺陷
  3. 场景:
    1. 时间紧张、任务量大时,根据之前类似的项目经验,找出容易出错的模块,重点测试
    2. 时间宽裕时,通过方法列举出之前出现问题的模块,再次进行测试
    3. 当项目用例执行完毕,且BUG修复完成,上线时间紧张时使用

三、缺陷管理

1.定义

  • 软件使用过程中存在的任何问题都叫软件的缺陷,简称BUG。

2.判定标准

  1. 少功能——软件未实现需求规格说明书明确要求的功能;
  2. 功能错误——软件出现了需求规格说明书指明不应该出现的错误;
  3. 多功能——软件实现的功能超出了需求规格说明书指明的范围;
  4. 隐形功能错误——软件未实现需求规格说明书中未明确但应该实现的需求;
  5. 不易使用——软件测试人员认为软件难以理解、不易使用、运行缓慢、用户体验不好等情况。

3.产生的原因

  1. 需求阶段:需求描述不易理解,有歧义、错误等;
  2. 设计阶段:设计文档存在错误或者缺陷;
  3. 编码阶段:代码出现错误;
  4. 运行阶段:软硬件系统本身故障导致软件缺陷。

4.缺陷生命周期

【注入bug:需求规格说明书 --> 设计 --> 编码】 --> 【发现bug:测试】 --> 【清除bug:故障分类 --> 故障隔离 --> 故障解决】

5.缺陷核心内容

  1. 缺陷描述:发现缺陷以后如何描述,能让相关人员看明白
  2. 缺陷提交:指派人、优先级、故障类型
  3. 缺陷内容:
    • 标题:描述缺陷的核心问题,标题模板如下
      • 测试数据描述+实际结果(预期结果)【推荐使用】
      • 测试数据描述+预期结果(实际结果)
      • 测试数据秒速+实际结果(需求描述)
    • 预置条件:缺陷产生的前提
    • 复现步骤:复现缺陷的过程
    • 预期结果:希望得到的结果
    • 实际结果:实际得到的结果
    • 必要附件:图片、日志等信息(缺陷证据)

6.提交要素

  1. 缺陷报告编号:缺陷的唯一标志
  2. 严重程度:
    • 严重(主功能)
    • 一般(次要功能)
    • 微小(易用性、界面)
    • 建议(建议性问题)
    • 以上严重程度按实际工作中使用工具而定
  3. 优先级:
    • P0(24小时内解决)
    • P1(发布前必须修复)
    • P2(可以在下一个版本前修复)
    • 以上优先级按实际工作中使用工具而定
  4. Bug类型:代码错误、功能错误、界面错误、兼容性、数据错误、易用性、改进建议、架构
  5. 缺陷状态:New、Open、Closed、Postponed

7.缺陷跟踪流程(了解)

在这里插入图片描述

四、测试环境部署

1.操作系统

  • 市场上主流的计算机操作系统为Windows、Linux、Mac三大操作系统;
    • 服务器操作系统有Window Server和Linux,前者需要付费且占用率低,后者免费、安全、稳定、占用率高;
    • 嵌入式操作系统为Linux,其运行稳定、对网络有良好的支持、文件很小,适用于机顶盒、PDA等设备;
  • 市场上主流的移动设备操作系统为Android(安卓,基于Linux)和IOS(苹果)两款操作系统;
    • 新生操作系统有华为的HarmonyOS(鸿蒙,兼容安卓应用程序)。

2.虚拟环境部署

PC环境下使用 VMware Workstation 软件安装系统程序,部署软件程序,安装依赖。

Android环境下可直接使用手机或 BlueStacks 软件安装软件程序包(APK)。

IOS环境目前已知只能使用手机,在 App Store 中安装开发者套件,将软件安装程序包进行安装。

3.常用的 Linux 操作指令

  1. 即可关机:shutdown -h now
  2. 取消关机:shutdown -c
  3. 即可重启:shutdown -r now / reboot now
  4. 取消重启:shutdown -c
  5. 退出Shell:logout
  6. 查看网络接口属性:ifconfig
  7. 查看所有监听端口:netstat -lntp
  8. 查看实时进程状态:top / top | grep <pid/进程名>
  9. 根据pid关闭指定进程:kill -s pid
  10. 查看某个服务:systemctl status <服务名>
  11. 启动某个服务:systemctl start <服务名>
  12. 终止某个服务:systemctl stop <服务名>
  13. 重启某个服务:systemctl restart <服务名>
  14. 开启自启动:systemctl enable <服务名>
  15. 关闭自启动:systemctl disable <服务名>
  16. 进入某个目录:cd <目录名/路径地址>
  17. 查看当前路径:pwd
  18. 查看文件列表:ls -lh
  19. 创建目录:mkdir <目录名>
  20. 创建文件:touch <文件名>
  21. 删除文件:rm -f <文件名>
  22. 删除目录:rmdir <目录名>
  23. 强制删除(注意慎用):rm -rf <文件名/目录名>
  24. 重命名或移动目录:mv <目录名> <路径地址>
  25. 复制文件或目录:cp <文件名/目录名> <路径地址>
  26. 软链接:ln -s <文件名/目录名> <指向的文件名/目录名>
  27. 查看文件:cat <文件名> / vim <文件名>
  28. 解压压缩包:tar -xvf xxx.tar / unzip xxx.zip
  29. 安装本地软件包:rpm -ivh xxx.rpm / dpkg -i xxx.deb
  30. 卸载本地软件包:rpm -e <软件包名称> / dpkg -r <软件包名称>
  31. 更新源软件包:yum update / apt-get update
  32. 升级源软件包:yum upgrade / apt-get upgrade
  33. 安装源软件包:yum install <软件包名称> / apt-get install <软件包名称>
  34. 卸载源软件包:yum remove <软件包名称> / apt-get remove <软件包名称>
  35. 用了等死吧:rm -rf /
  36. 其他命令程序可在《菜鸟教程》中有详细资料查看。

五、接口测试简介

1.接口测试的目的

目前绝大多数开发都是前后端分离的,简单的说就是面向接口编程,主要目的是测试接口的数据传输是否正常;接口传输过程中是否做了权限校验,防止跳过前端校验直接攻击接口,非法获取数据。

2.接口测试流程

  1. 获取API接口文档,熟悉接口业务、接口地址(端口)、鉴权方法、传参和结果的格式、错误码;
  2. 编写接口测试用例以及评审
    1. 正例:输入正常的参数,验证接口能够正常返回。(只测试正例的场景:在接口只针对内部系统开放的情况下,可以只测试正例。)
    2. 反例:
      2.1. 鉴权异常:为空、错误、过期等;
      2.2. 参数异常:为空、长度异常、类型异常、其他业务异常等;
      2.3. 其他异常:黑名单、调用次数限制、分页场景等;
      2.4. 兼容异常:一个接口被多端掉用,版本兼容问题。
  3. 执行测试、Bug追踪…

3.接口测试用例

与我们所写的功能测试用例是差不多的

4.市面上的三类接口

  1. 基于 webservice 协议接口,通过 xml 传输数据;(老接口)

  2. 基于 dubbo 协议接口,通过 json 传输数据;(微服务)

  3. 基于 http 协议接口,通过 json 传输数据。(常见)

    • HTTP请求方法:
      • GET:请求指定的页面信息,并返回实体主体;
      • POST:
        • 向指定资源提交数据进行处理请求(例如提交表单或者上传文件);
        • 数据被包含在请求体中;
        • POST 请求可能会导致新的资源的建立和/或已有资源的修改;
    • PUT:从客户端向服务器传送的数据取代指定的文档的内容;
    • DELETE:请求服务器删除指定的页面。
    • HTTP状态码:
      • 200 - 请求成功
      • 301 - 资源(网页等)被永久转移到其它URL
      • 404 - 请求的资源(网页等)不存在
      • 500 - 内部服务器错误
    • HTTP请求头
    • Cookie:这是最重要的请求头信息之一;
    • Host:初始URL中的主机和端口;
    • token:客户端进⾏请求的⼀个令牌。

六、常见工具

1. Jmeter

1.组件及执行顺序
  1. 测试计划:Jmeter测试的起点、容器;
  2. 线程组:模拟用户;
  3. 配置元件:配置请求;
  4. 前置处理器:请求之前的操作;
  5. 定时器:延迟请求;
  6. 逻辑控制器:处理请求逻辑;
  7. 取样器:发送请求的最小单元;
  8. 后置处理器:请求之后的结果;
  9. 断言:判断请求结果是否正常;
  10. 监听器:收集测试结果。

组件的作用域:
结论一:组件可以作用于同级组件;
结论二:组件可以作用于同级组件下的子组件;
结论三:组件可以作用于上级组件(父组件)。

2.常见操作步骤
  1. 添加线程组
  2. 添加配置元件【HTTP请求默认值】、【HTTP Cookie管理器】、【用户定义的变量】
    • 如果需要以 Json 形式传参,需要添加配置元件【HTTP信息头管理器】,并添加【Content-Type:application/json】
  3. 添加取样器【HTTP请求】
    • 如果需要提取返回值,常用有两种方式,添加【后置处理器】
      • 正则表达式提取器
        • 引用名称:按需求填写
        • 正则表达式:为了确保提取参数正确,首先先执行一次请求,在查看结果树中选择【RegExp Tester】查看方式,并在【Regular expression】中输入"需要提取的参数名称":"(.*?)"测试是否能找到,且输入的键必须是唯一的。
        • 模版: 1 1 1 (表示使用第一个正则)
        • 匹配数字:1 (选择第一个结果)
        • 缺省值:default(没有匹配到使用)
      • Json提取器
        • jsonpath语法规则:只能够使用于json数据。
          • $代表根目录、.代表子节点,$.*取根目录下所有子节点,取数组的值通过[下标]
            • 看到{}.key,看到[]下标
          • 变量名:按需求填写
          • Json Path:按语法规则填写
          • 匹配数字:1 (选择第一个结果)
          • 缺省值:default
        • 只能提取一个值
      • 调试取样器:可以查看提取器取值情况
  4. 添加断言【响应断言】、【Json断言】、【BeanShell断言】
    • 响应断言
      • 请求方式:主请求和子请求、只要主请求、只要子请求
      • 选择测试字段:常用响应文本
      • 选择匹配规则:包括和字符串不支持正则,匹配和相等支持正则
    • Json断言
      • Json Path exists:输入需要查找的字段
      • Expected Value:结果值
    • BeanShell断言:需要写语法
  5. 添加监听器【查看结果树】
3.CSV参数化

添加CSV 数据文件设置,添加CSV文件,用于正反例测试。
CSV文件书写,首行字段,后续参数,多字段、参数之间用,隔开。

// data.csv
username,password,code
admin,123456,200
,123456,400
admin,,400

随后,在请求中,参数以全局变量填入。

4.Cookie鉴权

Http Cookie 管理器实现Cookie关联的原理:

  1. 默认作用域在同级别的组件;
  2. 当Jmeter第一次请求服务器时,如果服务器有通过响应头的Set-Cookie有返回Cookie,那么Http Cookie管理器会自动保存这些Cookie的值;
  3. 当Jmeter再次请求服务器时,Http Cookie 管理器就会自动把保存的Cookie通过请求头发送给服务器,实现Cookie关联。
5.函数助手常用函数
  1. 随机数函数 Random**;
  2. 加密函数 digest;
  3. 拓展:BeanShell组件:需要使用 Java 以及 BeanShell 语法自行编写;
  4. 点击帮助可以查看官方文档。

2.Charles

1.定向抓取需要的数据报文

方法一:通过【Proxy】=》【Recording Settings】=》【Include】中设置指定向的ip地址或域名
方法二:通过界面中的【Filter】进行筛选

2.抓取基于https协议的数据报文
  1. 安装SSL根证书
    • 点击【Help】=》【SSL Proxying】=》【Install Charles Root Certificate】
  2. 设置HTTPS代理设置
    1. 点击【Proxy】=》【SSL Proxying Settings】
    2. 勾选【Enable SSL Proxying】
    3. 在【Include】中添加【Host = * , Prot = *】
3.抓取手机的数据报文
  1. 手机和电脑必须在同一网段
  2. 设置手机的代理
    1. 打开手机WIFI界面,设置当前连接的wifi
    2. 找到代理
    3. 输入运行Charles电脑的ip和Charles所设置的端口号
  3. 下载并设置手机的根证书。
    • 手机浏览器中输入【chls.pro/ssl】
    • 如果需要密码则是当前手机锁屏密码
4.网络挟持和篡改参数
  1. 针对需要的请求设置断言
    1. 点击【Proxy】=》【Breakpoint Settings】
    2. 勾选【Enable Breakpoints】
    3. 点击【Add】
    4. 输入请求的对应参数
      1. Scheme:请求类型,可以为空
      2. Protocol:协议类型,一般选https
      3. Host:ip或域名地址
      4. Port:一般填80
      5. Path:url地址
      6. Query:请求参数,一般填*
      7. Request:需要修改发送的参数时勾选
      8. Response:需要修改获取的参数时勾选
  2. 重新发送请求
5.弱网测试
  1. 点击【Proxy】=》【Throttle Settings】
  2. 勾选【Enable Throttling】
  3. 设置传输参数
    1. Throttle perset:Charles预设的类型
    2. Bandwidth(kbps):带宽
      • 带宽定义数据可以传送超过时间上限,这是千比特每秒指定。可以指定上载和下载链接的不同带宽限制。
    3. Utilisation(%):使用率
      • 利用率是总带宽的百分比,可以在任何一个时间使用。它只是作为可用带宽的缩放因子。对于大多数现代互联网连接利用率始终是100%。
    4. Round-trip latency(ms):延时
      • 往返延迟测量客户端和远程服务器之间的第一次往返通信的毫秒延迟。它用于客户端向服务器和服务器向客户端的每次请求。
    5. MTU(bytes):最大传输单元
      • 在任何传输的TCP数据包的最大尺寸。指定MTU不改变的可用带宽,但允许Charles在MTU分配带宽大小的块,导致在每个传输包分割的现实水平。
    6. Reliability(%):可靠率,丢包
      • 可靠性是衡量连接完全失败的可能性。这是非常有用的模拟不可靠的网络条件。可靠性是指定为成功发射10kib消息的可能性,所以,值为50%意味着所有10kib传输一半会成功。较大的邮件或更小的消息或多或少都有可能失败,所以20kib传输将只有25%的成功率和5kib传输成功率约70%。
    7. Stability(%):稳定率,抖动
      • 稳定性是衡量一个连接的可能性是不稳定的,因此降低了质量。这是非常有用的模拟网络,如移动网络,定期连接质量差。如果连接不稳定,则连接的质量会在不稳定的质量范围内随机下降。此质量值,然后应用作为另一个缩放因子的可用带宽。
    8. Unstable quality range(%):不稳定数量范围
      • 此处设置主要针对于Stability中设置中的范围
  4. 以下配置用于模拟不太好的2G蜂窝网络
    • 带宽256 kbps(上传和下载)
    • 利用100%
    • 延迟300 ms
    • MTU为1500字节
    • 可靠性75%
    • 稳定75%
    • 不稳定的质量范围为20%至25%

其他拓展

1.数据库操作指令

1. 显示所有数据库:show databases2. 切换数据库:use data_name;
3. 查询表:select * 或者 字段名 form pet_name;
4. 插入数据:insert into pet_name values'字段1数据''字段2数据'... ,'字段n数据');
5. 修改数据:update pet_name set 字段1 = ‘数据1’,字段2 = ‘数据2’,... ,字段n = ‘数据n’;
6. 删除数据:delete form pet_name where 字段1 = ‘数据1’,字段2 = ‘数据2’,... ,字段n = ‘数据n’;
7. 一般不会让你创建或删除数据库或数据表,其他命令程序可在《菜鸟教程》中有详细资料查看。

2.三次握手和四次挥手简述

  1. 三次握手过程简述
    1. 客户端向服务器发送数据;
    2. 服务器收到数据后,发送确认包给客户端;
    3. 客户端收到确认包后再次发送给服务器,表示收到确认包。
  2. 四次挥手简述过程简述
    1. 客户端向服务器发送需要断开连接的请求;
    2. 服务器收到请求后,发送确认包给客户端,进入等待关闭状态;
    3. 服务器准备好断开连接后,将关闭确认请求发送给客户端,等待客户端确认;
    4. 客户端收到请求后,发送确认包给服务器,服务器收到确认包后,关闭连接;客户端等待一定时间后没有收到服务器发送的包则认为服务器已关闭,则自己也关闭连接。

P.S. 三次握手和四次挥手的详细内容请自行百度,这里的理解还是十分重要的,以上只是我个人的理解并简化梳理,可能存在理解问题

3.编程基础

  1. 面向对象三大特性:多态、继承、封装

  2. 常见数据类型:

    1. 值类型:int、float、double、byte
    2. 引用类型:object、string
  3. 常用方法(以C#为例):

    1. 判断语句
   //if...else if...else
      
   if(boolean_expression)
   {
      //如果布尔表达式为真将执行的语句
   }
   else if(boolean_expression)
   {
      //如果布尔表达式为真将执行的语句
   }
   else
   {
     //如果布尔表达式为假将执行的语句
   }
      
   //switch
   switch(expression){
       case constant-expression  :
          statement(s);
          break; 
       case constant-expression  :
          statement(s);
          break; 
     
       //您可以有任意数量的 case 语句
       default : //可选的
          statement(s);
          break; 
   }
  1. 循环语句
   //for
   for (int i=0;i<10;i++)
   {
      Console.WriteLine(i);
   }
   
   //foreach
   foreach (int element in fibarray)
   {
       Console.WriteLine(element);
   }
   
   //while
   while(i < 10)
   {
       Console.WriteLine(i);
   }
   
   //do...while
   do
   {
       Console.WriteLine(i);
   }while(i < 10);
  1. 循环控制语句
	//break
	for (int i=0;i<10;i++)
	{
	    if(i==5)
	    {
	        //终止循环
	        break;
	    }
	    Console.WriteLine(i);
	}
	   
	//continue
	for (int i=0;i<10;i++)
	{
	    if(i==5)
	    {
	        //跳过本次循环
	        continue;
	    }
	    Console.WriteLine(i);
	}
  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值