软件测试理论

软件生命周期
计划、需求分析、设计、编码、测试、运行与维护
测试用例组成
用例编号、测试项目、测试标题、重要级别、前置条件、执行步骤、预期结果、实际结果
Bug争议解决
1.提交问题至bug管理库进行备案
2.参照需求说明书、产品说明、设计文档等,确认实际结果是否与计划一致
3.无文档的情况下,可根据类似软件的一般特性来确认是否为缺陷
4.根据一般用户习惯判定
5.与设计人员、开发人员和客户代表探讨
网站测试纲要
1.查找需求说明、网站设计等相关文档,分析测试需求
2.指定测试计划、确定测试范围和测试策略
(1)功能测试:
①链接测试:链接是否正确跳转,是否存在空页面和无效页面,是否存在不正确的出错信息返回。
②提交功能的测试。
③多媒体元素是否可能正确加载。
④多语言支持:是否能够显示正确的语言等。
(2)界面测试
①页面风格是否统一、美观
②控件布局是否合理,重点和热点内容是否突出
③控件是否正确使用
④对于必须但未安装的控件,是否提供自动下载的功能
⑤文字检查
(3)性能测试
压力测试、负载测试、强度测试
(4)安全性测试
①基本登录功能检查
②是否存在溢出错误,导致系统崩溃或者权限泄露
③相关开发语言的常见安全性问题,例如sql注入
④专业安全公司,外包测试
(5)兼容性测试
①浏览器
②操作系统
③软件平台
④数据库
3.开展测试,记录缺陷。合理安排调整测试进度,提前获取测试所需资源,建立管理体系(例如:需求变更、风险、配置、测试文档、缺陷报告、人力资源报告等)。
4.定期评审,对测试进行评估和总结,调整测试内容。
软件的定义
软件是计算机系统中与硬件相互依存的一部分,与计算机系统操作有关的计算机程序、规则、规程,以及可能有的文件、文档及数据。
软件复用
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的额软件复用主要是代码级复用,被复用饭人知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
软件生命周期定义
又称软件生存周期、生存期。是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括:计划(定义)、开发、运行(维护)三个时期,每个周期又分为若干个阶段。
软件周期模型
1.瀑布模型
2.快速原型模型:在需求分析阶段对需求进行初步而非完全的定义和分析,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分的功能和性能。用户对原型进行测试评定,给出具体改进意见以丰富软件需求。开发人员对软件进行修改完善,直至用户满意后,进行完整实现及测试、维护。
3.迭代模型:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次完整的经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,类似于小型的瀑布模式项目。
软件测试目的
1.测试是程序的执行过程,目的在于发现错误。
2.一个成功的测试用例在于发现至今未发现的错误。
3.一个成功的测试是发现了至今未发现的错误的测试
4.确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。
5.确保产品满足性能和效率的要求
6.确保产品是健壮的和适应用户环境的
软件测试原则
1.测试用例中一个必须部分是对预期输出或结果进行定义
2.程序员应避免测试自己编写的程序
3.编写软件的组织不应当测试自己编写的软件
4.应当彻底检查每个测试的执行结果
5.测试用例的编写不仅应当根据有效和预料的输入情况,而且也应当根据无效和未预料的输入情况
6.检查程序是否“未做其应该做的”且检查程序是否“做了其不应该做的”
7.应避免测试用例用后即弃,除非软件本身是一个一次性软件
8.计划测试工作时不应默许假定不会发现错误
9.程序某部分存在更多错误的可能性与该部分已经发现的错误数量成正比
10.软件测试是一项极富创造性,极具智力的挑战性工作
软件配置管理的作用
软件配置管理是一种标识、组织和控制修改的技术,应用于整个软件工程过程。软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小并有效提高生产率。
软件配置包括
配置项识别、工作空间管理、版本控制、变更控制、状态报告、配置审计
软件质量
软件质量就是“软件与明确的和隐含的定义需求相一致的程度”。具体的说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准,以及所有专业开发的软件都应具有的隐含特征的程度。影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。
测试用例设计方法
1.白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖
2.黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法
软件安全性测试方面
1.用户认证安全测试
(1)明确区分系统中不同用户权限
(2)系统中会不会出现用户冲突
(3)系统是否会因用户的权限改变造成混乱
(4)用户登录密码是否可见、可复制
(5)是否可以通过绝对路径登录系统
(6)用户退出系统后是否删除了所有鉴权标记
(7)是否可以使用后退键而不输入口令进入系统
2.数据库安全
(1)系统数据是否机密
(2)系统数据的完整性
(3)数据可管理性
(4)系统数据独立性
(5)系统数据可备份和恢复能力
3.网络安全
(1)测试采取的防护措施是否正确装配
(2)有关系统补丁是否打上
(3)模拟非授权攻击
(4)查看防护系统是否坚固
(5)采用成熟的网络漏洞检查工具检查系统
(6)采用各种木马检查系统木马情况
(7)采用各种防外挂工具检查系统各组程序的外挂漏洞
测试用例、 测试脚本及两者的关系
1.测试用例:为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定集合。
2.测试脚本:为了进行自动化测试而编写的脚本。
3.关系:测试脚本的编写对应相应的用例
静态测试、动态测试、黑盒测试、白盒测试、α测试 、β测试简述
1.静态测试
不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程
2.动态测试
实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
3.黑盒测试
一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
4.白盒测试
根据软件内部的逻辑结果分析来进行测试,是基于代码的测试。测试人员通过月度代码或者通过使用开发工具中的单步调试来判断软件的质量。一般的黑盒测试由项目经理在程序员开发中来实现。
5.α测试
由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或者测试员来完成。
6.β测试
软件的多个用户在一个或多个用户的实际操作环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
软件产品质量特性
1.功能性:适应性、准确性、互操作性、依从性、安全性
2.可靠性:成熟性、容错性、易恢复性
3.可使用性:易理解性、易学习性、易操作性
4.效率:时间特性、资源特性
5.可维护性:易分析性、易变更性、稳定性、易测试性
6.可移植性:适应性、易安装性、遵循性、易替换性
测试阶段
1.单元测试:针对软件设计的最小单位一程序模块甚至代码段进行正确性校验的测试工作,通常由开发人员进行
2.集成测试:将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成。
3.系统测试:在集成测试通过后进行,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。主要由测试部门进行,对产品质量有重大影响。
4.验收测试:以《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。对于实际项目可以和客户共同进行,对于产品来说就是最后一次的系统测试。测试内容为对功能模块的全面测试,尤其要进行文档测试。
各阶段测试策略和要求
1.单元测试测试策略
(1)自顶向下的单元测试策略:比孤立单元测试的成本高很多,不是单元测试的好选择。
(2)自底向上的单元测试策略:比较合理的单元测试策略,但测试周期较长。
(3)孤立单元测试策略:最好的单元测试策略。
2.集成测试测试策略
(1)大爆炸集成:适用于一个维护型项目或被测试系统较小。
(2)自顶向下集成:适用于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产品控制组件具有较大的技术风险,需要尽早验证;希望今早能看到产品的系统功能行为。
(3)自底向上集成:适用于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。
基于进度的集成
优点:具有较高的并行度,能够有效缩短项目的开发进度
缺点:桩和驱动工作量较大,有些接口测试不充分,有些测试重复和浪费
3.系统测试策略
数据和数据库完整性测试、功能测试、用户界面测试、性能测试、负载测试、强度测试、容量测试、安全性和访问控制测试、故障转移和恢复测试、配置测试、安装测试、加密测试、可用性测试、版本验证测试、文档测试
测试人员在软件开发过程中的任务
1.尽可能早找出系统中的Bug
2.避免软件开发中缺陷的出现
3.衡量软件的品质,保证系统的质量
4.关注用户的需求,并保证系统符合用户需求
总目标:确保软件的质量
黑/白盒测试优缺点
1.黑盒测试
(1)优点:比较简单,不需要了解程序内部的代码及实现,与软件的内部实现无关。从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些功能。基于软件开发文档,所以也能知道软件实现了文档中的哪些功能,在做自动化测试时比较方便。
(2)缺点:不可能覆盖所有代码,覆盖率较低,大概只能达到总代码量的30%。自动化复用性低。
2.白盒测试
(1)优点:帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏问题。
(2)缺点:程序运行会有很多不同的路径,不可能测试所有的运行路径。测试基于代码,只能测试开发人员做的对不对,而不知道设计的正确与否,可能会漏掉功能需求。系统庞大时,测试开销非常大。
纸杯测试
1.功能度:装水漏不漏,能不能被喝到
2.安全性:杯子是否无毒或无菌
3.可靠性:杯子从不同高度落下的损坏程度
4.可移植性:杯子在不同地方、温度等环境下是否正常使用
5.兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
6.易用性:杯子是否烫手、是否有防滑措施、是否方便引用
7.用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
8.疲劳测试:杯子盛上水(汽油),放置24小时检查泄露情况和时间
9.压力测似乎:用根针并在上面不断加重量,看压强多大时会穿透
软件验收测试内容
正式验收测试、alpha测试、beta测试
回归测试
回归测试有两类:用例回归和错误回归。用例回归是过一段时间以后再回头对以前使用过的用例再重新测试,看是否会发现问题。错误回归,是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改部分进行测试的方法。
软件测试类型
1.按测试策略分:静态与动态测试、黑盒与白盒测试、手工和自动测试、冒烟测试、回归测试
2.按测试阶段分类:单元测试、集成测试、系统测试
3.其他常见测试方法:功能测试、性能测试、压力测试、负载测似乎、易用性测试、安装测试、界面测试、配置测试、文档测试、兼容性测试、安全性测试、恢复测试
完整的测试阶段
可行性分析、需求分析、概要设计、详细设计、编码、单元测试、集成测试、系统测试、验收测试
测试计划内容
背景、项目简介、目的、测试范围、测试策略、人员分工、资源要求、进度计划、参考文档、常用术语、提交文档、风险分析
TCP/IP五层协议
应用层、传输层、网络层、数据链路层、硬件层

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值