软件测试理论

一.软件开发流程

软件开发流程就是,软件的生命周期,步骤如下:

需求分析------计划------设计------编码------测试------运行维护

而每个阶段所需要完成的任务和产出成果也是不一样的

1.需求分析

内容:分析用户需求是否合理,分别从市场需求、技术等方面进行分析

产出:输出需求等文档

2.计划

内容:计划出多长时间内完成该需求,每段时间具体完成哪些功能

产出:输出计划等文档

3.设计

内容:将需求细化成一个个任务,进行技术设计(架构设计、接口设计、采用什么技术等)

产出:输出技术等文档

4.编码

内容:开发人员参考需求、计划、设计、交互图等文件进行代码编写

产出:代码文件等文档

5.测试

内容:对软件进行测试,参考测试用例对软件进行测试

产出:测试用例、测试设计与计划、测试报告等文档

6.运行维护

内容:项目进行上线,并对产品进行线上维护,包括三方面,分别为修复性维护(修复bug)、完善性维护(完善功能)和预防性维护(进行防护)

二.常见开发模型

1.瀑布模型

其实就是刚刚软件生命周期的顺序

优点/特点:强调开发的阶段性、线性结构,每个阶段只执行一次、是其他模型的基础框架

缺点:测试后置(会导致项目大面积返工、留给测试时间若不充足,将缺陷直接暴露给用户)、周期太长,产品很迟才能被看到和使用,可能导致需求/功能过时

适用场景:需求固定的小项目

2.螺旋模型

采用渐进式开发模型

优点:强调严格的全过程风险管理、强调各开发阶段的质量、增加风险分析和原型

缺点:存在的风险性和风险管理人员的技能水平有直接关系、项目成本太高

适用场景:规模庞大、复杂度高、风险大的项目

3.增量模型、迭代模型

适用场景:大型项目、需求不明确

4.敏捷模型

即需求被分解成许多可以增量开发的小部分,然后采用迭代开发。每次迭代都旨在小而易于管理,并且只能在几周内完成。

敏捷模型的四个特点:轻文档,轻流程,重目标,重产出

其中Scrum是敏捷模型中的一种,在scrum模型中,主要有三个角色和五个重要会议

三个角色:产品经理+项目经理+研发团队

产品经理:负责制定发布计划

项目经理:负责召开各种会议,协调项目

研发团队:完成每一次迭代的目标

五个重要会议:发布计划会议+迭代计划会议+每日例会+演示会议+回顾会议

发布计划会议:发布计划

迭代计划会议:对任务进行分解

每日例会:汇报昨天完成的进度,以及今天计划完成什么

演示会议:展示本次迭代的成果

回顾会议:进行总结,发现不足,制定改进计划

三.测试模型

1.V模型

优点:标注了测试过程中存在不同类型的测试

缺点:仍然测试后置

2.W模型(双V模型)

优点:有利于尽早地全面的发现问题

缺点:仍然保持一种线性的前后关系

三.Bug

1.bug的基本要素

描述bug的基本要素:问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果

例如

问题出现的版本:谷歌浏览器版本123.0.6312.123(正式版本)(64 位)

问题出现的环境:Windows家庭版

问题出现的步骤:

1.打开谷歌浏览器,输入网址https://www.101eduyun.com/

2.等待首页页面渲染完成

预期结果:二维码与登录模块不会出现遮挡,二维码可以正常扫描

实际结果:二维码被登录模块遮挡,二维码扫描失败

2.bug级别

一般分为:崩溃、严重、一般、次要

崩溃则代表主要功能完全丧失,必须立刻中止当前版本

严重则代表主要功能部分丧失,没被影响的功能可以继续

一般则代表功能没有完全实现但不影响使用

次要则代表一些细节优化问题

根据bug级别来决定处理的优先级

3.bug的生命周期


四.测试用例

测试用例是一组集合,包括测试环境、操作步骤、测试数据、预期结果等

例如:

1.测试用例的方面

主要从以下方面进行设计测试用例

1.功能测试

即该功能是否按照文档逻辑所开发

2.界面测试

整体界面是否与设计图要求一致,以及界面元素是否能被点击

3.性能测试

判断该软件的性能如何,高不高效

4.兼容性测试

在不同的硬件和系统上,是否都能按照预期所展示

5.易用性测试

是否有提示引导,方便用户上手

6.安全测试

是否会有泄密等安全情况,包括隐私数据明文显示,参数未强校验导致SQL注入,越权(普通用户也可以执行管理员权限的操作)

7.弱网测试

在网络差的情况下是否能尽可能地保证用户体验

8.安装卸载测试

该软件是否能正常的安装和卸载

2.测试用例的设计方法

1.等价类

即以一个测试用例,等价所有该类的测试用例

其中分为有效等价类和无效等价类

其中符合要求的测试用例就是有效等价类(长度6-15),不符合要求的测试用例就是无效等价类(长度小于6和大于15)

2.边界值

边界值包括:边界值+次边界值

丰富刚刚等价类的测试用例

3.正交法

通过正交法,可以将所有排列组合的情况下,选出更有代表性的情况进行试验

其中可以通过allparis工具来进行生成正交表

例如创建一个新的文本文件new.txt,复制excel表格的因素和水平,直接粘贴到new.txt保持退出

然后在allparis安装路径下打开cmd
命令:allparis.exe new.txt>zhengjiao.txt

最后生成的正交表就保存在zhengjiao.txt里面

4.判定表法

以更直观的方法来编写测试用例

5.场景法

场景主要包括4种主要的类型:正常的用例场景、备选的用例场景、异常的用例场景、假定推测的场景

通过在不同的场景下,构造测试用例

6.错误猜测法

根据之前遇到过的类似的功能,提出一些常见的错误,主要通过个人的经验和直觉。

五.测试的分类

1.按照测试目标分类

包括界面测试、功能测试、性能测试、可靠性测试(系统能正常运行的能力或程度)、安全性测试、易用性测试

编写测试用例就主要通过测试目标进行构造的

2.按照执行方式分类

分为静态测试和动态测试

静态测试:也就是不运行程序,仅仅是静态地检查代码、界面或文档中可能出现的错误

动态测试:对实际运行的程序进行测试,输入相应的测试数据,检查实际输出结果和预期结果是否相符

3.按照测试方式

分为三种:白盒、黑盒、灰盒

白盒:

其中白盒的意思就是能看到其内部代码,是透明的,然后根据程序的逻辑进行设计测试用例

白盒常见测试方法:

1.语句覆盖

所以根据用例1,所有的语句都被执行到

2.判定覆盖

要求每个判定情况都覆盖到

3.条件覆盖

每个条件的T和F都被覆盖到

4.判定条件覆盖

二合一,使得既满足判定覆盖也满足条件覆盖

5.路径覆盖

代码执行的先后顺序全部覆盖

黑盒:

也就是不需要了解代码的实现,只用关注输入和输出,中间的过程不用管

其中方法就有等价类、边界值、因果图、场景法、错误猜测法等

灰盒:

是介于白盒和黑盒之间的一种测试,多用于集成测试阶段

4.按照测试阶段分类

单元测试:对最小组成单元进行测试,主要采用白盒测试

集成测试:对系统的接口及集成后的功能进行正确性检测的测试工作

系统测试:进行整体测试,验证系统功能性和非功能性需求的实现,其中主要包括冒烟测试和回归测试。

冒烟测试:只需要测试系统能否成功打开,主流程是否可以走通即可

回归测试:当修改了旧代码后,重新确认修改没有引入新的错误

验收测试:向软件购买方进行交付,验收该软件是否符合要求

5.按照是否手工测试分类

如果是自己手动测试就是手工测试,由应用程序自动测试,就是自动化测试

6.按照实施组织划分

内测就是a测,即公司内部人员模拟为用户进行测试

公测就是β测,由正式用户在任意时间、任意场合来使用软件,通常采用邀请用户进行测试

第三方测试,就是由独立的第三方公司或组织进行软件测试

7.按照测试地域划分

分为国际化测试和本地测试

国际化测试:需要测试软件在不同语言和地区是否能正常工作,即海外版

本地测试:面向国内的所有测试就是本地测试

相关推荐
databook4 天前
【总结整理】软件测试的反模式
单元测试·测试
大话性能4 天前
Python多线程总结
测试
Apifox5 天前
Apifox CLI + Claude Skills:将接口自动化测试融入研发工作流
前端·后端·测试
阿蔹5 天前
接口测试用例的设计方法
功能测试·接口测试·测试
Lucifer__hell5 天前
【Pytest】笔记
笔记·pytest·测试
阿蔹6 天前
Session与Cookies
selenium·测试
brave and determined6 天前
工程设计类学习(DAY5):揭秘HALT试验:产品极限测试全解析
测试·hass·产品设计·halt·高低温循环·产品寿命实验·产品质量
0和1的舞者7 天前
GUI自动化测试详解(三):测试框架pytest完全指南
自动化测试·python·测试开发·自动化·pytest·测试
嘿嘿7 天前
charles iOS 配置证书,抓取https请求
http·测试