课程大纲
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)一起进行。
随机测试的文章:https://blog.csdn.net/xiao1542/article/details/132718631
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……
手机不同浏览器
……
附:课程完整思维导图
参考文章:
- 《软件测试的定义及如何进行分类》https://m.elecfans.com/article/998116.html
- 《软件测试的定义以及分类》https://www.cnblogs.com/liyongmei/p/10633744.html
- 《白盒测试基本方法》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