#第一天:软件测试综述和软件生命周期
===========================================================
--理论课程都是以ISTQB初级大纲为依据
#一、软件测试(面试:你怎么理解软件测试?为什么需要软件测试?)
--IEEE:通过人工或自动化的方式对软件进行操作,以判断软件是否满足需求或软件的预期结果和实际结果进行判断的过程
--在规定的条件下对程序进行操作,以发现程序错误,衡量软件的质量,并对其是否满足用户需求进行评估的过程
--测试目的:发现缺陷--》衡量软件质量--》提示决策信息--》满足需求,客户满意
#二、缺陷的不同形态(缺陷不同阶段)
--软件错误:人为的代码错误,存在于代码区块内的问题
--软件缺陷:内部的软件问题,静态的存在,此时软件还未满足缺陷的激活条件
--软件故障:软件在一定条件下运行时,问题开始显现,以动态能见的形式出现
--软件失效:软件故障没排除后造成软件失效直至退出市场
--相互关系:
错误---》缺陷----》故障-----》失效
每一个阶段的问题如果不解决都会在一定条件下造成一个或多个下一个阶段问题
#三、软件生命周期(面试1:项目流程是怎么?你们的项目是怎么开发的?开发流程是什么?测试流程是什么?适当拓展)
(面试2:你们每个阶段有评审会吗?评审会有哪些人员参加?评审会有哪些角色?)
生命周期分为:需求分析--》软件设计--》软件编码--》软件测试--》运行维护
1、需求分析
--是软件的开始,是最重要的阶段,这个阶段可能会贯穿项目始终
测试:确认用户需求是否描述正确,我方人员是否和用户表述的一致。根据需求文档明确测试要点。
产出:需求规格说明书
who:需求分析师
活动:需求分析的同行评审会议。有项目主要人员参与:需求分析人员,设计人员,开发人员,测试人员--(所以项目相关人员都要参加)
作者,评审员,协调员,书记,主席,主持人
2、软件设计(面试1:概设和想设由谁来完成?概设和详设的区别是什么?)
(面试2:设计阶段除了有概设和详设以外,设计还出什么文档?(数据库表模型和相关的建库脚本等也是由设计提供))
--把需求考虑的内容给详细化,数据化,形成相应的设计文档
测试:确认设计内容是否符合需求的要求,进一步熟悉需求,了解项目的设计框架和详细设计逻辑,完成测试用例大纲的设计
产出:概要设计文档(概设)和详细设计文档(详设),测试用例大纲或测试要点(不带测试步骤、预期结果和实际结果的测试用例,由测试人员完成)
who:设计人员,测试人员编写测试用例大纲
活动:概设和详设的评审,测试大纲评审
3、软件编码(面试1:开发在编码的时候你作为测试人员你的任务是什么?--》写测试用例)
--把设计内容给代码化,程序化,变成软件
测试:对代码进行单元测试、白盒测试。根据具体的测试大纲、详细设计和界面原型进行测试用例(主要是编写测试步骤和预期结果)的编写
产出:程序-》项目软件,完整的测试用例(测试负责开发测试用例)
who:开发人员
活动:有可能会有开发代码走查和代码审查
4、软件测试(面试1:你测试的依据是什么?--》根据需求规格说明书来测试)
(面试2:你根据什么测试?--》根据测试用例进行测试)
--对产品进行系统化的严格测试,验证质量结果是否符合需求
测试:根据测试用例进行系统测试,完善测试用例
who:测试人员
5、运行维护
--是所有阶段中最长的,主要是对产品进行维护和更新,软件的维护包括纠错性维护和改进性维护两个方面。当软件不再维护时,意味软件走向死亡
测试:帮助研发确认研究并最终修改缺陷,对更新的内容或版本进行再次测试
who:运维人员
注意:测试人员应该在软件生命周期刚开始的时候就介入,贯穿所有阶段,符合测试原则,测试越早介入约好。
四、测试人员的基本素质(面试1:你觉得作为一名软件测试工程师最重要的是什么?)
怀疑精神:未经测试的产品都有可能有bug
沟通能力:语言的沟通和书面的表达
专注力:测试是需要非常专注
洞察力:有发现问题的预感
逻辑思维:严密的逻辑
心态要求:耐心,不浮躁
学习要求:不断自我提升的学习
责任心:未经测试的产品必须进过测试才能投入市场
五、软件测试基本原则
原则1:测试显示存在缺陷
原则2:穷举测试是不可行的
原则3:测试尽早介入
原则4:缺陷集群性,80%的缺陷是集中20%的代码中
原则5:杀虫剂悖论
原则6:测试活动依赖于测试背景
原则7:不存在缺陷(就是有用系统)的谬论