第一部分:基础概念
1. 软件测试是什么?
在规定的条件下对一个产品或者程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试工程师的任务
2. 软件测试工程师的任务
软件测试工程师主要工作是检查软件是否有bug、是否具有稳定性,写出相应的测试计划、测试规范、测试用例、测试数据、测试报告,及时纠错及时更正,确保产品的正常运转。
3. 测试开发工程师的任务
测试开发的核心职能依然是测试。
只是工程师在具备测试经验、熟练使用测试工具并有一定开发能力的前提下,可以自主开发平台,或对现有的开源工具进行二次开发
最终目的是提升产品的测试效率。
4. 测试开发与开发的联系
测试开发是测试岗位衍生的一个分支,利用开发能力解决测试工作中的问题,
小到生成数据、并发模拟等工具的开发,大到整个自动化测试平台的设计与实现,
旨在提高效率,降低成本。
5. 你知道哪些测试方法?
黑盒测试(也称为功能测试):把测试对象看成一个黑盒子,不需要了解其内部实现,只需要根据需求说明书来检查程序的功能是否满足它的功能说明。(UI自动化测试实现是一个黑盒测试,只是功能测试的案例变成了代码执行)
白盒测试:把测试对象当成一个透明的盒子,针对其代码内部实现进行测试。(一般是大企业 开发来搞)
灰盒测试:介于黑盒测试和白盒测试之间,需要了解一点业务+代码,比如自动化接口测试
单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。
集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。
系统测试:在所有都考虑的情况下,对系统进行测试。
验收测试:第三方进行的确认软件满足需求的测试。
回归测试:开完修改完后,验证之前出现的问题是否还会在新版本中再次出现
6. 你理解的黑盒测试和白盒测试是什么?
黑盒测试常用方法并举例:
等价类划分法
等价类划分是将系统的输入域划分为若干部分,从每个部分选取代表性数据进行测试,一个理想的测试用例能独自发现一类错误。
边界值分析法
边界值分析法是对等价类划分的一种补充,通过优先选择不同等价类间的边界值覆盖有效等价类和无效等价类来更有效的进行测试,因此该方法要和等价类划分法结合使用。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值(验证程序员的>= <=这种写的对不对)
判定表法
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
错误分析法
错误推测法是基于以往的经验和直觉,参照以往的软件系统出现的错误,推测当前被测程序中可能存在的缺陷和错误。
白盒测试常用方法并举例:
强度由低到高:
语句覆盖:设计若干个测试用例,保证程序中的每一个执行语句至少执行一次,是”最弱的覆盖“,难以发现代码中的问题
判定覆盖(分支覆盖):使得程序中每个判断的取真或取假至少经历一次。
条件覆盖:每个条件至少有一次真值或假值(不考虑组合情况)。
判定条件覆盖:包含判定覆盖和条件覆盖。说白了程序中每个判断的取真或取假至少经历一次(判定覆盖),同时每个条件至少有一次真值或假值(条件覆盖)。不难发现判定条件覆盖同时满足判定覆盖和条件覆盖,弥补了两者各自的不足,但是判定条件覆盖并未考虑条件的组合情况。
条件组合覆盖(组合覆盖):每个条件的每种组合至少出现一次。显然,满足条件组合覆盖的测试用例一定是满足判定覆盖、条件覆盖和判定条件覆盖的。
路径覆盖:所有路径至少执行一次。
7. 软件测试的流程是什么?测试人员该从那个阶段进行介入?
需求分析阶段
测试人员会进行需求评审,对产品的功能进行整体把握,根据需求写用例
写测试计划
根据开发计划制定具体的测试时间和人员计划
撰写测试用例
根据详细的需求文档,进行用例的编写
使用思维导图列举测试大纲,尽量发散,想到什么就写什么。先放后收,对知识点进行总结和归纳,标记重点测试模块,删除冗余及重复测试点
可使用边界值法、等价类划分法、错误推测法、因果图法等设计案例
根据测试大纲制定测试用例,需包含模块名、测试优先级、操作步骤、期望结果、测试结果、备注
用例评审
测试作为主导,联合开发、项目经理、PM进行测试用例评审
可先讲解测试大纲,让开发、项目经理对测试用例有个大概后再详细测试用例讲解
执行测试用例
根据测试用例执行测试
发现问题保留现场,记录测试方法,通知开发解决问题
覆盖测试用例之外若有时间可进行探索性测试
缺陷报告编写及提交
将发现的缺陷编写成正式的缺陷报告,提交给开发人员进行缺陷的确认和修复
跟踪BUG修改情况
执行自动化测试,编写脚本,执行,分析,报告
进行性能测试,压力测试等其他测试,执行,分析,调优,报告
8. 什么是单元测试?什么是集成测试?什么是系统测试?什么是回归测试?什么是验收测试?
测试的相关流程:需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试
单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。
集成测试:黑盒和白盒结合,在单元测试的基础上,对单元模块之间的连接和组装进行测试。
系统测试:黑盒测试的一种,是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
回归测试:是指在发生修改之后重新测试先前的测试用例以保证修改的正确性。
验收测试:是部署软件之前的最后一个测试操作。目的是确保软件准备就绪,展示该系统满足用户的需求
9. 单元测试、集成测试、系统测试、验收测试、回归测试这几步最重要的是那一步?
我认为系统测试更重要
因为此时单元测试和集成测试已经完成,能够对软件所有功能进行功能测试,能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足了需求规格的定义,因此我认为系统测试很重要。
10. 测试用例设计的方法有哪些?
等价类划分法
边界值分析法
判定表法
错误推测法
11. Bug
Bug的周期?
提交->确认->分配->修复->验证->关闭