师资团队由总部统一调配与本地化结合,拥有多名教材编委级别的名师,体系化教学强。# 2024年4月6日
一、今日学习内容
1.1 软件测试的分类
1.1.1 按测试阶段划分
单元测试:针对程序中的最小可测试单元(如函数、类)进行的测试,通常由开发人员完成。
集成测试:在单元测试的基础上,将多个模块组合在一起进行测试,以检查模块间的接口和协作。
系统测试:对整个系统进行全面的测试,验证系统是否符合需求规格说明书。
验收测试:在系统测试之后,由用户或客户进行的测试,以确认系统是否满足业务需求。
1.1.2 按是否查看源代码划分
黑盒测试:不关心内部逻辑,只根据输入和输出验证功能是否正常。
白盒测试:关注内部逻辑和结构,检查代码路径和条件。
灰盒测试:介于黑盒和白盒之间,部分了解内部结构。
1.1.3 按是否运行划分
静态测试:不运行程序,通过检查代码、文档等来发现缺陷。
动态测试:通过运行程序来检查其行为和输出。
1.1.4 按是否自动化划分
手工测试:由测试人员手动执行测试用例。
自动化测试:使用脚本或工具自动执行测试用例。
1.1.5 其他分类
冒烟测试:在正式测试前进行的快速测试,确保基本功能正常。
回归测试:在修改代码后,重新运行之前的测试用例,确保没有引入新的缺陷。
性能测试:测试系统在负载下的性能表现。
安全测试:检查系统的安全性,防止漏洞。
1.2 软件测试的原则
1. 测试显示缺陷的存在:测试只能证明缺陷存在,不能证明没有缺陷。
2. 穷尽测试是不可能的:由于时间和资源的限制,无法测试所有可能的输入和场景。
3. 测试尽早介入:越早发现缺陷,修复成本越低。
4. 缺陷集群性:缺陷往往集中在少数模块中。
5. 杀虫剂悖论:重复相同的测试用例会发现越来越少的缺陷,需要不断更新测试用例。
6. 测试活动依赖于测试背景:不同的项目需要不同的测试策略。
7. 不存在缺陷的谬论:即使系统没有发现缺陷,也不代表它是完美的。
1.3 软件测试模型
1.3.1 瀑布模型
线性顺序模型,每个阶段完成后才能进入下一个阶段。
测试在开发完成后进行,缺陷修复成本高。
1.3.2 V模型
强调测试与开发的并行性,每个开发阶段对应一个测试阶段。
测试在需求分析和设计阶段就开始准备。
1.3.3 W模型
双V模型,开发与测试并行进行,强调测试贯穿整个生命周期。
测试活动从需求阶段就开始介入。
1.3.4 H模型
将测试活动独立出来,强调测试的独立性和迭代性。
测试准备与测试执行分离,*高测试效率。
1.3.5 敏捷测试模型
在敏捷开发中,测试与开发紧密合作,持续测试,快速反馈。
1.4 软件测试流程
1. 需求分析:理解需求,确定测试范围和目标。
2. 测试计划:制定测试策略、资源安排和时间表。
3. 测试设计:设计测试用例和测试数据。
4. 测试执行:运行测试用例,记录结果。
5. 缺陷管理:*交、跟踪和验证缺陷。
6. 测试报告:总结测试结果,评估软件质量。
1.5 软件测试用例
1.5.1 什么是测试用例?
测试用例是一组输入、执行条件和预期结果,用于验证特定功能是否正常。
1.5.2 测试用例的要素
用例编号、用例标题、前置条件、测试步骤、预期结果、实际结果、优先级等。
1.5.3 测试用例的设计方法
等价类划分:将输入划分为有效和无效等价类,从每个类中选取代表性数据。
边界值分析:测试输入边界上的值,如最小值、最大值、略小于最小值、略大于最大值等。
因果图法:分析输入条件之间的逻辑关系,设计测试用例。
场景法:模拟用户实际使用场景设计测试用例。
错误推测法:基于经验推测可能出错的场景。
1.5.4 测试用例的评审
由开发、测试、产品等相关人员共同评审,确保测试用例的完整性和准确性。
1.5.5 测试用例的管理
使用测试管理工具(如TestLink、Jira)管理测试用例的执行和跟踪。
1.6 缺陷管理
1.6.1 什么是缺陷?
软件中存在的错误或问题,导致系统无法正常工作或不符合需求。
1.6.2 缺陷的生命周期
1. 新建:测试人员发现并*交缺陷。
2. 打开:开发人员确认缺陷。
3. 修复:开发人员修复缺陷。
4. 验证:测试人员验证缺陷是否修复。
5. 关闭:缺陷修复完成,关闭缺陷。
6. 拒绝/延迟:如果缺陷无效或暂时不修复,可以拒绝或延迟处理。
1.6.3 缺陷的分类
按严重程度:致命、严重、一般、轻微。
按优先级:高、中、低。
按类型:功能缺陷、界面缺陷、性能缺陷、安全缺陷等。
1.6.4 缺陷报告
缺陷报告应包含标题、描述、步骤、预期结果、实际结果、环境、截图等信息。
1.7 测试工具
1.7.1 测试管理工具
Jira:缺陷跟踪和项目管理工具。
TestLink:开源的测试管理工具。
Quality Center:企业级测试管理工具。
1.7.2 自动化测试工具
Selenium:Web自动化测试工具。
Appium:移动端自动化测试工具。
JMeter:性能测试工具。
Postman:API测试工具。
1.7.3 其他工具
Fiddler/Charles:抓包工具,用于调试和测试网络请求。
Git:版本控制工具,用于管理测试代码和脚本。
---
二、学习总结
今天的学习内容涵盖了软件测试的基础知识,包括测试的分类、原则、模型、流程、测试用例设计和缺陷管理。通过今天的学习,我对软件测试的全貌有了更清晰的认识,理解了测试在软件开发中的重要性以及如何系统地进行测试活动。
2.1 关键点总结
1. 测试分类:了解了不同维度的测试分类,这有助于在实际工作中选择合适的测试策略。
2. 测试原则:掌握了软件测试的基本原则,这些原则是指导测试工作的核心思想。
3. 测试模型:熟悉了常见的测试模型,特别是V模型和W模型,理解了测试与开发的对应关系。
4. 测试流程:明确了从需求分析到测试报告的完整测试流程。
5. 测试用例:学会了如何设计有效的测试用例,并掌握了等价类划分、边界值分析等实用方法。
6. 缺陷管理:了解了缺陷的生命周期和管理方法,这对于*高软件质量至关重要。
7. 测试工具:初步认识了一些常用的测试工具,为后续的实践打下了基础。
2.2 实践建议
尝试使用等价类划分和边界值分析方法设计一些简单的测试用例。
了解并尝试使用一款测试管理工具(如Jira或TestLink)。
在实际项目中应用测试流程,从需求分析开始介入测试活动。
通过今天的学习,我不仅掌握了软件测试的理论知识,还了解了如何将这些知识应用到实际工作中。软件测试是一个系统性的工程,需要综合运用各种方法和技术来保证软件质量。
|