软件测试的基本概念
什么是测试?
概念:是一个过程,测试人员验证软件的特性是否符合需求的过程。
特点:软件测试只是一个样本试验,具有不可穷尽性。
测试是保障软件质量的,有很多公司把测试部门叫做质量保障部门。
测试和开发的区别
工作内容:
- 开发:业务主要以编码为主,通过不同的编程语言,根据用户需求,最终作出软件。
- 测试:编写测试用例,执行和发送测试报告。编写自动化测试用例,编写相关的测试工具。
技能区别:
- 测试:技能广度的掌握
- 测试人员主要对产品进行全方位的测试,外观是否好看,WEB的UI自动化测试,APP的UI自动化,后端的接口测试,性能测试,安全测试……
- 开发:技能深度的掌握
发展前景:
- 开发:初级开发工程师 ->中级开发工程师 -> 高级开发工程师 -> 架构师 > CTO(首席技术官)
- 测试:初级测试工程师 ->中级测试工程师 -> 高级测试工程师 ->架构师 ->项目经理
测试开发和软件测试的区别?
- 测试工程师: 功能测试比较多,设计测试用例,执行测试用例,涉及到的开发工作内容较少的
- 测试开发工程师: 测试工程师的工作内容上加了一些开发工作(开发测试用例,开发测试工具,开发出来的测试工具让测试人员用,提高测试效率)
测试开发和软件开发的软件有什么区别?
- 测试开发,开发出来的软件是测试人员使用。
- 软件开发出来的软件面向的对象是外部对像。
测试和调试的区别
目的:
阶段:
- 调试:开发的时候才进行调试
- 测试:伴随着整个软件生命周期,测试介入的时间比调试早
人员:
- 开发自己调试
- 测试+开发执行(通常情况下,黑盒测试由测试人员执行,部分白盒测试和系统测试是由开发人员执行的)
手段:
- 调试:debug,分析代码逻辑
- 测试:等价类划分法,边界值法
优秀测试人员应该具备的素质
技能:
- 测试用例设计能力
- 编程能力 (编写测试工具,自动化测试用例)
- 技术快速学习的能力 (C语言,python,Java)
- 业务快速学习能力
非技能:
- 一个项目是一堆人写的 (沟通,合作)
- 文字表达能力 (测试用例文字写出来的,编写测试文档,BUG)
- 抗压能力 (3天,1天测完)
- 责任感
1. 什么是需求
这个人想做什么事情,比如:不想学习了,想休息一会儿。
需求的定义:
- 用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成
的任务。该需求一般比较简略,就是一句话。 - 软件需求:通过用户需求转化而成的文档。该需求会详细描述开发人员必须实现的软件功能。 (PM产品经理写的)
开发一个产品,或者测试一个产品,需要拿着软件需求进行测试/开发。软件需求是测试人员进行测试工作的基本依据。
用户需求就是一句话,软件需求是一个文档(详细描述用户需求如何实现)。日常工作中我们通常是用软件需求进行开发/测试。
为什么有需求:软件开发和软件测试工作的目标。
测试人员眼里的需求:
在具体设计测试用例的时候,首先需要搞清楚每一个业务需求对应的多个软件功能需求点,然后分析出
每个软件功能需求点对应的多个测试需求点,然后针对每个测试需求点设计测试用例。
过程如下:业务需求—>软件功能需求点—>测试需求点—>测试用例
以用户登录为例:
如何深入了解需求:
测试工程师在需求分析和设计阶段就开始介入 。参加需求评审会议,查阅文档,积极沟通。
测试用例
概念:是为了实施测试而向被测试的系统提供的一组集合 (测试环境,测试数据,预期结果,操作步骤).
测试用例解决了两大问题:测什么,怎么测。
为什么有测试用例:
- 提高测试人员的工作效率,降低测试人员工作的重复性问题。
- 测试用例是建立自动化测试的基础(自动化就是把测试人员双手解放,让代码代替人员执行测试)
bug
概念:当且仅当软件需求规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。 (预期结果!=执行结果)
当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
软件的生命周期
需求->计划->编码->测试->上线->维护
- 需求:确定软件要做成什么样(也要判断分析需求是否合理,需求是否完整)
- 计划:确定软件什么时候开始开发,什么是时候开始测试,什么时候结束开发,什么时候结束测试,对应的测试人员,开发人员,产品经理…
- 编码:通过软件需求实现软件特性 (写代码)
- 测试:测试人员测试软件是否有缺陷,编写测试报告。
- 上线:将项目推上线上环境,让用户可以访问到
- 维护:项目如果在线上出现问题,此时测试人员协助开发人员定位问题,解决问题。项目还需要优化,测试人员,开发人员需要对项目进行不断地优化。