问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

软件测试基础:架构、方向与测试类型全解析

创作时间:
作者:
@小白创作中心

软件测试基础:架构、方向与测试类型全解析

引用
CSDN
1.
https://blog.csdn.net/weixin_37846886/article/details/139204966

本文详细介绍了软件测试的基础知识,包括软件架构、测试工程师的方向以及各种测试类型。文章内容全面且系统,适合软件测试领域的初学者和从业者阅读。

课程大纲

1、两种架构(Architecture)

1.1、B/S(Browser/Server)

浏览器服务器架构(大体3步):用户通过浏览器向服务器发出请求,服务器处理请求,将结果通过网络返回到用户浏览器展示。

服务器内部,会有应用层处理请求,操作数据库(增删改查),返回用户请求的数据。

通信方式

标准的 Web 协议:http/https。

举例

各种网站、管理系统、云平台、办公协作平台(蓝湖、即时设计……)。

1.2、C/S(Client/Server)

客户端服务器架构:用户在电脑手机等设备上安装客户端,通过客户端将请求发送给服务器端进行处理,服务器端进行计算和处理后将结果返回给客户端。

服务器内部,会有应用层处理请求,操作数据库(增删改查),返回用户请求的数据。

通信方式

socket协议或其他协议。

举例

电脑:QQ、微信、大型游戏。

手机:各种app。

2、软件测试工程师大方向

1.业务测试

web端、移动端(app、小程序、h5)

2.测试开发

服务端测试开发、UI自动化测试、接口自动化测试、性能测试、渗透测试(安全测试)……

大数据测试、AI算法测试、自动驾驶……

3、测试类型

3.1、按开发阶段分

1.单元测试

代码模块(程序的最小单位)的测试,一般由开发完成。

从程序内部结构出发设计用例,验证是否实现设计说明书中的功能、性能、接口、约束条件等。

各模块可平行独立进行。

2.集成测试

模块组装到一起后,测试模块之间、子系统之间是否互相影响功能,即测试系统内部接口。

(再想具体了解,就百度吧!)

3.系统测试

整个系统开发、集成完毕后进行测试,也就是常见的功能测试阶段。

4.验收测试

交付用户前,与客户一起进行,向用户演示、验证软件与需求一致(功能、性能、安全性等)。

3.2、按是否运行程序分

1.静态测试(static test)

不运行程序,不对软件进行输入输出对比预期的验证,只静态地检查程序代码、界面或文档中可能存在的错误。

常见方法:

a.文档测试,验证用户手册和需求说明是否符合用户的实际需求。

b.代码测试,验证代码是否符合相应的标准和规范。

c.界面测试,验证软件的实际界面与需求中的说明是否相符。

2.动态测试(dynamic test)

运行程序,输入数据后查看输出数据是否与预期一致。

常见方法:功能测试、性能测试……

3.3、按是否看代码分

1.黑盒测试

不看代码,直接根据输入输出判断软件是否有错误。

测试方法:功能测试、UI测试(界面测试)、兼容性测试……

2.白盒测试

又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。

测试方法:语句覆盖、判定覆盖、路径覆盖、条件覆盖、判定条件覆盖、条件组合覆盖。

注意:白盒测试可能静态或动态,黑盒也是; 反之亦然。

(想看更多,去百度吧。)

3.灰盒测试

介于白盒测试与黑盒测试之间,多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

3.4、按是否手工执行分

1.手工测试

人工执行测试用例来识别软件中的错误、问题和缺陷。

2.自动化测试

编写脚本自动执行测试用例来保证产品主体功能正确和完整。

3.5、其他

1.文档测试(Documentation Testing)

主要指对软件文档进行审核、验证,确保文档的质量和准确性(完整性、正确性、一致性、易理解性、易浏览性)。

找了一篇关于文档测试的文章:https://blog.csdn.net/2301_76387166/article/details/134643883

2.冒烟测试(Smoke testing)

又叫“版本验证测试”、“高压线测试”。

来源:硬件开发完成后,通电看机器是否冒烟,初步验证是否有问题。

开发与测试共同进行。

新版本开发完成后 ,验证基本/核心的功能和流程能否走通、是否有致命性和阻塞流程bug。通过冒烟,则正式转测,否则打回到开发流程。

(可以通过自动化测试提效。)

3.回归测试(Regression test)

重复执行以前(版本)的全部或部分的相同测试用例,验证软件修改后未影响原有功能。

回归策略有2种:

① 完全回归,运行所有测试用例。最保险、成本最高。用例库不断变大,成本难以控制。

② 部分回归,运行最重要的、关键的、最频繁使用的和可疑的测试用例。有改动的模块或接口,功能未改动部分的测试用例。回归效率更高。

4.交叉测试

测试人员相互交换测试的模块。

优点:防止漏测;避免思维固化,保持测试新鲜感。

注意项:用例管理;明确任务分配;测试人员熟悉系统;测试结果留存,体现在用例中。

5.随机测试(Ad-hoc testing)

根据测试者的经验对软件进行功能和性能抽查。

是执行测试用例的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

对被测软件的一些重要功能进行复测,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试。

可以结合回归测试(Regressive testing)一起进行。

6.探索性测试(Exploratory Testing)

基于敏捷模型的软件测试风格,不是一种具体的软件测试技术。

找了一篇文章,大家自由探索:https://www.cnblogs.com/klb561/p/11997890.html

7.安全测试(Security Testing)

验证系统安全性。3种方法:

① 代码漏扫,扫描代码安全漏洞;

② 渗透测试,使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。真实有效,一般找出来的问题都是正确的,也是较为严重的。

一个致命的缺点:模拟的测试数据只能到达有限的测试点,覆盖率很低。

③ 程序数据扫描。

一篇文章:https://blog.csdn.net/hlsxjh/article/details/131313986

8.alpha测试(开发者内测)

非正式验收测试,类似于用户验收测试,是另一种质量控制。

软件开发完成初期到测试完成之间均可。

由熟悉产品预期功能的产品开发人员和工程师执行。

使用白盒测试和黑盒测试技术来执行。

通过发现和修复在开发初始阶段未解决的故障来微调软件产品,尤其注重界面和特色。

9.beta测试(用户内测)

软件、产品或服务在正式发布之前进行的最后一轮测试。

内部测试和产品发布之间进行。

目标受众抽样试用产品。

发现和修复潜在的问题和Bug。

缩小产品与用户需求之间的差距:获取用户反馈,从而改进和优化产品。

10.兼容性测试(Compatibility testing)

电脑系统:Linux、Windows、Mac……

移动端系统:iOS、android、windows……

手机品牌、型号:按照市场份额选购测试机、三方测试平台。

分辨率:按照市场份额测试。

web不同浏览器:chrome、Firefox、ie……

手机不同浏览器

……

附:课程完整思维导图

参考文章:

  1. 《软件测试的定义及如何进行分类》https://m.elecfans.com/article/998116.html

  2. 《软件测试的定义以及分类》https://www.cnblogs.com/liyongmei/p/10633744.html

  3. 《白盒测试基本方法》https://testerhome.com/topics/14755

B站:【土小帽软件测试(行入门到高级)-哔哩哔哩】 https://b23.tv/1c2U5fN

测试资源(百度网盘):https://pan.baidu.com/s/1Ypm8-VKuPurLtu0bCJovnA?pwd=5eji 提取码: 5eji

【腾讯文档】(流程图)https://docs.qq.com/s/FQZsGpzsiYH9wj26JvSaFW

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号