问题总结:
1.测试用例覆盖考虑不全面,测试用例设计方法使用不够完美,无法熟练掌握测试用例设计的方法。
2.测试用例设计之前,思维分析能力薄弱,无法完全理解需求。
1.知识总结
1.1 软件工程要点
1.1.1软件的概念及分类
软件最初的概念就是就是指程序,随着时代发展,软件就是指文档、程序和数据。
-
当运行时,能够提供所要求的功能和性能的指令或计算机程序集合。
-
该程序能够具有满意地处理信息的数据结构。
⑶ 描述程序功能需求以及程序如何操作和使用所要求的文档。
软件种类:
-
系统软件:操作系统、数据库管理系统、设备驱动程序等。
-
应用软件:事物软件、娱乐软件、实时软件等。
-
工具软件:文本格式化软件、文本编辑软件等。
1.1.2软件危机
软件危机产生的原因:
(1)对用户的需求不明确是产生软件危机的主要原因之一;
(2)缺乏正确的理论指导;
(3)软件开发规模越来越大;
(4)软件开发复杂度越来越高;
如何消除软件危机:
(1)应该对计算机软件有一个正确的认识;
(2)必须充分认识到软件开发不是某个个体劳动的神秘技巧,而应该是一种组织良好、理严密、各类人员协同配合、共同完成的工程项目。
1.1.3软件工程
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件开发和维护的学科。
软件工程三要素:方法、工具、过程。
软件工程内容:软件开发技术、软件项目管理。
-
软件项目管理
软件项目管理包括软件度量、项目估算、进度控制、人员组织、项目计划等。
1.1.4软件生命周期
软件生命周期是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
软件生命周期模型:
-
瀑布模型(开发者角度)
-
迭代式模型
-
V模型(测试人员的角度)
-
W模型(测试人员的角度)
-
敏捷模型
1.1.5软件开发主流技术
1.2软件测试基础
1.2.1软件测试基本概念
1.定义:
Hetzal:评级一个系统或程序的特性或能力,并确认他是否达到预期的结果,检查是否满足规定的需求。
Myers:测试是为了发现错误而执行程序的过程。
现代:是对软件需求分析、设计、编码的最终复查的一系列过程,是软件质量保证的关键。
2. 软件测试目的
a)尽可能发现并改正被测试软件的错误,提高软件的可靠性
b)保证软件质量
c)建立软件质量信心
3.软件测试基本原则
(1)测试显示缺陷的存在;
(2)穷尽测试是不可能的;
(3)测试尽早介入;
(4)缺陷集群性(80-20原则);
(5)杀虫剂悖论;
(6)测试活动依赖于测试背景;
(7)不存在缺陷的谬论。
4.软件测试质量度量
1.2.3软件测试工作流程
软件工作流程图,如图2。
图 2 软件测试工作流程图
1.2.4 测试工作内容
1.计划:识别测试任务、定义测试目标、定义为达到测试目标和任务所必须的测试活动
2.分析与设计:
评审测试依据(比如需求、系统架构、设计和接口说明等)、评估测试依据和测试对象的可测性、通过对测试项、规格说明、测试对象行为和结构的分析,识别测试条件并确定其优先级;设计测试用例并确定优先级、确定测试条件和测试用例所需的必要的测试数据、规划测试环境的搭建和确定测试需要的基础设施和工具。
-
实现与执行:测试用例的开发、实现并确定它们的优先级、开发测试规程并确定优先级,创建测试数据,同时也可以准备测试用具和设计自动化测试脚本、根据测试规程创建测试套件,提高测试执行的效率、确认已经正确搭建了测试环境、根据计划的执行顺序,通过手工或使用测试执行工具来执行测试规程、记录测试执行的结果,以及被测软件、测试工具和测试件的标识和版本。、将实际结果和预期结果进行比较、对实际结果和预期结果之间的差异,作为事件上报、缺陷修正后,重新进行测试活动。
-
评估出口准则:按照测试计划中定义的测试出口准则检查测试日志
-
评估是否需要进行更多的测试,或是否需要更改测试的出口准则。
1.2.5软件测试心理学
1.开发人员的思维,如图3。
开发人员的思维是构造思维。
开发人员在设法通过程序实现用户需求时,更多的是思考如何来实现功能而并非破坏该功能。
同时具备构造思维和破坏思维是一件不容易的事情思维的局限性。
2.测试人员的思维
技术思维能力、对技术的建模能力和理解原因与后果的能力、创造思维能力、提出新想法和预见可能性的能力、批判思维能力、评价想法并进行推理的能力、实践思维能力、将想法变成现实的能,测试人员的思维是一种破坏性的思维(逆向思维)。
3.开发人员与测试人员的关系
以合作而非斗争的方式开展项目,共同目标是追求高质量的产品
以中性的语调和事实为依据的方式来沟通,而不要指责和批评他人
尽量理解其他成员的感受,以及他们为什么会有这种反应
3.软件测试的心理学
⑴ 端正对软件测试工作的认识。
⑵ 具有较强的沟通能力、外交能力和移情能力。
⑶ 掌握比较全面的技术。
⑷ 测试中要做到“5心:专心、细心、耐心、责任心、自信心”。
⑸ 要有很强的记忆力、怀疑精神和洞察力。
⑹ 具有探索、创新和挑战精神,努力追求完美。
⑺ 测试人员在测试时要注意的事项:①永远不要许诺或保证什么;② 文档反应了自己的精神面貌;③要学会逆向思维;④ 编写缺陷时一定要保证重现;⑤测试要依据需求,关注对用户不利的缺陷;⑥ 尽量使用测试工具;⑦牢记服务意识。
1.26测试工具
商业化的测试工具:
-
测试管理工具:HP ALM/QC
-
自动化测试工具:HP UFT(QTP & Service Test)
-
性能测试工具:HP Loadrunner
-
安全测试工具:HP Fortify、WebInspet
开源测试工具:
Testlink、Mantis、BugZilla、Selenium、JUnit、CppUnit
1.3基于生命周期的软件测试
1.3.1生命名周期的概念
生命周期测试的概念:生命周期测试应伴随整个软件开发周期,此时测试的对象不仅仅是程序,需求、功能和设计同样要设计。生命周期意味着测试与软件开发平行,在软件开发的所有阶段进行测试,确保在尽可能早的阶段点去修正缺陷,用来减少测试成本。
1.3.2生命周期模型
1. V模型,如图3.
图3 V模型
特点:① 定义:基本的开发过程和测试行为②标明:测试过程中存在不同类型、不同级别的测试③ 描述:不同测试阶段和开发过程期间各阶段的对应关系。
2. W模型,如图4.
图4 W模型
特点:① 增加了软件各开发阶段中应同步进行的验证 (verification)和 确认(validation) 活动。② 基于“尽早地和不断地进行软件测试”的原则。
1.3.2生命周期测试的主要任务
生命周期测试的主要任务:
-
测试要素:软件的属性,描述测试的主要目标;
-
测试用例;
-
测试种类/技术;
-
测试的准入准出条件。
1.4软件测试分类与分级
1.4.1软件测试分类
1.1 软件配置项
软件配置缩写为CSCI(Computer Software Configuration Item),是为独立的配置管理而设计的且能满足最终用户要求的一组软件,简称软件配置项。
软件配置管理控制这些软件配置项的投放和变更,并且记录并报告配置的状态和变更要求,验证配置的完整性、正确性和一致性。
1.2基于CSCI的软件测试分类
①功能测试:功能测试主要对软件需求规格说明中的功能需求进行测试,找出被测软件的实现与需求不一致的地方,确认一致的地方。
②性能测试:主要对软件需求规格说明中定义的性能需求进行测试,费事在一定工作负荷和配置条件下,系统的响应时间及处理速度等特性。
③外部接口和人机交互界面测试:外部接口和人机交互界面测试主要对平台各个服务域提供的应用编程接口、应用程序接口、外部环境接口以及人机交互界面的符合性和可用性进行测试。
④强度测试:强度测试必须在预先规定的一个时期内,在软件设计能力的极限状态,进而超出此极限状态下,运行软件的所有功能。
⑤余量测试:测试程序全部存储量、输入/输出通道及处理时间的余量满足需求规格说明的要求。
⑥可靠性测试:可靠性测试是在有使用代表性的环境中,为进行软件可靠性估计而对其进行的功能测试。
⑦安全性测试:安全性测试主要对平台软件配置项的安全性进行测试,包括系统安全评估和系统侵入测试两个部分。
⑧恢复性测试:对有恢复或重置(RESET)功能的软件,必须验证恢复或重置功能,对每一类导致恢复或重置的情况进行测试。
⑨边界测试:测试程序在输入域(或输出域)、数据结构、状态转换、过程参数、功能界限等的边界或端点情况下运行状态。
⑩功能多余物测试:验证程序中没有附加的软件需求中没有指明的功能及功能边界的不适当。所有输出都应有意义并在软件需求中指明。
⑪安装性测试:安装性测试主要对平台软件配置项的可安装性/可卸载性进行测试。
⑫