20230318软件测试入门
软件测试的定义和好处
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试的好处
Some of the reasons why testing become a very significant and integral part of the field of information technology are as follows. These are the benefits of software testing.
- Cost-effectiveness
- Customer Satisfaction
- Security
- Product Quality
软件测试的各种分类
目前存在多种不同类型的软件测试,而每种软件测试都具有特定的目标和策略:
- 验收测试:验证整个系统是否按预期工作。
- 集成测试:确保软件组件或功能可以一起运行。
- 单元测试:验证每个软件单元是否按预期执行。 单元是应用程序中最小的可测试组件。
- 功能测试:根据功能需求,通过模拟业务场景来检查功能。 黑盒测试是验证功能的常用方法。
- 性能测试:测试软件在不同工作负载下的表现。 例如,负载测试用于评估真实负载条件下的性能。
- 回归测试:检查新功能是否破坏或降低功能的效果。 如果没有时间进行完整的回归测试,那么可以使用健全测试在表面级别验证菜单、功能和命令。
- 压力测试:测试系统在失败之前可以承受多大的压力。 这是一种非功能性测试。
- 可用性测试:验证客户使用系统或 Web 应用程序完成任务的程度。
α测试与β测试区别:对应内测与公测,α测试在开发者提供的环境中进行,而β测试用户较多更接近实际使用的压力
CSDN那篇贴子,对齐做得一坨,所以自己简单做了一个导图
软件/渗透测试
严格意义上来讲软件和渗透测试各有包含
软件测试的一部分是渗透测试(安全测试),而渗透测试则不全是渗透测试
黑盒测试也称为外部测试。在进行黑盒测试时候,事先假定渗透测试人员先期对目标网络的内部结构和所使用的程序完全不了解,从网络外部对其网络安全进行评估。黑盒测试中需要耗费大量的时间来完成对目标信息的收集。除此之外,黑盒测试对渗透测试人员的要求也是最高的。
白盒测试也称为内部测试。在进行白盒测试的时候,渗透测试人员必须事先清楚的知道被测试环境的内部结构和技术细节。相比黑盒测试,白盒测试的目标是明确定义好的,因此,白盒测试无需进行目标范围定义、信息收集等操作。这种测试的目标都是某个特定业务对象,因此相比黑盒测试,白盒测试能给用户目标带来更大的价值。
https://blog.csdn.net/weixin_41686586/article/details/113823284 在这一篇博客中也有看到两者的对比
https://www.xuetangx.com/course/nankai08091002806/12425326?channel=i.area.learn_title 在这个网课中学习到静/动态测试和模糊测试的概念,故拿出来对比
模糊测试的重点是输入大量畸形数据
测试用例
测试用例是用来理清测试思路,同时便于评估工作量,便于工作交接
类似于渗透测试前的信息收集环节后对任务进行规划,为正式测试做准备
而测试用例分类在这篇文章中讲得很细致
上点、离点、内点
上点:是指边界上的点,无论此时的域是开区间还是闭区间,开区间的话,上点就是在域外,闭区间的话,上点就是在域内
离点:是指离上点最近的点,这里就跟是闭区间还是开区间就有关系了,如果是开区间,那么离点就在域内,如果是闭区间,那么离点就在域外
内点:域内的任意点都是内点
而根据上面文章中的案例
有效等价类为有效的,符合需求的类;无效等效类是需要排除的类
需要对每一个无效等价类进行编号并分开进行测试
比较不能理解的是关注点-长度-边界值中离点为10指的是什么
判定表,条件桩/项,动作桩/项
可以理解为条件桩和动作桩是对被测对象的输入对象和动作的限制
而其相对应的项是限制实现与否的真/假值形成的项
判定表是利用这些项的用于理清业务逻辑的表
因果图和正交试验
正交实验暂时无法理解
状态迁移&流程分析
比较易于理解(?)两者可以结合起来看,流程分析是对多种情况的状态迁移进行设计和绘制
软件(测试)工具初识
DevOps(生态?
DevOps is a set of practices that combines software development (Dev) and IT operations (Ops).
Selenium
Selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。
它提供了扩展来模拟用户与浏览器的交互,用于扩展浏览器分配的分发服务器, 以及用于实现 W3C WebDriver 规范 的基础结构, 该 规范 允许您为所有主要 Web 浏览器编写可互换的代码。
PyTest
安装直接pipinstall
MacOS配置需要给终端完全磁盘访问权限
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
- 简单灵活,容易上手
- 支持参数化
- 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
- pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
- 测试用例的skip和xfail处理
- 可以很好的和jenkins集成
- report框架----allure 也支持了pytest