(1)软件相关的知识
(2)软件测试基础
(3)测试方法
(4)测试阶段

一、软件相关的知识
1、什么是软件?(测试对象是什么?)
软件=程序(源程序+目的程序)+数据+文档

2、软件的生命周期(软件的开发流程?软件是怎么做出来的?)
市场调研--项目立项
(1)计划:项目经理编写项目计划,包括3w,what(项目任务)、who(人员分配)、when(时间安排)、项目资源、成本计算、风险评估等等
(2)需求:产品人员(需求分析人员)分析需求,得到需求规格说明书(SRS,包括一般文字需求和界面原型图)
(3)设计:
a、概要设计:软件的架构师完成,包括软件技术架构、总体结构、包含的模块以及模块的接口描述
b、详细设计:软件工程师完成,主要每个模块实现的详细描述
(4)编码:开发人员根据需求、设计文档编写代码,得到程序(源代码、目的程序)
(5)测试:测试人员比对软件的实际效果与预期效果是否一致(程序的bug、数据的bug、文档的bug)
(6)发布上线:运维人员负责发布上线,用户反馈,技术反馈

备注:测试一般在需求阶段介入

3、测试流程(重点)
(1)需求评审:产品人员、开发人员、测试人员展开需求评审会议,目的确认需求是否完善、是否准确、是否可行
(2)测试计划(3w):测试经理编写,是一份管理性文档,主要包括测试范围、人员分配、时间安排、测试资源、风险分析等
(3)测试方案(1h):资深测试工程|高级测试工程师编写,是一份技术性文档,主要包括测试方法、测试策略、测试工具等
(4)测试点分析:测试工程师根据每一个需求分析多个测试点
(5)编写测试用例:测试工程师根据测试点编写测试用例,一般一条用例覆盖一个测试点。
(6)测试用例评审:产品需求分析人员、开发人员、有经验的测试工程师和用例编写者一起展开用例评审会议,目的是确认已写的用例是否正确,以及是否存在遗漏
(7)开发将源代码提测给测试部门
(8)搭建测试环境(做一些操作,让软件可以运行起来,可以操作界面)
(9)冒烟测试(预测试):1-2名有经验的测试工程师针对软件的主要功能进行测试,验证是否存在致命的或是较多的问题,若存在,则冒烟测试不通过,测试活动被挂起(暂停)。只有当冒烟测试通过后,才展开系统执行用例的工作
(10)执行测试用例:测试工程师按照用例的操作步骤,运行操作软件的界面,比对软件的实际结果与用例中的预期结果是否一致,若不一致,则发现了缺陷
(11)提交并跟踪缺陷报告:测试人员在缺陷系统中编写缺陷并提交分配给开发人员
(12)回归测试:分多轮展开回归测试,直至最后一个版本没有发现缺陷,软件即可发布上线。回归测试任务如下:
------验证缺陷是否修复正确
------重复测试
(13)撰写测试总结报告:测试经理或高级测试工程师编写完成,主要包括用例统计、缺陷的统计以及人力统计、遗留缺陷等

4、软件研发模型
(1)瀑布模型
备注:瀑布模型中,测试在编码之后介入
优点:需求稳定,重复工作少,质量相对较高
缺点:周期长,成本相对较高
图片说明
(2)螺旋模型(更新周期3-6个月)
图片说明
(3)敏捷开发模型(更新周期2-4周)
优点:上线快、灵活、周期短、成本相对较对
缺点:需求频繁变更,重复工作多,质量相对降低
(4)V模型
特征:左边是开发流程,右边是测试流程;左边开发环节的输出正好作为右边测试环节的输入
缺点:违反了尽早启动测试的原则,将测试工作安排在编码之后
图片说明
(5)W模型
特征:一个V是开发流程,另一个V是测试流程,强调测试工作与开发工作并行启动。测试V中,左边是关于文档测试及相应阶段的测试设计工作;右边是相应阶段执行测试工作
图片说明

5、项目组成人员
(1)项目经理
(2)需求人员
(3)设计人员
(4)编码人员
(5)测试人员
(6)运维人员
(7)QA:质量保障人员
工作目的:预防缺陷
工作职责:
a、制定规范流程
b、监督项目组成人员按照流程工作
c、评审项目成果,尤其是测试成果
(8)配置管理人员

6、软件缺陷的类型
(1)遗漏:软件中未实现需求中明确规定的内容
(2)错误:软件中的实际效果与需求中描述的不一致
(3)冗余:软件中实现了需求中未明确规定的内容

二、测试基础
1、软件测试定义:
使用人工或自动化手段来运行或测试某个系统的过程,其目的在于测试测试它是否满足规定的需求,或是弄清楚预期结果与实际结果之间的差别

2、软件测试的目的:
(1)发现缺陷
(2)检测软件是否满足规定需求(功能性需求、性能需求、可靠性需求等等)
(3)软件测试无法证明软件不存在缺陷

3、软件测试的原则
(1)所有的测试应该追溯到用户需求
(2)尽早启动测试工作
(3)穷尽测试是不可能的
(4)测试应该由独立的第三方进行
(5)并非所有的缺陷都值得修复
(6)缺陷的群集效应
(7)帕累托法则(28法则):80%的缺陷存在于20%的核心业务模块中
(8)good-enough:既不要做不充分的测试,也不要做过分的测试
(9)杀虫剂怪事(测试用例对缺陷具有免疫)
(10)测试应从小规模到到大规模
(11)前进两步,后退一步(回归测试中需要做重复测试工作)

三、测试方法
1、根据是否关注程序内部结构(根据测试技术划分)
(1)黑盒测试:不需要分析程序源代码,依据需求,在软件界面中做各种场景的输入,验证其输出是否与预期一致
(2)白盒测试:根据详细设计说明书,分析程序的源代码,验证代码逻辑与详细设计说明书是否一致。
(3)灰盒测试:白盒+黑盒测试

2、根据是否动态运行软件
(1)静态测试:不需要运行软件的测试,包括文档测试,代码审查、用例评审、需求评审
(2)动态测试:需要运行软件的测试

3、根据是否使用自动化工具
(1)手工测试
(2)自动化测试

四、测试阶段

1、单元测试:
(1)测试范围:最小单位,如函数,类
(2)测试方法:白盒测试
(3)测试依据:详细设计说明书
(4)评估基准:逻辑覆盖

2、集成测试
(1)测试范围:模块与模块之间的接口,以及集成后的功能
(2)测试方法:灰盒测试
(3)测试依据:概要设计说明书
(4)评估基准:接口覆盖

3、系统测试
(1)测试范围:整个系统的功能及非功能(性能、界面、安全、兼容等等)
(2)测试方法:黑盒测试
(3)测试依据:需求规格说明书
(4)评估基准:需求覆盖

4、验收测试
(1)正式验收测试(外包项目):项目组成员去到客户公司,由客户代表依据合同、验收计划操作检验软件,若软件的实际效果符合客户需求,验收测试通过,否则,验收测试不通过
(2)α测试(自研项目):在开发场地展开,有技术人员指导,由用户代表进行测试,也称为内测
(3)β测试(自研项目):在用户实际场地,无技术人员指导,由用户进行测试,也称为公测

根据第一天的概念试试能不能答出下面的面试问题(答案在前面的概念都能找到)
1、软件测试的对象是?
2、软件的生命周期是怎样的?
3、软件项目组成人员包括哪些?
4、软件测试如何定义?软件测试的目的是什么?
5、说出至少7个软件测试原则。
6、描述软件缺陷的类型?
7、QA的职责包括哪些?
8、软件测试方法是如何分类的?
9、软件测试阶段如何划分?
10、验收测试包括哪些类型?
11、回归测试职责包括?
12、单元测试、集成测试和系统测试的区别?
13、详细描述软件测试流程
14、分别画出V模型和W模型,并总结其特征。