测试的通用知识

一、测试的通用技术

1.软件的定义

   软件包括程序、数据和文档。

2.软件的分类

   按照层次划分:系统软件和应用软件

   按照组织划分:商业软件和开源软件

   按照结构划分:单机软件(计算器、画图)和分布式软件

3.缺陷的定义:

   软件未实现产品说明书要求的功能

   软件出现了产品说明书指明不应该出现的功能

   软件实现了产品说明书中未提到的功能

   软件未实现产品说明书虽为明确提及但应该实现的功能

(所有不满足需求或查出需求的都是缺陷,没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷)

   (软件难以理解、不易使用、运行缓慢或者“从测试的角度看”,最终用户会认为不好)

4.软件测试的由来

    起源于上世纪70年代中期

    20世纪80年代早期,软件质量保证部门SQA(SOFTERWARE QUALITY ASSURANCE)

5.软件测试的定义和目的

①正向思维的定义:出发点-使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。

(为了证明软件是正确的,软件满足需求)

②反向思维的定义:出发点-测试是为了发现错误而执行一个程序或者系统的过程。

(怀疑一切,为了证明软件是错的,认为发现错误是好的,软件不满足需求)

③IEEE定义的测试:

在规定条件下与逆行软件系统或构建的过程,观察和记录结果,并对系统或构建的某些方面做出评价;

在分析软件项目的过程,检测现有状况和所需状况之间的不同,并评估软件的特性;

④广义的软件测试定义:软件测试是对软件形成过程中的所有工作产品(包括程序及相关文档)进行测试,而不仅仅是对程序的运行进行测试。

确认(Validation):通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现

验证(Verification):通过检查和提供客观证据来证实指定的需求是否满足

⑤软件测试的目的:以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复。利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入。采用更加高效的的测试管理手段,提高软件测试的效率和软件产品的质量。

6.测试与调试的区别

测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始,结束的过程可能不可预计。

测试可以计划,可以预先制订测试用例和过程,工作进度可以都度量;描述调试的过程或持续时间相对比较困难。

在主体、目标。方法和思路上有所不同:

 

测试

调试

主体

测试人员

开发

目标

找bug

将错误修改正确

方法

等价类、边界值.....

程序和逻辑算法

思路

反向思维

正向思维

7.软件工程部分

(1)软件危机:

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

(2)软件工程包括:

         软发件开技术:软件开发方法学、软件工具和软件工程环境

          软件项目管理:软件质量、项目估算、进度控制、人员组织、配置管理、项目计划

(3)软件测试是软件质量管理体系中一个非常重要的手段

(4)软件生命周期

需求分析—|—概要设计—|—详细设计—|—编码—|—测试—|—验收|

     需求规格说明书架构文档    详设文档  源代码   测试报告  产品

模型:

瀑布模型:最早提出的软件开发的过程模型。

1)存在问题:

①强调时间顺序的严格执行。前阶段不完成,后阶段不开始。

②测试放在编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求的问题一直延续到代码完成才暴露或者被发现。

 

2)优点

①为项目提供了按阶段划分的检查点

②当前一阶段完成后,只需要去关注后续阶段

3)缺点

①各个阶段的划分完全固定,阶段之间产生大量的文档

② 线性开发,用户等到整个过程的末期才能见到开发成果

③不适应用户需求的变化

螺旋模型:是一种演化软件开发过程模型,他兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。

迭代模型:开发迭代是一次完整地经过所有工作流程的过程

1)优点:

①降低了在一个增量上的开支风险

②降低了产品无法1按照既定进度进入市场的风险

③加快了整个开发工作的进度

④迭代过程这种模式使适应需求的变化会更容易些

敏捷模型:敏捷开发-scrum

快速原型模型

1)应用领域越来越多

2)原型:就是一个模型。可以模拟操作、简单运行。

3)典型的应用和工具:Axure-制作原型

4)工作流程:产品经理⟺客户-开发

增量模型:把软件分割成独立的模块,分批次的完成和交付

1)缺点:打破原有的软件结构和框架,可能带来一定的风险

增量模型一般会和迭代模型一起运用

8.软件测试

1)软件测试流程:

获取测试需求—编写测试计划—制订测试方案—开发与设计测试用例—执行测试—提交缺陷报告—测试分析与评审—提交测试总结—准备下一版本测试

2)软件测试过程模型

测试过程的质量将直接影响测试结果的准确性和有效性。

V模型:揭示了开发过程与测试过程中各阶段的对应关系

 

缺点与不足:V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析、系统设计的验证;需求的满足情况一直到后期的验收测试才被验证;没有体现出“尽早地和不断地进行软件测试”的原则。

W模型:由两个V字型模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。

 

优点:测试的活动与软件开发同步进行;

测试对象不仅仅是程序,包括需求和设计;         

今早发现软件缺陷可降低软件开发的成本。

局限性:在W模型中,需求、设计、编码等活动被视为串行的,这样就无法支持灵活的迭代。

③H模型:软件测试一个独立的流程。指出软件测试尽早准备、尽早执行。

④X模型:其中定位了探索性测试。

3)软件测试过程理念

①尽早测试

测试人员早期参与软件项目。

尽早的开展测试执行工作。

②全面测试

对软件的所有产品进行全面的测试。

软件开发及测试人员(有时包括用户)全面的参与到测试工作中。

③全过程测试

测试人员要充分关注开发过程。

测试人员要对测试全过程进行全程的跟踪。

④独立的、迭代的测试

测试活动是独立的。

测试活动应该是循环往复、不断的进行。

#软件测试##学习路径#
全部评论

相关推荐

原本以为自己的简历会泡在池子里的,没想到被捞起来面试,可能是看我的项目使用了腾讯云吧1.自我介绍2.介绍项目3.项目里用户和角色两者的功能划分4.什么是token5.如果两个浏览器登录页面,一个浏览器页面修改密码,另外一个浏览器会有什么变化。(寄)6.MySQL用哪个数据引擎7.项目有没有用索引(🈚️数据量并不是很庞大)8.项目有没有用户,是不是有上线的(🈚️,跟博客的技术大佬做的项目)9.认为用户量达到多少需要使用索引(上千)10.索引底层原理、使用索引有什么好处11.B树与二叉搜索树对比12.redis持久化(寄,只是项目运用,原理没去了解)。13.有没有学过C++(🈚️,学校课程教完C,我就自学Java了)14.C++虚函数(寄)15.TCP四层协议,每一层的作用。16.TCP为什么是三次握手和四次挥手17.讲一下TIME_WAIT状态18.进程和线程的区别19.讲一下锁(讲了java的锁升级过程,面试官是主C++,表示java的锁机制没怎么了解)20.什么是字符集(扯了一下jvm 二进制字节流编译那些)21.数据库用哪个字符集(utf-8),如果是一个中文的话占多少位。(寄)算法题使用链表操作对链表进行升序,0-> -1 -> 5 -> 4 -> 3得到结果为:-1 -> 0 -> 3 -> 4 -> 5 面试官让我共享屏幕,用idea来写。————————————————————————  本人算法菜鸟一枚,而且第一次参加腾讯这种大厂面试一开始比较紧张没什么思路,一开始往单调栈的方向去思考,后来想到利用数组排序,再重新给链表赋值。  完成后,面试官说他原本是比较想看到我用链表进行操作,然后问我除了这个方法还有什么思路,我提到一开始的单调栈,进栈的值小于栈顶的值就出栈,然后对换。面试官问那如果是弹出好几个数值呢,然后引导我可以用数组来存储。————————————————————————反问环节问了下实习生的日常工作和业务场景面试官浅答,没有展开和深入说。问:我还有什么需要改进的地方答:可以对数据库、操作系统这些纵向原理再深入一些。
点赞 评论 收藏
转发
投递海量数据等公司10个岗位 投递实习岗位前的准备
点赞 评论 收藏
转发
3 30 评论
分享
牛客网
牛客企业服务