08-软件测试基础

2018-10-20  本文已影响19人  王梓懿_1fbc

一、为什么要进行软件测试

只要是软件,就会有BUG,而我们就需要找BUG;
实例一: ATM取款机(功能性错误)
例如账户余额10000元,在ATOM机上取出2000元,查询账户余额7900元,这明显是银行的软件系统出现故障,将你的账户的多扣了100元,这就是一个严重的BUG。
实例二: 证券公司的系统瘫痪(性能错误)
2007年1月,招商证券的客户发现,在公司网站竟然无法登陆,一部分客户转向电话服务寻求帮组,却发现电话线路出现同样的阻塞。与此同时发现网络拥堵的不只是招商证券。1月15日至16日,申银万国的网络客户也发现,自己根本无法进行交易。当天申银万国解释称,网上交易系统拥堵是由于交易量激增,原系统容量不足引起的。

二、软件测试的发展史

三、软件测试的定义

使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

软件测试的目的: 尽可能早的发现并改正被测软件中的缺陷(BUG),提高软件质量。

四、什么是测试

证实: 自研公司、小公司、互联网行业;[证明软件是可用的即可]
证伪: 银行,电信,移动;[证明软件是存在错误,找出来解决]
QC: 质量检测
QA: 质量保证

五、软件的生命周期

软件生命周期: 计划阶段、需求分析、设计阶段、编码、测试、运行与维护;

  a、确定软件开发总目标;
  b、给出软件的功能、性能、可靠性以及接口等方面的设想;
  c、研究完成该项目的可行性,探讨问题解决方案;
  d、对可供开发使用的资源、成本、可取得的效益和开发进度做出估计;
  e、制定完成开发任务的实施计划;

例如(计算器之计划阶段):
  a、研发一个计算器;
  b、支持加减乘除,所有运算都需要在一定时间之内完成;
  c、该项目目前不存在任何技术障碍;
  d、需要3个月之内完成所有开发和测试工作,并推向市场;
  e、具体计划参见一级计划;

  a、功能需求;
  b、性能需求;
  c、软件需求分析说明书SRS;

例如(计算器之需求分析):
  a、功能需求
      十进制加减乘除;
      八进制加减乘除;
      二进制加减乘除;
      十六进制加减乘除;
  b、性能需求
      32位十进制加法需在2秒内完成;
      16位十六进制乘法需在10秒内完成;

  a、概要设计(HLD):在设计阶段把各项需求转换成相应的体系结构,每一部分是功能明确的模块;
  b、详细设计(LLD):对每个模块要完成的工作进行具体的描述;

例如(计算器之设计阶段):
  a、概要设计
    整个软件分为六个模块:界面模块、主控模块、加法模块、减法模块、乘法模块、除法模块。主控模块调用后面的四个模块;
    加法模块包含: 加法主函数、十进制加法函数、二进制加法函数、八进制加法函数以及十六进制加法函数;
  b、详细设计
    加法主函数的流程图;

  a、开发进行编码

例如(计算器之编码阶段):
  a、用开发语言实现详细设计中的所有函数;

  a、对软件功能需求进行测试;
  b、对软件性能需求进行测试;

例如(计算器之测试阶段):
  a、对计算机的功能进行测试;
  b、对计算器的性能进行测试;

  a、软件交付完成进入正式使用以及后期的维护工作;

例如(计算器之运行与维护):
  a、计算机提供用户使用,使用中如发现问题反馈给客户或技术支持人员,问题解决后为用户进行软件升级;

外包公司、自研公司、项目外包、人力外包....

六、软件中的研发模型

  - 瀑布模型
  - V模型(比较重要)
  - W模型
  - H模型(比较重要)
  - 敏捷开发模型(比较重要)
  - 迭代开发模型(比较重要)
  - 增量开发模型

软件开发模型对指导测试工作的进行具有重要的意义,但任何模型都不是完美的;
事实上,随着软件质量要求越来越为大家重视,软件测试也逐步发展成为一个独立于软件开发的一系列;
在实际工作中,要灵活运用各种模型的优点。例如在W模型的框架下,运用H模型的思想进行独立的测试,并同时将测试与开发紧密结合,寻找恰当的就绪点开始测试并反复迭代测试,最终保证按期完成预定目标;

优点: 流程简单、文档驱动;
缺点: 测试活动置后;

优点: 开发测试相对应、文档驱动;
缺点: 忽略了测试对象;

优点: 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等文档都要测试;更早的介入到软件开发中,能尽早的发现缺陷,并进行修复;测试与开发独立起来,并与开发并行;
缺点: 对有些项目,开发过程中根本没有文档产生,故W模型无法使用;于需求和设计的测试技术要求很高,实践起来很困难;

在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以尽早的进行;软件测试可以根据被测物的不同而分层次进行;

一般都是大型项目,例如功能需求多,开发周期长的。

七、为什么会引入缺陷

  缺乏有效的沟通,或没有进行沟通;
  软件本身的复杂度;
  发开人员自身的编程错误;
  需求的不断变更;
  测试的时间问题;
  ...

八、缺陷的类型

缺陷的表现形式不仅仅体现在功能的失效方面,还体现其他方面,主要类型有:

  - 软件没有实现产品规格说明所要求的功能模块;
  - 软件中出现了产品规格说明指明不应该出现的错误;
  - 软件实现了产品规格说明没有提到的功能模块;
  - 软件没有实现了虽然产品规格说明没有明确提及,但应该实现的目标;
  - 软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好;

九、测试用例

测试用例(Test Case简称TC)又称之为测试案例,是为了某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

a、测试点、测试什么,可以从标题中体现;
b、构造测试场景;
c、预期的结果;

十、测试执行

测试执行就是根据测试用例运行被测软件。

十一、软件测试的主要工作

  - 掌握软件测试理论,熟悉测试流程,能熟练使用合适的测试方法设计测试用例;
  - 能够独立编写测试计划,搭建测试环境,执行项目测试并输出相应的测试报告;
  - 对数据库和Linux技术,使用熟练;
  - 沟通能力强,问题定位于分析能力强;
  - 有自动化测试经验或性能测试经验优先;
  - 至少熟悉一种对自动化工具或脚本(Java或Python);
  - 有测试创新思想(质量度量新标准);

十二、软件测试的原则

  1\. 测试的标准是用户需求;
  2\. 测试贯穿整个生命周期;
  3\. 测试不仅仅是单纯的软件本身的测试;
  4\. 软件外在没有失效不代表软件系统是可用的;
  5\. 软件的完美度没有完全正确的,测试只能帮助软件更加完美,更加正确;
  6\. 穷尽测试时不可能的(有些条件组合非常多,穷尽测试时不可能的);
  7\. 测试应该尽早介入(早起引入的问题站到整个问题数目的50%以上);
  8\. 二八原则(80%的缺陷或错误会集中出现在20%区域中);
  9\. 杀虫剂效应(就是要不断更新用例,因为反复的执行相同的测试用例将会发现新缺陷的能力几乎为零);
  10\. 测试活动依赖测试对象(测试的关注点不一样,有的更多关注安全和性能的测试);
  11\. 选择第三方测试(避免自己测试自己开发的程序);

十三、SVN工具的使用

  1、GIT 分布式版本控制系统
  2、SVN 集中式版本控制系统  

使用:
Repositories:   仓库
1、 建仓库  Create New Repository
  仓库名字:

2、建立项目组

3、创建人员
  在Users上面点击右键   Create User
  用户:zhangsan
  密码:123456

4、将对应人员添加到项目组

5、设置代码仓库的访问权限
  在仓库上点击右键  Properties属性

6、 每个仓库都会有一个"连接地址"
  在仓库上点击右键   Copy URL to Clipboard(剪切板)
  URL:https://event/svn/test1701/

注意: SVN服务端在公司一般都是不用我们设置操作的,都会项目经理创建好并设置好对应的权限!

与代码仓库建立链接:
  - 链接地址: https://event/svn/test1701/
  - 用户名: zhangsan
  - 密码: 123456

具体操作:
  - checkout 检出,将服务器上最新的代码仓库下载本地"只需要做一次"
  - update 更新,从服务器上将其他人所做的修改下载到本地"每天上班必须要做的事情"
  - commit 提交,将工作提交到服务器(提交之前最好是先操作update)"每天下班之前至少做一次"

图标含义:
  右键TortoiseSVN -> 设置settings  -> 图标集Icon Set
  绿色的钩子: 常规
  红色的感叹号: 修改
  黄色的感叹号: 冲突
  灰色的钩子: 只读
  红色的XX: 已经删除
  锁标志: 锁定
  蓝色的加号: 增加
  灰色的减号: 忽略
  蓝色的问号: 无版本控制

SVN操作:
  - 添加文件
  - 查看版本
  - 修改文件
  - 删除文件
  - 更新
  - 指定版本更新
  - 解决冲突
  - 版本库浏览器
  - 提交失败原因

diff一个工具程序,它可以比较两个文件之间的不同。通常它被用来比较同一个文件,在不同版本间的差异。

如何比对文件,并解决冲突?
例如文件名为`test.txt`,当前版本20: 
  - 黄色感叹号,表示冲突文件,即`test.txt`;
  - `test.txt.mine`自己版本文件;
  - `test.txt.r20`当前服务器最新版本文件;
  - `test.txt.r19`当前服务器最新版本的上一个版本文件;
解决: 
  选择冲突文件,右键TortoiseSVN -> diff with"xxx.xxx.xxx" (选择需要对比的文件)  -> 找到冲突点并解决
  删除多余文件,只留下一个`test.txt`文件即可;
  再次`commit`上传到服务器;

(右键菜单没有显示SVN相关内容: 开始菜单中的搜索 —> regedit —> HKEY_CLASSES_ROOT/*…/TortoiseSVN —> 右键TortoiseSVN —> 权限 —> 高级 —> 所有者 —> 将所有者改为administrator —> 应用 —> 确定 —> 确定 —> 重启电脑)

作者:西门奄
链接:https://www.jianshu.com/u/77035eb804c3
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇下一篇

猜你喜欢

热点阅读