什么叫软件测试
软件测试就是测试产品没有错误,同时又证明软件是可以正确运行的
测试和调试的区别
调试一般都在开发期间 ,测试是伴随着整个软件的生命周期, 调试是发现程序中问题并且解决问题, 测试是发现程序中的缺陷
软件测试的目的和原则
目的:验证软件有没有问题
原则:以客户为中心, 遵循软件测试的规范,标准和要求
需求
满足用户期望或者文档条件和权能.
用户需求:比较粗略, 不能帮助开发人员进行开发也不能帮助测试人员写测试用例
软件需求:可以帮助开发人员写代码, 也可以帮助测试人员写测试用例, 较为详细, 通常需要从用户需求中提取.
BUG的定义
当且仅当规格说明书是存在的时候, 此时程序与规格说明书之间是不匹配的, 此时就说明软件是存在BUG的. 当不存在规格说明书的时候, 此时就以用户需求为标准, 如果软件和用户期望的结果不一致, 此时就说明软件是存在BUG的
测试用例
测试用例就是为了实施测试向被测系统提供的一个集合, 包括测试环境, 操作步骤, 测试数据, 预期结果等等
开发模型和测试模型
瀑布模型
start ->需求分析 ->计划 ->设计 ->编码 -> 测试 -> end
瀑布模型使用于一些比较稳定的产品, 发现较小的产品
但是不足之处就是将测试环节一直放到后面, 发现往往是到达后期才会出现, 因此会失去纠错机会
螺旋模型
使用于一些风险较大的产品开发
敏捷中的测试
往往对文档的依赖较小
测试中的V模型
用户需求->需求分析与设计-> 概要设计->详细设计->编码->单元测试->集成测试->系统测试->验收测试
缺点:将测试人员的工作一直推到最后面
测试中的W模型
用户需求->需求分析与设计->概要设计->详细设计->编码->集成->实施->交付
验收测试准备->系统测试准备->集成测试准备->单元测试准备->单元测试->集成测试->系统测试->验收测试
优点:测试和开发同步进行, 测试人员提早进入项目
软件测试生命周期
需求分析->测试计划->测试设计->测试开发->测试执行->测试评估
BUG的级别
崩溃->严重->一般->次要
BUG的生命周期
从open到close
测试用例基本要素
测试用例是为了实施测试而向被测试系统提供的一组集合, 包括测试环境, 操作步骤, 测试数据, 预期结果等
测试用例设计方法
等价类划分法, 边界值测试法, 正交表,场景设计
水杯的测试用例编写
公交卡的测试用例编写
测试分类
单元测试
对软件的单个模块进行测试
测试阶段:编码前或者编码后
测试对象:单个模块
测试依据:代码注释和详细设计文档
测试人员:白盒测试工程师或者开发工程师
测试方法:白盒测试
测试内容:模块接口测试, 局部数据测试, 路经测试,错误处理测试, 边界测试
集成测试
对模块与模块之间进行测试, 同时对相关硬件之间的测试
测试阶段:单元测试之后
测试对象:模块与模块之间的接口
测试人员:白盒测试工程师, 开发工程师
测试依据:单元测试结果和概要设计文档
测试方法:白盒测试和黑盒测试
测试内容:模块之间数据传输, 模块之间功能冲突, 模块组装功能正确性, 全局数据结构
系统测试
对软件的功能,性能以及软件运行的软硬件进行测试, 包括冒烟测试和回归测试. 一般顺序是冒烟测试, 系统测试, 回归测试
测试阶段:集成测试之后
测试对象:整个系统(软硬件)
测试人员:黑盒测试工程师
测试方法:黑盒测试
测试内容:功能, 界面, 可靠性, 易用性, 性能, 易用性, 兼容性, 安全性
测试依据:需求规格说明书
回归测试
当产品经过更改之后测试人员拿到产品的时候此时需要对产品进行再次测试,以确保修改后的内容没有影响到其他功能模块, 以及修改后的模块不会引起新的错误
冒烟测试
每一个新编译需要经过正式测试的软件版本 确保软件基本功能正常, 可以进行正式测试. 其中冒烟测试决定软件是否进入测试阶段
验收测试
软件部署的最后一个环节. 确保软件准备就绪, 按照产品规格说明书, 任务书, 符合购者的产品最初需求
按照测试组织
Alpha Testing:测试人员和开发人员不参与, 除测试和开发之外都可以进行测试, 测试环境是公司预发布环境
Bate Testing:测试人员和开发人员会参与, 测试环境实在客户环境中进行测试
第三方测试:外包测试
按照是否运行测试
静态测试:被测试程序不运行
动态测试:被测试程序运行
按照是否进行手工测试
手工测试:功能测试, 缺点是测试效率低, 但是可以进行探索性测试以及发散思维类测试
自动化测试:让机器代替手工进行软件测试
自动化测试步骤:
完成功能测试
提取手工测试用例, 将其转换为自动化测试用例
通过工具, 代码实现自动化的输入, 自动检测输出结果是否符合预期
自总生成测试报告
程序改进, 脚本优化
按照是否查看代码
白盒测试:查看原代码
黑盒测试:不查看源代码
灰盒测试:白盒测试+黑盒测试
按照地域测试
国际化测试以及本地化测试
按照对象测试划分
界面测试
界面是否美观
文档测试
测试需求文档的正确性, 文档的完整性, 文档的一致性, 文档的易用性, 文档术语
兼容性测试
软件之间能否相互之间正常运行, 软件和硬件之间能否正常运行
产品的开发平台测试, 浏览器测试,软件自身能否向前或者向后兼容,与其他软件兼容,数据兼容