1.1 什么是软件工程师
1.1.1 软件工程师是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。
主要有以下职责:
1、指导程序员的工作。
2、参与软件工程系统的设计、开发、测试等过程。
3 、协助工程管理人保证项目的质量。
4 、负责工程中主要功能的代码实现。
5 、解决工程中的关键问题和技术难题。
6 、协调各个程序员的工作,并能与其它软件工程师协作工作。
7、还要编写各种各样的软件说明书,如:需求说明书,概要说明书等
8、考试科目工程师是中级职称,考试的题目包括了计算机体系结构、软件工程、数据库、数据结构、编译原理等计算机学科的基础课程。
1.2 软件之生命周期
1.2.1 立定—需求分析—设计,编码,测试—发布—运行维护—淘汰
如图以下:
1.3 需求分析
1.3.1 测试需求分析
获取测试对象也就是我们最初的工作:测试需求的分析
测试需求的分析为四个部分:
1、明确需求的范围
2、明确每一个功能的业务处理过程
3、不同的功能点作业务的组合
4、挖掘显式需求背后的隐式需求
分别阐述:
1、 明确需求的范围(目标:需求中包括了多少功能点)
1. RTM中的SRS列表(粒度)
2. QC中的需求描述 (不同层次)
3. UML的用例视图 (Actor Usecase)
1.4 编码&测试
1.4.1 编码
编码风格:
编码风格就是书写源程序的习惯、程序代码的逻辑结构与习惯的编程技术。
程序设计风格的要求:
一、使用好程序内部的文档
1、标识符应该具有鲜明的意义,能够提示程序对象代表的实体。
2、程序代码的视觉组织。
3、程序内部的注释。
二、数据说明原则
1、数据说明的次序应该规范化,使数据属性容易查找,有利于测试、排错和维护。
2、当多个变量名用一个语句说明时,应当对这些变量按字母的顺序排列。
3、如果设计了一个复杂的数据结构,应当使用注释,说明这个数据结构的固有特点。
1.4.2 测试
软件测试的目标:
测试阶段的根本目标是尽可能多的发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交付给用户使用。但如果就测试本身而言,软件测试的目标是以最少的时间和人力发现软件中潜在的各种错误和缺陷。
软件测试的原则:
1、避免程序员检查自己的程序。
2、软件测试应尽早的、不断的进行。
3、软件测试不等于程序测试。
4、充分认识错误的集群现象。
5、测试用例应包括测试输入数据和与之对应的输出结果。
6、测试用例的输入数据应包括合理的输入和不合理的输入。
7、严格执行测试计划,避免测试的随意性。
软件测试的方法:
人工测试和基于计算机的测试(黑盒测试和白盒测试)。
1、黑盒测试
把程序看成一个 黑盒子,完全不考虑其内部结构和处理过程,只检查程序的功能是否符合它的需求规格说明。黑盒测试是在软件的接口处进行的,一方面看其是否能对合法的数据得出正确的结果,另一方面看它是否你窝囊废对非法的数据进行正确的处理。黑盒测试是一种宏观功能上的测试,该方法适合测试部门的测试人员或用户。
2、白盒测试
把程序看成一个打开的盒子,测试人员对程序所有逻辑路径进行测试,在不同检查点输出结果,与预期的结果比较,确定程序是否有错。白盒测试是一种程序级的微观上的测试,不适合于大单元、大系统的测试,只适合于很小单元的测试,以及从事软件底层工作、生产构件的测试人员进行的测试。
软件测试与开发的各阶段的关系:
测试步骤
测试用例的设计:
1.4.3 增量模型
1.4.4 迭代模型
1.4.5 V模型
V模型大体可以划分为以下几个不同的阶段步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。
1.4.6 W模型
测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等开发输出的文档同样要测试(这里针对设计文档,一般可以划分为需求设计文档、概要设计文档、详细设计文档和代码文档),也就是说,测试与开发是同步进行的。
从这个角度来说,一个完整合格的测试人员对软件各方面把握程度应该比开发人员更高,一个测试人员要能胜任软件研究任何一个岗位。
W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求文档的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
1.4.7 H模型
这个示意图仅仅演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其他流程可以是任意的开发流程。例如,设计流程或编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以(或者说需要)进行了。
H模型揭示了一个原理:软件测试是一个独立的流程,以独立完整“微循环”流程,参与产品生命周期的各个阶段,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行,只要某个测试达到准备就绪点,测试执行活动就可以开展,并且不同的测试活动可按照某个次序先后进行,但也可以是反复进行的。
1.4.8 X模型
X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。