目录
一、软件与软件测试
软件是计算机系统中的程序和相关文件或文档的总称。
程序+数据+文档
软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
二、软件测试的分类
1. 按测试方法分类:
1)黑盒测试:这种测试方法不考虑内部逻辑和代码结构,只关注输入和输出是否符合预期。
2)白盒测试:与黑盒测试相反,白盒测试关注程序内部的逻辑和代码结构。
3)灰盒测试:结合了黑盒和白盒的特点,既关注输出结果,也关注部分内部结构。
2. 按测试方向分类:
1)功能测试:验证软件的功能是否按照需求规格说明书执行。
2)性能测试:评估软件在特定条件下的响应时间、吞吐量等性能指标。
3)安全测试:检查软件的安全性,防止未授权访问和数据泄露。
4)兼容性测试:确保软件能在不同的硬件、操作系统、网络环境等中正常运行。
3. 按开发阶段分类:
1)单元测试:由开发人员编写,针对软件中的最小可测试单元进行测试。
2)集成测试:在单元测试的基础上,测试多个单元组合在一起是否能正常工作。
3)系统测试:在整个系统集成完成后进行的全面测试。
4)验收测试:用户参与的测试,验证软件是否满足业务需求。
4.按测试状态分类:
1)静态测试:不运行程序,通过分析代码、设计文档等来发现错误。
2)动态测试:运行程序,根据程序的行为来发现错误。
5. 按其他因素分类:
1)自动化测试:使用工具自动执行测试用例,提高测试效率和重复性。
2)敏捷测试:在敏捷开发过程中,测试与开发同步进行,快速迭代。
三、软件的生命周期SDLC
软件的生命周期(SDLC)是软件从产生到最终被废弃的整个过程。
通常包括以下几个阶段:
1、问题定义及规划:
主要确定软件开发的目的及其可行性。制定总体开发计划。
2、需求分析:
在软件开发可行性的情况下,对软件需求实现的哥哥功能进行详细分析,明确客户的需求,输出需求规格说明书(原型图),提交评审。
3、设计:
把需求分析得到的结果转换为软件结构和数据结构,形成系统架构。
概要设计:主要是架构的实现,指搭建架构、表述模块功能、模块接口连接数据传递的实现等事物。
详细设计:对概要设计中的表述进行深入分析等,其中需要包括数据库设计说明。
4、编码:
按照详细设计好的模块功能表,编程人员编写出计算机可运行的程序代码。
5、调试和测试:
在代码完成后,需要通过调试和测试来发现并修复错误,确保软件的质量。
6、验收与运行:
软件完成测试后,用户或客户进行验收,之后软件被部署到生产环境中运行。
7、维护升级:
软件在使用过程中可能会出现问题或者需要更新以满足新的需求,因此需要定期进行维护和升级。
包括计划阶段、分析阶段、实现阶段、测试阶段和运行维护阶段。
四、软件的生命周期模型
一、瀑布模型
瀑布模型是一种经典的软件开发生命周期模型,它的核心思想是将软件开发过程分为一系列严格的阶段,每个阶段完成后才能进入下一个阶段。这些阶段通常包括需求分析、设计、实现、测试、部署和维护。
瀑布模型的特点和优缺点如下:
1. 特点:
1)阶段性:开发过程被划分为几个连续的阶段,每个阶段有明确的任务和输出。
2)顺序性:一个阶段的输出是下一个阶段的输入,过程是线性的,不可迭代。
3)文档驱动:强调文档的作用,每个阶段都需要详细的文档记录。
2. 优点:
1)结构清晰:由于其阶段性,使得项目管理相对简单,易于理解和组织。
2)明确分工:每个阶段的任务和责任分明,便于团队成员了解自己的角色和职责。
3. 缺点:
1)灵活性差:一旦进入下一阶段,返回上一个阶段进行修改会变得复杂和成本高昂。
2)风险高:由于需求的不确定性,项目后期可能会出现较大的变动,导致项目失败。
3)反馈延迟:用户直到测试阶段才能看到产品的实际效果,这可能导致需求与最终产品不匹配。
二、V模型
V模型是一种软件开发过程模型,它强调在软件开发周期的每个阶段中进行测试和验证。
V模型的特点在于其结构形状类似于字母“V”,它明确了开发过程中不同阶段的对应关系,特别是在编码和测试阶段之间。
- 阶段划分:V模型将软件开发分为多个阶段,包括需求分析、系统设计、编码、单元测试、集成测试和系统测试等。
- 对应关系:每个开发阶段都有一个相对应的测试阶段。例如,单元测试对应详细设计阶段,集成测试对应概要设计阶段,系统测试对应用户需求分析阶段。
- 测试重要性:V模型特别强调测试的重要性,确保在软件开发的每个阶段都有相应的测试活动来验证产品的质量。
- 优缺点:V模型的优点在于它提供了清晰的测试阶段和开发阶段的对应关系,有助于团队理解何时进行何种测试。然而,它的缺点是过于严格,可能导致在快速变化的项目中不够灵活。
- 适用范围:V模型适用于那些需求明确且变化不大的项目。对于那些需要快速迭代和灵活性的项目,可能需要结合其他敏捷开发方法来弥补V模型的不足。
在实际使用V模型时,需要注意以下几点:
- 确保每个阶段的输出都经过严格的验证和测试。
- 考虑到V模型的严格性,可以适当结合敏捷开发方法以提高灵活性。
- 对于需求的变更要有充分的准备,以便及时调整测试计划。
三、敏捷开发模型
敏捷开发模型是一种以用户需求为核心,通过迭代和增量的方式进行软件开发的方法。它强调快速反应、快速迭代和价值驱动,以提高产品的开发效率和适应性。
敏捷开发模型的关键特点包括:
1)用户需求为核心:敏捷开发模型关注用户需求的进化,确保软件项目能够及时响应市场和用户的变化。
2)迭代和循序渐进:软件项目被切分成多个子项目,每个子项目的成果都经过测试,并且具备可视、可集成和可运行使用的特征。
3)快速反应和迭代:敏捷开发模型鼓励团队快速响应变化,通过短周期的迭代来不断完善产品。
4)价值驱动:敏捷开发模型强调价值最大化,优先解决对用户最重要的功能需求。
敏捷开发模型的流程通常包括以下几个步骤:
1)目标制定:通过市场调研、业务思路和风险评估来制定公司规划和目标。
2)目标拆解:将公司目标拆解到各个部门,确保每个部门的目标与公司整体目标一致。
3)产品规划:根据目标拆解的结果进行产品规划,确定每个迭代周期内需要完成的功能和任务。
五、软件测试的工作流程
1、测试计划:
测试计划是一份详细描述测试目标、方法、资源和时间表的文档,它为软件测试提供了指导和规划。(测试内容、哪些人、任务分配、测试环境、工具、时间安排)
统筹工作安排——测试负责人/主管/组长
2、测试用例
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。
3、软件在什么情况下可以发布
剩余BUG数量很少+用例执行覆盖率
4、发布流程
开发打包 ——>运维/运营/开发 ——>部署到生产环境 (实现了发布上线)
开发环境:开发人员写代码的环境
测试环境:测试人员进行测试环境(一个或者一个以上)
预发布环境(UAT环境):验收测试(UAT)进行的环境
生产环境:真实用户使用环境