4天软件测试课程笔记

软件测试历史:

上世纪三四十年代,含义狭隘,开发自测,产品质量低;

上世纪八九十年代,开始成型,但没有广泛的应用;

二十一世纪初,迅猛发展,对软件质量要求越来越高,软件系统化测试登上舞台。

 

软件测试的目的

提高软件质量,降低成本;

 

软件测试的概念:

在规定时间、条件下对程序进行操作,以发现错误为目的,对软件质量进行评估的过程。

 

缺陷(Bug)

1947年09月,第一个Bug被发现。中继器故障(飞蛾引起)

 

软件缺陷的定义:

不符合用户要求,或软件在开发或者维护过程中存在的错误、毛病以及各种问题;

(软件缺陷,英文名词bug,是计算机软件或程序中存在的某种破坏正常运行能力的问题、

错误、或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需求;)

 

为什么会出现软件缺陷:

1 需求不明确(最常见)

2 系统结构非常复杂

3 开发人员疏忽,代码写错

4 其他。

 

缺陷等级:

致命

严重

一般

轻微

 

 

缺陷修复成本:

几何级数增长(成倍增长)随着项目的深入,缺陷越后被发现,修复成本就越高!

 

Page10  软件测试的原则:

1-7

不可能进行完全测试

软件测试是有风险的行为

测试无法显示潜伏的软件缺陷

充分注意软件缺陷的群集现象(程序员的疏忽)

要避免软件测试的杀虫剂现象

并非所有的软件缺陷都能修复

 

即将上线的软件突然发现Bug,,可根据自身经验评估,如果缺陷风险不大、但修复成本较高,可以等软件升级的时候再修复。

 

软件测试模型:

V模型:(最常用)  需求分析(需求:(外包:用户需求;自研:来自市场调研))、概要设计(前端研发的过程)、详细设计(前端研发的过程),编码实现单元测试集成测试系统测试验收测试

W模型:(由2个V模型组成)page16

H模型

X模型

迭代式模型

敏捷式模型

 

 

软件测试流程:

需求分析(评审)

测试计划(测什么)

测试用例(为了更有效地发现软件缺陷,避免测试的盲目性,降低测试成本,提高测试效率)

执行用例

回归测试

测试报告

 

测试计划包含哪些内容:

概述:(编写目的、项目背景、项目质量目标(尽可能高)、预期结果(应与需求相符合)、参考资料);

测试环境:LAMP=Linux+Apache+MySQL+PHP;

测试计划:测试范围,开发组成员及其职责等;

测试策略:测试方法;

工作汇报

 

评审即开会讨论(测试组内部会议)

评审内容:评审时间、地点、主持人(项目经理、测试经理等)、参加部门人员、评审内容、评审过程、评审结果

 

测试用例八大要素:

  用例编号、用例标题、项目名称、优先级、预知条件、测试输入、操作步骤、预期结果

用例编号:   产品编号_ST_项目名_001

其中 单元UT 集成 IT 系统 ST

用例标题:即用一句简单的话描述用例的关注点

优先级:高中低

确认优先等级的三项指标:

  • 风险 ②开发部门的进度安排 ③用户协议(用户定义为高)

 

写测试点:应从多个方面入手,包括功能、性能、安全性、可靠性等。

 

编写测试用例的目的:

  • 编写用例可以避免测试点的遗漏;
  • 编写用例是为了更好地进行测试,提高测试效率
  • 测试用例是根据需求来写的,用例完成后要进行评审,还可以尽可能避免开发和测试对需求的不同理解造成的缺陷。

 

软件的生命周期:

一个软件产品或系统也要经历孕育、诞生、成长、成熟、衰亡的阶段,软件的生命周期是软件从产生到报废停止使用的过程。

 

缺陷的生命周期:

测试人员发现bug,将其提交缺陷管理系统(禅道)并指派给对应的开发人员,开发人员进行确认,是bug就修复,不是bug就返回给测试人员,将修复好的bug也发回给测试人员,测试人员进行回归测试,已修复便关闭,未修复饿返回给开发。

 

软件测试分类:

功能测试、性能测试、安全性测试、可靠性测试、验收测试;

 

软件测试方法分类:

黑盒测试、白盒测试、灰盒测试

 

功能测试:也叫黑盒测试,是把测试对象看作一个黑盒子,利用黑盒测试方法进行动态地测试需要测试的软件产品的一个过程

 

黑盒测试:

  • 等价类 ②边界值 ③错误推测法 ④因果法 ⑤场景法 ⑥正交法

等价类:把所有可能的输入数据(即程序)的输入域划分为若干部分(子集),然后从每个子集中选取少量具有代表性的数据作为测试用例(分为有效等价类和无效等价类两种)

边界值:是对等价类分析方法的一个补充,因此针对各种边界情况设计测试用例可查出更多的错误(6-10个字符,6-10为内点,5和11为离点)

错误推测法:是指在测试程序时,人们根据直觉或经验推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。

。。。

 

 

白盒测试:测试人员知道了产品的功能以及内部结构,一般程序员开发完一种功能,测试员就立马测试功能

 

白盒测试方法:

代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法等

 

灰盒测试:介于白盒测试和黑盒测试间的一种方法

目的:确保并提高软件质量

 

单元测试:是指对软件中最小可测试单元进行检查和验证,对于单元测试中的单元的含义,一般来说,需根据实际情况去判断其定义,总的来说,单元就是认为规定的最小被测试的功能模块

 

C中,单元指的是一个函数

Java中,单元指的是一个对象

图形化界面中,单元指的是一个窗口或菜单

 

集成测试

  也叫组装测试,联合测试,,即对程序模块采用一次性或增值方式组装起来,对系统的接口进行正确性检验的测试工作,集成测试在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统。

 

测试用例的特点:(用最少的用例覆盖100%的需求)

内部评审(测试组)->同行评审(项目组所有参与人员)

 

系统测试:

    概念:是将已经确认的软件或者计算机硬件、外设、网络等其他元素结合在一起,

          进行信息系统的各种组装、测试和确认测试。

      系统测试:包括(功能测试,性能测试,压力测试,安全性测试,可靠性测试等)

                  功能测试(找Bug)(点点点,又称黑盒测试占大部分时间) 概念:即对产品的各种功能进行验证,根据功能测试用例逐项测试,检查产品是否达到用户要求的功能,只需要考虑测试的各个功能,不需要考虑整个软件的内部结构及代码,功能测试也叫黑盒测试或者数据驱动测试。

                        流程:需求分析-》测试计划(评审)-》测试用例(,,,预测,项目组中每个成员都要写)-》环境搭建(LAMP)-》冒烟测试(用3-5条优先级高的用例去执行,看结果是否符合需求 ,3-5小时,,,正式测试)-》回归测试(第一轮:主要功能;第二轮:细节功能;第三轮:根据时间进度、Bug遗留、版本做测试报告)-》测试报告(整个项目组一份)

                        测试报告包含的内容:人员的配置(测试组成员)、测试模块(每个模块测试的开始时间、结束时间、写了多少用例、通过多少用例、失败的用例是多少)、Bug统计、遗留和风险、项目总结、评价该项目是否符合上线标准、日期,签名,主管签名;

                  性能测试 (测试软件的“负载能力”):概念:性能测试是通过自动测试工具模拟多种正常峰值,以及异常负载条件来对系统的各项性能指标进行测试。

                             工具:Loadrunner:是性能的负载测试工具,,主要功能:虚拟用户,真实负载,定位性能,分析结果,重复测试

                             性能测试的目的:1.评估,评估系统是否满足系统性能需求;2.调优,解决性能测试中发现的瓶颈和问题;3,稳定,验证系统是否稳定可靠。

                        性能测试的指标值:

                     1.事务(web性能测试中,一个事务表示一个“用户-web server-DB-web server-用户”的过程),

                     2.响应时间,(毫秒级别,,是从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束 这个过程所耗费的时间,以毫秒为单位)

                     3.TPS(每秒传输的事务个数,指服务器在单位时间内(秒)可以处理的事务数量),

                     4.吞吐量(指单位时间内可处理的客户端请求数量),

                     5.点击率(每秒发送的http请求的数量,点击率越高,对server造成的压力就越大),

                     6.并发用户数(指同时进行请求的用户的数量,并发数用于模拟用户的真实情况,,,特点:同一时刻\对服务器有负载),

                     7.资源利用率

 

http和https的区别:

https需要申请证书,一般免费证书很少,因而需要一定费用。

http是超文本传输协议,信息明文传输,,https则是具有安全性的加密传输协议。

httphttps采用完全不同的连接方式,用的端口号也不一样,前者为80,后者是443

http链接是无状态的,https构建的可进行加密传输、身份认证的网络协议,,比http安全;

https加密会影响一部分性能,如果没有特定的需求,无需加密

 

                  安全性测试

                  可靠性测试

 

=====================================================================APP测试:

  1.功能:进行100%的测试

  2.安全卸载:能否正常安装启动,,内存已满能否安装,,有没有自带的卸载功能。

  3.流畅度:打开是否会卡顿,同时打开多个服务会不会卡死。

  4.兼容性:安卓系统,IOS系统等

  5.网络(弱网测试)

  6.流量消耗:主要考虑断开WiFi会不会偷跑流量

  7.低配手机

 

=====================================================================

wifi---------4G---------3G---------2G---------无网

 

           1.5M/s     500k/s     60k/s

 

夜神模拟器

 

----------------

(性能测试的一种)压力测试

 

  概念:也被称为强度测试、负载测试,压力测试模拟实际应用的软硬件环境及用户使用过程系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。

 

目的:是在软件投入使用以前或软件负载达到极限以前通过执行可重复的负载测试,了解系统可靠性、稳定性,减少系统的宕机(电脑无法正常工作)时间的因此带来的损失。在软件工程中,压力测试是对系统不断施加压力的测试,是通过确认一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

 

 压力测试的方法:

 1.敏感性测试:旨在测量单个重要风险因素或少数几项关系密切的因素,由于假设变动对系统的影响。

 

 2.情景测试:即一组风险因子定义为某种情景,分析在个别情景下的损失,因而此类方法称为情景分析;

 

 

可靠性测试:

  概念:也称为可靠性评估,指根据产品可靠性结构、寿命类型和各单元的可靠性试验信息,利用概率统计方法,评估出产品的可靠性特征量。

 

  目的:

   1.通过在有使用代表性的环境中执行软件,以证实软件需求是否实现。

   2.为进行可靠性评估采集准确的数据

   3.通过软件可靠性测试找出所有对软件可靠性影响较大的错误。

 

  特点:

  (1)软件可靠性跟硬件可靠性不同,软件可靠性失效一般是由设计缺陷造成的。软件可靠性测试强调按实际使用的概率分布随机选择输入,并强调测试需求的覆盖面。

  (2)软件可靠性测试也不同于一般的软件功能测试,软件功能测试可能比较注重于找Bug,而软件可靠性测试必须按照使用的概率分布随机地选择测试用例,这样才能得到比较准确的可靠性评估,也有利于找出对软件可靠性影响较大的故障原因。

 

  效果:经过软件可靠性测试的软件,并不能保证残留的错误数量少,但能保证该软件的可靠性达到较高要求。

 

安全性测试:

 

  定义:安全性测试是在IT软件产品的生命周期中,特别是产品基本开发完成到发布阶段,对产品进行检验,以验证产品符合安全需求定义和产品质量标准的过程。

 

 目的:提升产品的安全质量,尽可能在发布前找到安全问题予以修补、降低成本。

 

  区别:

1.目标不同:功能测试以发现Bug为目标,安全性测试以发现安全隐患为目标。

2.假设条件不同:一般功能测试:测试假设导致问题的数据是需求或研发不小心造成的;安全性测试假设导致的问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。

3.问题发现模块不同:一般功能测试以违反功能定义为判断依据,安全性测试以违反权限与能力的约束为判断依据。

 

 安全性测试包括:

用户认证安全测试

系统网络安全测试

数据库安全测试

 

…………………………………………………………………………………………

软件开发生命周期中每一阶段都应该包含软件测试

在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的 40%以上。而

在软件开发的总成本中,用在测试上的开销要占30%到 50%。

-----------------------

遇到问题无法解决:

   先独立解决(百度等)再寻求帮助;

 

验证测试:

  定义:也称为用户交付测试,是部署软件之前的最后一个测试操作,它是技术测试的最后一个阶段。

  目的:是确保软件准备就绪并且可以让最终用户将其用于执行软件的既定功能和任务。

  方法:Alpha(有开发人员,测试人员,用户或第三方测试公司等组成):阿尔法测试是在用户组织模拟软件系统的运行环境下的一种验收测试,由用户或第三方进行的测试。非正式验收。。。

       Beta(测试组,用户):贝塔测试是用户公司组织多个用户在一个或多个用户的实际使用环境下进行的测试。(常用)。正式验收。。。

       两者区别:

         Alpha测试是在模拟环境下进行的测试,Beta测试是在实际使用环境中进行的。

         Alpha测试有开发在现场,Beta测试开发不在。

  验收测试三个过程:

       1.验收测试进入准则:

         (1)软件产品通过单元测试、集成测试和系统测试;

         (2)项目组提交(给用户)测试计划、测试用例、测试报告(一般在SVN中提交)

       2.对用户手册和帮助的测试规定:

         (1)用户手册和帮助的编制要使用非专门术语,充分地描述该软件系统所具有的功能以及基本的使用方法。

         (2)使用户能够通过手册了解该软件的用途,并且能够确定在什么情况下、如何使用它。

         (3)语言通顺简洁、语义明确、错别字小于0.1%

         (4)对相关名词解释应易于被用户理解;

         (5)保证用户手册、帮助能够正确指导用户使用软件。

       3.软件验收测试合格通过的准则:

         (1)软件需求分析说明书中定义的所有功能已全部实现

         (2)所有测试项必须符合如下标准:

            致命错误:无  功能错误:无 功能缺陷:通过审核 界面缺陷:通过审核

         (3)需求分析文档、设计文档、和编码实现一致(开发);

         (4)用户手册及帮助符合验收规定;

         (5)验收测试(要写测试计划、策划报告)文档齐全;

         (6)以上条件其中之一不能满足要求,视为不合格。

 

电子商城需求分析文档(想出测试点,然后根据测试点写测试用例)

 业务流程描述:

  1.用户注册:填写个人资料,最后提交,注册成功;

  2.用户登录:按照注册好的用户名、密码登录

  3.个人资料修改,用户可以修改个人资料;

  4.选择商品,选择好商品后可以自由更改需求购买商品数量,确定后提交添加进购物车;

  5.购物车:购物车中可以选择移除选好的商品,可以更改商品数量,可以确认购买,购买后可以继续返回购买数量

  6.付款:付款方式,可查询购买的商品物流情况

  7.购买商品交易成功后,对商品做出评价。

 

猜你喜欢

转载自blog.csdn.net/hst_gogogo/article/details/83151871