软件测试的基本知识

2018年6月6日 698 次阅读 3 条评论 2 人点赞

写在前面

软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误、衡量软件质量,并对其是否能满足设计要求进行评估的过程。本文摘录《软件评测师教程》一书中与软件测试有关的一些基础概念,分享给大家;

软件质量与软件测试

软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档、数据以及程序进行测试;

软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力;

软件测试与质量保证

软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作;

质量保证:通过预防、检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动的过程、步骤和产特;

软件测试:通过执行软件,并且对过程中的产物(开发文档和程序)进行走查,发现问题,报告质量;

软件测试的目的

测试是程序的执行过程,目的在于发现错误;
一个好的测试用例在于发现了至今未发现的错误;
一个成功的测试是发现了 至今未发现的错误的测试;

软件测试原则

所有的软件测试都应追溯到用户需求;
应当把“尽早地和不断地进行软件测试”作为测试者的座右铭;
完全测试是不可能的,测试需要终止;
测试无法显示软件潜在的缺陷;
充分注意测试中的群集现象;
程序员应避免检查自己的程序;
尽量避免测试的随意性;

软件测试对象

软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格说明以及源程序。

软件生命周期

问题的定义及规划:此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。

软件设计:此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。

程序编码:此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。

软件测试:软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。

运行维护:软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。

软件缺陷的定义

软件缺陷是指在软件开发过程中的针对软件产品和开发过程的问题,这些问题已经影响或者可能影响软件产品的质量。基于此定义,将缺陷分为如下类别:

文档缺陷:是指对文档的静态检查过程中发现的缺陷,通过测试需求分析、文档审查对被分析或被审查的文档发现的缺陷;

代码缺陷:是指对代码进行同行评审、审计或代码走查过程中发现的缺陷;

测试缺陷:是指由测试执行活动发现的被测对象(被测对象一般是指可运行的代码、系统,不包括静态测试发现的问题)的缺陷,测试活动类型主要包括内部测试、连接测试、系统集成测试、用户验收测试;

过程缺陷:又称为不符合项问题,是指通过过程审计、过程分析、管理评审、质量评估、质量审核等活动发现的关于过程的缺陷和问题。过程缺陷的发现者一般是质量经理、测试经理、管理人员。
下面的表格列出了关于缺陷的定义描述:

缺陷名称
对象
发现活动
主要发现人
文档缺陷
包括最终产出物和中间产出物文档;
具体包括:项目组的文档,如需求文档、设计文档、计划、报告等
测试文档,如测试计划、测试需求分析、测试设计、测试案例、测试分析报告等。
同行评审
产品审计
同行评审人员
测试经理
代码缺陷
程序代码:包括程序单元、数据库脚本、配置文件等。
同行评审
产品审计
代码走查
同行评审人员
测试经理
测试缺陷
可运行的程序代码、系统、原型等。
单元测试
集成测试
系统测试
性能测试等
测试人员
过程缺陷
测试管理体系
测试项目实施过程
过程审计
过程分析
管理评审
质量评估
质量审核等
质量经理、项目经理、管理人员

 

软件测试常见风险

需求风险:产品需求的不明确,对产品需求理解不准确,导致测试范围存在误差,遗漏部分需求或者执行了错误的测试方式;另外需求变更导致测试用例变更,测试用例维护成本增加,实时更新时存在误差。

测试用例风险:测试用例设计不完整,忽视了边界条件、异常输入等情况,用例覆盖率没有做到足够覆盖,测试用例没有得到全部执行,有些用例被有意或者无意的漏测,需求变更导致的测试时间被压缩等情况。

缺陷风险:某些缺陷偶发,难以重现,容易被遗漏;缺陷跟踪不够积极主动,没做好缺陷记录和及时更新,同样的缺陷,导致的原因可能不同,对这点没意识到导致的线上生产问题等。

代码质量风险:代码质量差,可读性差,重构性差,没做好注释等原因导致缺陷较多,修改难度增大;另外还有系统架构设计的不足,导致的扩展性不足,性能兼容差等问题。

测试环境风险:测试环境和生产环境配置不同,测试环境交叉影响较大,测试环境数据量不足导致的测试结果误差等问题。

测试技术风险:某些项目存在技术难度,测试能力和经验所限,技术水平相对较差导致测试进展缓慢,测试结果准确性不够,项目发布日期延期等问题。

沟通协调风险:项目进行过程中需要多方沟通协调,不同部门,岗位之间的沟通、协作,难免存在误解、沟通不畅的情况,比如需求变更没有及时沟通,开发代码提交没有及时告知,测试结果的反馈不及时等问题。

研发流程风险:其中包括从产品需求评审、研发设计、代码提交、测试发布等一些列流程,流程的不规范不协调很可能导致很多问题;比如开发在不告知其他成员的情况下提交代码,发布没有预生产环境,生产出现问题无法及时恢复版本的情况。流程没必要一板一眼的执行,但没有流程是万万不行的。

其它不可预计风险:一些突发状况、不可抗力等也构成风险因素,且难以预估和避免。对于这种情况,往往一时无法解决,建议做好备份方案和容灾机制,或者采用灰度发布等措施。

 

风里云里,我在这里等你!

文章评论(3)

  • 谢希明

    👍

    2019年1月31日
  • 一位WordPress评论者

    嗨,这是一条评论。
    要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。
    评论者头像来自Gravatar

    2018年6月6日
    • Altumn

      hi`

      2018年6月26日