知识总结篇
一、理论知识:
第1章 软件工程要点
1.1 软件
1.1.1 软件定义:
软件由程序,数据和文档组成,开发人员通过写入代码形成一个个程序,整个过程中有数据的输入和输出,从而会形成不同的文档。
1.1.2 软件类型:
按按应用范围划分为:
(1)系统软件(如软件操作系统、数据库管理系统、设备驱动系统、通信处理程序等);
(2)应用软件(如事物软件、实时软件、工程和科学软件、嵌入式软件、娱乐软件、个人计算机软件、人工智能软件等);
(3)工具软件(如文本编辑软件、文件格式化软件、磁盘向磁带数据传输的软件、程序库系统以及支持需求分析、设计、实现、测试和支持管理的软件等)。
1.2 软件危机
1.2.1软件危机产生原因:
(1)对用户的需求不明确是产生软件危机的主要原因之一;
(2)缺乏正确的理论指导;
(3)软件开发规模越来越大;
(4)软件开发复杂度越来越高。
1.2.2具体解决方法:
(1)对计算机软件有一个正确的认识(软件≠程序)。
(2)充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协调配合、共同完成的工程项目。
(3)推广使用在实践中总结出来的开发软件成功技术和方法。
(4)开发和使用更好的软件工具。
1.3软件工程
1.3.1 软件工程概念:
软件工程包括方法、工具和过程。
1.3.2 软件工程框架:
目标+过程+原则
1.3.3 软件生命周期:
定义—设计—实施—测试—部署—运行—维护。
1.3.4 软件生命周期模型:
(1)瀑布模型:
优点:提供了软件开发的基本框架;为项目提供了按阶段划分的检查点;当前一阶段完成后,您只需要去关注后续阶段。
缺点:在项目各个阶段之间极少有反馈;线性模型,早期的错误可能要等到后期才能发现,且只有等到全过程的末期才能见到开发成果,增加开发风险;阶段之间产生大量的文档,增加了管理工作量。
应用场景:在开发时间内需求没有或很少变化;分析设计人员对应用领域很熟悉;低风险项目(对目标、环境很熟悉);用户使用环境很稳定;用户除提出需求以外,很少参与开发。
(2)V模型:
V模型是在瀑布模型基础上演变而来,由于将整个开发过程构造成一个V字形而得名。横向看时,V模型是一一对应的。V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期。
(3)W模型:
W模型由由两个V模型组成的。
(4)迭代模型:
1.3.5 敏捷开发过程
(1)定义:
敏捷开发是一种以用户的需求进化为核心、迭代、循序渐进的开发方法。软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
(2)总体目标:
通过“尽可能早地、持续地对有价值软件的交付”,使客户满意。
(3)敏捷开发的12条原则:
a.最优先要做的是通过尽早、持续交付有价值的软件来使客户满意;
b.即使在开发的后期,需求变更也是允许的;
c.经常交付可工作软件;
d.在整个项目开发期间,业务人员和开发人员最好在一起工作;
e.强化激励机制,为受激励的个人单独构建项目;
f.在团队内部,最富有效果和效率的信息传递方法是面对面交谈;
g.可工作软件是进度的首要度量标准;
h.敏捷过程提倡可持续的开发速度;
i.不断地关注优秀的技能和好的设计,增强敏捷能力;
j.简化:尽量简化你所要做的工作;
k.好的架构、需求和设计出自于组织团队自身;
l.团队要定期的反省如何更有效地工作,并相应地调整自己的行为。
1.4软件开发主流技术:
1.4.1 C/S结构
(1)定义:
C/S结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,克服了终端/主机结构中主机负担过重,用户界面不友好等缺点,因而得到了广泛的应用。
(2)组成:
通常,一个典型的C/S应用程序由4个部分组成:
a.用户界面的显示逻辑,主要是各种图形用户界面GUI;
b.应用逻辑(是根据输入数据来完成业务处理和规则的应用代码;
c.事务逻辑(这是应用程序中用DML语句编写的代码);
d.数据管理(这是应用程序中由DBMS完成访问实际数据库的程序)。
(3)技术特点:
1.4.2 B/S结构
(1)定义:
B/S模式是指在TCP/IP的支持下,以HTTP为传输协议,客户端通过Browser访问Web服务器以及与之相连的后台数据库的技术及体系结构。
(2)技术特点:
a.简化客户端
b.简化系统的开发和维护
c.用户操作变得简单
d.适用于网上信息的发布
第2章 软件测试基础
2.1软件测试基本概念
2.1 软件测试的基本概念
2.1.1 软件测试的定义:
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。
2.1.2 软件测试的目的:
a.发现并纠正软件中的错误来提高软件质量
b.验证软件的功能和性能等满足需求
c.测试报告提供软件质量的相关信息,建立起对软件质量的信心
2.1.3调试和测试的区别:
a.调试是“建设性”的。在源程序内定为错误,分析错误的原因,修改错误,在程序运行时检验程序功能。
B.测试是“破坏性”的。诱发错误,重现错误,定位错误(功能·需求·模块),记录错误。
2.1.4 软件测试的原则:
测试显示缺陷的存在
穷尽测试是不可能的
测试尽早介入
缺陷集群性
杀虫剂悖论
测试活动依赖于测试背景
不存在缺陷(就是有用系统)的谬论
质量度量
2.2 软件测试工作
2.2.1 软件测试过程:
a.测试计划和控制
b.测试需求分析和用例设计
c.实现和执行测试用例
d.评估出口准则和报告
e.结束活动
第3章 基于生命周期的软件测试
3.1生命周期测试的基本概念
3.1.1 软件测试过程:
计划测试——需求分析——设计测试用例——开发测试用例——执行测试用例——测试报告评估。
3.1.2 基于开发生命周期的测试特点
a.在软件开发过程中持续的进行测试
b.在尽可能早的阶段点去介入
c.需要正式的开发流程来支持
d.组建专门的测试团队
e.当软件整体开发活动开始的时候,测试活动就可以开始
3.2 生命周期各个阶段测试要求
3.2.1 需求阶段测试:
(1)测试目标:
(1)测试活动:
a.彻底分析需求的充分性,生成基础测试用例;
b.澄清和确定哪些需求是可测试的,舍去含糊的、不可测试的需求,建立产品需求和确认需求。
3.2.2 设计阶段测试:
(1)
(2)测试任务:
(3)测试活动:
a.在概要设计阶段,测试人员应阐述测试方法和测试评估准则,编写测试计划,成立测试小组,安排具有里程碑的测试日程
b.在详细设计阶段,测试人员要开发或获取确认支持工具,生成功能测试数据和测试用例
3.2.3 编码阶段测试:
(1)测试任务:
a.系统是否可维护
b.解决的首要问题是编码是否和设计一致
c.系统的规格说明是否正确地实现
d.编码是否按照既有的标准进行
e.是否有充分的测试计划评价可执行的程序
f.程序是否提供了足够的文档资料
h.程序内部是否有足够的注释等
(2)测试输出:
3.2.4 测试阶段:
(1)测试关注点:
(2)测试活动:
a.测试阶段要参考第三方的测试反馈
b.测试阶段对成功安装的应用系统所需进行的测试有
1)功能测试:运行部分或全部系统,确认用户的需求被满足
2)符合性测试:验证软件系统与相应的国际标准或国军标的符合程度
3)强度测试:将系统置于强度下进行验收测试,测试系统对极端条件的反应,标4)识软件的薄弱点,指出系统能够经受的正常的工作量
5)性能测试:通过测量响应时间、CPU使用和其它量化的操作特征,评估软件系统的性能指标
6)操作测试:在没有开发人员的指导和帮组情况下,由操作人员进行测试,以评估操作命令的完整性和系统是否容易操作
7)恢复测试:故意使系统失败,测试人工和自动的恢复过程
3.2.5 安装阶段测试:
(1)测试关注点:
3.2.6 验收阶段测试
(1) 验收标准
(2)编写验收计划
a.项目描述
b.用户职责
c.行政上的流程
d.验收活动描述
e.每一个验收项的评审
f.最终的验收测试步骤
(3)执行验收计划
3.2.7 维护阶段
(1)
(2)工作重点:
测试和培训