[Ref]软件测试基础知识

本文全面介绍了软件测试的基础知识,包括黑盒与白盒测试方法、功能测试的不同层面、非功能测试的各种类型,如性能测试、压力测试等,并探讨了回归测试、探索式测试等特殊测试形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
软件测试基础知识
.从测试设计的方法来看,我们知道有两类方法:
Black box ( 黑箱 )
White box ( 白箱 )
 
 
. 功能测试
   在下表所列的测试中,测试的范围有小到大,测试者也由内到外, 从程序开发人员(单元测试)到 测试人员,到一般用户( Alpha/Beta 测试)。
 
测试名称
测试内容
Unit Test
单元测试 在最低的功能 /参数上验证程序的正确性
Functional Test
功能测试 验证模块的功能
Integration Test
集成测试 验证几个互相有依赖关系的模块的功能
Scenario Test
场景测试 验证几个模块是否能够完成一个用户场景
System Test
系统测试 对于整个系统功能的测试
Alpha/Beta Test
外部 软件测试人员( Alpha/Beta 测试员)在实际用户环境中对软件进行全面的测试。
 
 
 
. 非功能测试
测试名称
测试内容
Stress/load test
测试软件在负载情况下能否正常工作
Performance test
测试软件的效能
Accessibility test
测试软件辅助功能测试 测试软件是否向残疾用户提供足够的辅助功能
Localization/Globalization Test
本地化 / 全球化测试
Compatibility Test
兼容性测试
Configuration Test
配置测试 测试软件在各种配置下能否正常工作
Usability Test
可用性测试 测试软件是否好用
Security Test
软件安全性测试
 
. Ad hoc Test, Exploratory Test “探索式”的测试
   “ ad hoc ”测试的测试流程是不可重复的,因为它的测试都是“特定”测试,没法重复。由于这一原因,“ ad hoc ”测试不能自动化,就这一点而言,还达不到 CMM 的第二级 可重复级。 (Ad-hoc 不是缩写, 是“不确定的”意思, ad 是拉丁语,相当于英文中的 “to”
hoc
也是拉丁语,相当于 “this”
ad hoc
表示 特别的,专门的,专为某一事而做的 ,即可作形容词也可作副词。 ad hoc, 一般是 特别的 , 不同于一般的,非正式的 意思。 )
 
.Regression Test回归测试
    Regress的英语定义是:return to a worse or less developed state.  是倒退,退化,退步的意思。
    在软件工程中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那这个模块就出现了一个 “退步”- regression, 从正常工作的稳定状态退化到不正常工作的不稳定状态。
   
    在一个模块的功能逐步完成的同时,和此功能有关的测试用例也同样在完善中。 一旦有关的测试用例通过,我们就得到此模块的功能基准( baseline)
 
    在某某版本,某某模块的某某测试用例是通过的!
 
    如果测试人员发现了在新的构建版本某个测试用例失败了,这就是一个“倒退”,在新版本上运行所有已通过的测试用例以验证没有“退化”情况发生,这个过程就是一个“regression test”.  如果这样的“倒退”是由于模块的功能发生了正常变化(由于设计变更的原因),那么测试用例的基准就要修改,以和新的功能保持一致。
 
    针对一个bug fixed,我们也要作Regression Test,
    a)     验证新的代码的确把缺陷改正了,
    b)    同时要验证新的代码没有把模块的现有功能破坏,没有regression。
 
    所以我不也知道“回归测试”是如何的“回归”,我们可以理解为“回归到以前不正常的状态”。
 
    回归测试最好要自动化 ,因为对于每一个构建都要运行所有回归测试,以保证尽早发现问题。
 
    就是“退化测试吗”?
 
. Scenario/integration/System Test  场景/集成/系统测试
    在软件开发的一定阶段,我们要对一个软件进行全面和系统的测试,以保证软件的各个模块都能共同工作,在各方面都能满足用户的要求。
 
.Performance Test 效能测试
    用户使用软件,不光是希望软件能够提供一定的服务,而且还要求服务的质量要达到一定的水平,软件的效能, 是这些 “非功能需求”,或者说 “服务质量需求”的一部分。
 
 
.Stress Test压力测试
 
   压力测试严格地说不属于效能测试。压力测试要验证的问题是:
   软件在超过设计负载的情况在仍能够返回正常结果,而没有产生严重的副作用或崩溃。
 
 
.Alpha Test, Beta Test
 
    在开发软件的过程中,开发团队希望让用户直接接触到最新版本的软件,以便从用户那里收集反馈,这时开发团队会在开发过程中让 特定的用户( alpha/beta用户)使用正处于开发过程中的版本 ,用户会用特定的反馈渠道( email, BBS)与开发者讨论使用中发现的问题。 
 
 
<think>好的,用户想了解单片机嵌入式的基础知识,我需要一步步梳理清楚,确保回答结构清晰,内容准确。首先,我应该从单片机的基本概念入手,解释什么是单片机,它的组成部分以及特点。然后可能需要介绍常见的单片机类型,比如51系列、AVR、PIC、STM32等,帮助用户了解不同应用场景下的选择。 接下来,可能需要讲解单片机的核心结构,比如CPU、存储器、I/O端口、定时器、中断系统、通信接口等,这些都是基础中的基础。这部分需要详细但不过于深入,保持易懂。然后,关于开发流程,用户可能想知道如何开始一个项目,包括需求分析、选型、开发环境搭建、编程、调试、测试和量产,这些步骤对新手来说很重要。 编程语言方面,C语言是必须提到的,还有汇编语言,但可能C更常用。需要说明为什么选择这些语言。外设部分,比如GPIO、ADC/DAC、PWM、通信接口,这些都是实际应用中常用的模块,用户需要了解它们的作用和基本用法。 开发工具方面,集成开发环境(如Keil、IAR)、仿真器、下载器、调试工具,这些工具的使用方法对开发效率影响很大,可能需要简要介绍。另外,实时操作系统(RTOS)也是一个进阶内容,可以提到FreeRTOS、uCOS等,但可能不需要深入,让用户知道存在这样的系统即可。 应用领域方面,列举一些常见的例子,比如家电、工业控制、汽车电子、物联网,这样用户能更好地理解单片机的实际用途。最后,学习路径建议,从基础到进阶,再到实战项目,帮助用户规划学习步骤。 需要确保所有的数学表达式和公式都按照要求使用$...$或者$$...$$格式,比如在讲解PWM时,占空比公式可能需要用$$D = \frac{T_{on}}{T} \times 100\%$$。同时,保持语言口语化,避免使用专业术语过多,或者遇到术语时适当解释。 可能还需要检查是否有遗漏的重要知识点,比如电源管理、低功耗设计,这些在嵌入式系统中也很重要。另外,是否需要提及硬件和软件的结合,比如电路设计、PCB布局等,但用户可能更关注软件和系统层面的知识,所以可能简要带过。 最后,确保回答结构清晰,分点明确,每个部分有小标题,帮助用户逐步理解。同时,注意用户可能是初学者,所以语言要简洁明了,避免过于复杂的解释。可能需要多次检查LaTeX格式是否正确,比如积分符号、公式中的括号是否闭合,变量是否正确使用斜体等。</think>### 单片机嵌入式基础知识分步解析 --- #### 一、单片机基本概念 1. **定义** 单片机(Single-Chip Microcomputer)是一种集成 **CPU、存储器、I/O端口** 等功能的微型计算机系统,适用于嵌入式控制场景。 $$ \text{单片机} = \text{CPU} + \text{RAM/ROM} + \text{定时器} + \text{通信接口} + \cdots $$ 2. **特点** - **低功耗**:毫瓦级功耗(如$P_{\text{avg}} < 10\text{mW}$) - **实时性**:快速响应外部事件(中断响应时间$<1\mu s$) - **专用性**:针对特定场景优化(如电机控制、传感器采集) --- #### 二、单片机核心结构 1. **CPU** - 8位/16位/32位架构(如8051为8位,STM32为32位) - 时钟频率:$f_{\text{clk}} = 1\text{MHz} \sim 300\text{MHz}$ 2. **存储器** - **ROM**:存储程序(如Flash) - **RAM**:临时数据存储(如$4\text{KB} \sim 256\text{KB}$) 3. **I/O端口** - GPIO(通用输入输出):支持数字信号$0/3.3\text{V}$或$0/5\text{V}$ - 复用功能:UART、SPI、I²C等 4. **外设模块** - **定时器**:生成精确时间间隔(如$T = \frac{1}{f_{\text{clk}}} \times \text{预分频值}$) - **ADC/DAC**:模数/数模转换(如12位ADC,精度$\frac{V_{\text{ref}}}{4096}$) --- #### 三、常见单片机类型 | 类型 | 代表型号 | 特点 | 应用场景 | |------------|----------------|--------------------------|------------------| | 51系列 | AT89C51 | 低成本、易上手 | 简单控制 | | AVR | ATmega328P | 高性能、低功耗 | Arduino项目 | | ARM Cortex | STM32F103 | 32位、丰富外设 | 工业控制 | | ESP系列 | ESP32 | 集成Wi-Fi/蓝牙 | 物联网设备 | --- #### 四、开发流程 1. **需求分析** - 明确输入输出(如:采集温度$T$,控制继电器) - 确定性能指标(如采样率$f_s \geq 100\text{Hz}$) 2. **硬件设计** - 电路原理图设计(如传感器接口、电源模块) - PCB布局(注意抗干扰设计) 3. **软件开发** ```c // 示例:LED闪烁(C语言) #include <reg52.h> void main() { while(1) { P1 = 0x00; // LED亮 delay_ms(500); P1 = 0xFF; // LED灭 delay_ms(500); } } ``` 4. **调试与下载** - 使用JTAG/SWD接口烧录程序 - 逻辑分析仪验证时序(如SPI时钟频率$f_{\text{SCK}}$) --- #### 五、关键知识点 1. **中断系统** - 中断向量表定义优先级 - 响应流程:保存现场 → 执行ISR → 恢复现场 2. **通信协议** - **UART**:异步串口,波特率$B = \frac{f_{\text{clk}}}{16 \times \text{分频系数}}$ - **SPI**:全双工,时钟同步(模式0-3) - **I²C**:双线制,地址寻址($7\text{bit}/10\text{bit}$) 3. **低功耗设计** - 睡眠模式:电流$I < 10\mu A$ - 动态调频:根据负载调整时钟频率 --- #### 六、学习路径建议 1. **初级阶段** - 掌握C语言基础(指针、结构体) - 学习51单片机(如GPIO控制、定时器) 2. **进阶阶段** - 掌握STM32开发(HAL库/寄存器编程) - 学习RTOS(如FreeRTOS任务调度) 3. **实战项目** - 温湿度监控系统(传感器+DISPLAY) - 蓝牙遥控小车(电机驱动+无线通信) --- 通过以上步骤,可系统掌握单片机嵌入式开发的核心技能,逐步实现从理论到实际应用的过渡。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值