为什么要有软件测试
产品功能变得越来越复杂,犯错成本不断上升,避免上线后造成经济损失
测试的目的(定义)
以最小的人力物力,时间成本找出软件中的错误和缺陷
测试人员应该具备的素质
探索精神:乐于思考可能发生的问题,学习新的技能提高测试效率
创造性:对软件提出自己合理的建议
坚持不懈:认真踏实地执行测试计划,严谨负责地完成工作
发现问题的能力:软件出错以后思考并找出错误的原因。
沟通能力:活泼开朗,乐于与产品,开发进行沟通交流,协调工作,为完成高质量的软件而奋斗
手工测试和自动化测试
手工测试有其不可替代的地方,比如人的判断力和审美能力,都是机器不具备的
自动化测试的优点在于,可以通过脚本来完成重复性的测试工作,对经常需要回归的模块进行代码化,提升了测试的效率也解放了人力。同时自动化测试也方便进行线上巡查,保证核心功能和业务的稳定性。
测试类别
- 外观界面(UI)测试
- 功能测试(业务逻辑)
- 易用性测试(好不好用,安排合不合理)
- 性能测试(CPU,响应时间那些)
- 兼容性测试(能不能在别的平台上运行)
- 安全性测试(容不容易犯错)
测试流程
- 需求分析:阅读文档,理解需求,快速熟悉项目
- 制定测试计划:分配人力物力,决定测试方法和范围,时间进度安排
- 设计测试用例
- 执行测试用例
- 缺陷管理与追踪
- 测试报告
测试和开发的关系
测试和开发的目标都是相同的,为了完成高质量的产品
开发注重从无到有,测试注重从有到优
有冲突时,是正常的,大家都是为了完成好的产品。首先测试人员应该重新阅读需求文档保证测试的正确性,确认无误后可以与同事进行讨论,这到底是不是一个BUG;如果还是不能解决问题,可以将开发和产品集中到一起讨论,再进一步则可以请示上级进行判断;同时也应该留意相关问题,以便下次在需求评审和测试用例评审的过程中提出,减小犯错成本。
按阶段分
单元测试:模块,函数,类,方法;一般由开发人员或白盒测试自己完成
集成测试:模块与模块间的内容;还是一般由开发或者白盒完成
系统测试:软件APP,程序,系统,网站;黑盒可以介入测试
验收测试:整个系统;媒体,用户
黑盒白盒的区别
有没有涉及到测试代码的区别
属于黑盒的测试
功能测试
- UI测试
- 业务测试
- 易用性测试
- 兼容性测试(平台,浏览器,数据兼容)
- 性能测试(响应速度,CPU占用率,GPU占用率,内存)
- 稳定性测试(会不会闪退)
- 负载测试(看多人访问的时候占用的资源,直到承受不了)
- 压力测试(保持一定负载长时间运行,看能运行多久)
动态静态测试的区别
就是程序运不运行进行测试的区别
测试用例相关
定义
为了某个特殊目标编制的一组测试输入,执行条件以及预期结果,以便测试程序是否满足某个特殊要求
良好的测试用例应该具备
- 有效性:能够用最短的人力物力和时间情况下测试出准确的结果
- 可复用性:能够进行回归测试
- 易组织性:容易被其他人理解并且使用
- 可评估性:测试用例的结果能够被作为评判软件好坏的重要指标
测试用例的要素
用例编号,标题,前提条件,测试数据,操作步骤,预期结果,实际结果,用例等级(重要程度)
黑盒测试用例设计方法
等价类划分法
有效等价类
对程序来说有意义的测试数据的集合,用于检验程序是否实现了需求说明的功能
无效等价类
对程序来说无意义的测试数据的集合,用于检验程序的健壮性和容错能力。
步骤:
- 确定需求
- 确定有效等价类和无效等价类
- 对每个等价类设计测试用例
边界值测试法
选取程序设定的边界大一点,小一点,边界本身的数据进行测试
和等价类划分的区别在于,等价类可以挑选等价范围内的任意数据作为代表,边界值要求每个边界都作为测试数据
判定表法
条件桩:列出了问题的所有条件
条件项:具体条件的取值
动作桩:列出了所有可能耳朵操作
动作项:具体可能采取的操作
场景法
主要用于冒烟测试
现在的软件几乎都由事件触发流程,触发流程时便形成了场景,根据不同的事件触发形成事件流。
错误推断法
根据测试人员的经验推测哪里容易犯错或者可能犯错,设计测试用例
实际过程中方法的选用
- 业务流程是否正确实现,考虑场景法
- 需要输入数据的地方考虑等价类划分法
- 所有地方都用边界值
- 组合条件使用判定表法
- 错误推断法追加测试用例
白盒测试用例的设计方法
逻辑覆盖法
通过对程序的逻辑结构的遍历,实现对程序的覆盖。是白盒测试中动态测试的主要技术之一
-
语句覆盖:保证程序中每一条可执行语句执行至少一次
-
判定覆盖:保证每个测试节点取得的每种可能的结果至少一次
-
条件覆盖:保证复合判定表达式中,取真取假的情况至少执行一次
-
判定条件覆盖:保证每个简单条件的真假执行一次,每个判定节点的真假也至少执行一次
-
条件组合覆盖:所有简单条件的所有可能取值的组合情况执行至少一次
环路复杂度
V(G) = E-N+2, E是流图中边的数量,N是流图中节点的数量。
缺陷
缺陷就是问题,没完成的,多完成的和实现错误的都是缺陷
性能问题也属于缺陷的一种
缺陷报告
作用是记录测试结果,方便开发人员进行缺陷定位,作为统计的依据之一
书写原则
标题:尽量简短高概括,体现原因和结果
原则:按照描述可以复现问题
内容:
- 测试环境的描述
- 步骤
- 实际结果
- 期望结果
- 附件:截图,所需数据,录像
- 给出建议