软件测试基础知识

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。

博主主页:Yan. yan.

文章目录

1、什么是软件?

软件是计算机系统中的程序和相关文件或文档的总称。

2、什么是软件测试?

说法一:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

说法二:软件测试就是利用一定的方法对软件的质量或者使用性进行判断和评估的过程。

3、软件测试工程师的工作内容

  • 寻找软件中的bug,并且越早发现越好
  • 确认bug的可重复性以及bug产生的步骤
  • 确认bug是否被解决
  • 测试方法,测试计划,测试平台,测试代码,测试用例,测试文档,测试报告的确定、编写和执行。

4、常见的软件生命周期模型

  • 大爆炸模型:优点:简单,不用学习就会。缺点:产品质量无法保障,尽量避免使用
  • 边做边改模型:优点:快速得到可运行的版本。缺点:计划有些缺乏,导致版本前后变化较大
  • 瀑布模型:优点:计划周密,专业,按部就班实现。缺点:相对难于做到快速开发,以抢占市场,可选择的模型之一
  • 螺旋模型:优点:计划变化同事考虑。

5、软件开发的几个阶段

  • 项目启动阶段:了解客户需求、配置相关资源
  • 项目设计阶段:明确客户需求,确立软件开发、测试的方法
  • 项目执行阶段:开发与测试阶段
  • 项目竣工阶段:软件的上市、后期维护与技术支持

6、软件bug的五个要素

  • 软件没有实现说明书中所列出的功能
  • 软件出现了说明书中提到不应该出现的事情
  • 软件没有实现说明书中没有提到但应该实现的事情
  • 软件非常难于学习、使用,运转速度很慢,用户认为无法达到预期

7、软件测试的分类

  • 黑盒测试:对软件内部如何实现不了解,以外部的视角来视察软件。

黑盒测试方法:等价类边界值,因果图,判定表,错误推测法

  • 白盒测试:白盒测试与黑盒测试相反,需要了解软件中的结构。白盒测试也叫结构化测试,玻璃盒测试。

黑盒测试与白盒测试的优缺点

黑盒测试,

优点:不需要了解软件实现细节,软件内部实现机制更改时,一般不必修改用例实现相对简单,以用户角度出发

缺点:无法保证软件代码内各主要路径都被覆盖到,容易导致测试不很完全

白盒测试,

优点:针对软件代码和路径进行测试,相对易于调试,容易发现bug产生的原因

缺点:对测试人员的编程能力要求高,软件实现代码改变,测试用例一般也需要改变。

  • 功能测试
  • 兼容性测试
  • 性能测试
  • 安全测试
  • 压力测试

8、什么是测试用例

测试用例是描述输入实际值和预期输出行为或者结果的文档,他同时也标识了测试过程结果与约束。

9、测试用例几大要素

标识符,测试内容,输入条件,预期结果,测试环境信息,与其他测试用例的依赖关系,测试用例需要被开发、审阅、使用、维护和保存。

软件测试方法分类:

  1. 白盒、黑盒、灰盒
  2. 单元测试、集成测试、系统测试、验收测试、回归测试、Alpha 测试、Beta 测试
  3. 静态测试和动态测试

设计测试用例的主要方法

  1. 等价类划分
  2. 边界值分析法
  3. 因果图法
  4. 场景法
相关推荐
艾莉丝努力练剑2 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
倔强青铜36 小时前
苦练Python第18天:Python异常处理锦囊
开发语言·python
u_topian6 小时前
【个人笔记】Qt使用的一些易错问题
开发语言·笔记·qt
珊瑚里的鱼7 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
AI+程序员在路上7 小时前
QTextCodec的功能及其在Qt5及Qt6中的演变
开发语言·c++·qt
xingshanchang7 小时前
Matlab的命令行窗口内容的记录-利用diary记录日志/保存命令窗口输出
开发语言·matlab
Risehuxyc7 小时前
C++卸载了会影响电脑正常使用吗?解析C++运行库的作用与卸载后果
开发语言·c++
AI视觉网奇7 小时前
git 访问 github
运维·开发语言·docker
不知道叫什么呀7 小时前
【C】vector和array的区别
java·c语言·开发语言·aigc
liulilittle7 小时前
.NET ExpandoObject 技术原理解析
开发语言·网络·windows·c#·.net·net·动态编程