2021-08-25作业

一、黑白盒测试的区别

黑盒测试对测试人员的代码水平要求较低,只需检测产品在运行当中,是否会出现问题,站在客户的立场去检测问题,测试过程不可见;白盒测试需要检测代码的每条分支和路径,找到隐藏在代码中的错误,对代码测试的比较彻底,测试过程可见。

黑盒测试主要是为了发现以下错误:

 (1)是否有不正确或者遗漏了的功能;

 (2)在接口上,输入能否正确的接受?能否输出正确的结果?

 (3)是否有数据结构错误或外部信息(例如数据库文件)访问错误?

 (4)性能上是否能够满足要求?

 (5)是否有初始化或终止性错误?

黑盒的测试用例技术设计有三种:  边界值分析、等价类划分、错误推测法。

白盒测试主要是想对程序模块进行以下检查:

 (1)对程序模块的所有独立的执行路径至少测试一遍;

 (2)对所有的逻辑判定,取”真“与”假“的两种情况都能至少测一遍;

 (3)在循环的边界和运行的界限内执行循环体;

 (4)测试内部数据结构的有效性,等等;

 (5)静态白盒测试  :即代码审查,正式审查和检验设计和程序代码;

 (6)动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;

 白盒的测试用例技术包括逻辑覆盖和基本路径测试。
出处:https://blog.csdn.net/qq_38906523/article/details/76481595

二、手工与自动化的优缺点?

什么是手工测试: 所谓手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。并且一直以来,人们在执行软件测试相关工作时也主要是以手工测试为主。但是随着现代软件复杂程度的逐渐加深,人们发现使用手工方式来完成软件测试会感到越来越力不从心,同时因为在软件测试中存在着大量的重复性工作,而这种工作是更适合机器而不是人类来完成的。因此,自动化测试成为最佳的解决方案

什么是自动化测试:自动化测试就是将大量的重复性的测试工作交给计算机去完成,可以节省人力和时间成本,从而提高测试效率。那是不是自动化测试就一定好呢?自动化测试就可以更多的去代替手工测试呢?其实事实并不是如此,在实际的软件测试工作中,自动化测试并不能完全代替人工测试。虽然,自动化测试能解决很多问题,但同时也存在很多问题。

手工测试优点:自动化测试无法代替探索性测试、发散思维类无既定结果的测试。缺点:工作量大,需要投入大量的人力和时间

自动化测试优点:

       1、更适用于回归测试,这也是自动化测试的主要任务。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率,缩短回归测试实践。

       2、测试效率高,可以在极短的时间内运行更多的测试。

       3、可以执行手工测试因为人力等原因不可能或者存在困难的测试。比如,对于大量用户的测试,不可能同时让足够多的测试人员同时进行测试,但是却可以通过自动化测试模拟同时有许多用户,从而达到测试的目的。

       4、使测试工作得到合理的分配,更有效的利用资源,把可自动化测试的测试自动化后,让测试人员专注手工测试,因为有的测试不适合自动测试,仅适合手工测试。

       5、具有一致性和可重复性,由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的。从而达到测试的可重复的效果。

       6、测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。

       7、增强软件信任度,由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量,一旦软件通过了强有力的自动测试后,软件的信任度自然会增加。

自动化测试缺点:

       1、前期准备工作比较繁琐。自动化测试在整个测试周期中何时开展,哪些测试工作可以由自动化测试替代,这些都需要在开始部署自动化测试前,进行思考。

       2、人员要求高。自动化测试用例与手工测试用例大不相同,自动化测试实施过程中,需要不断的开发与维护脚本,因此对测试人员能力有很高要求。

       3、手工测试比自动测试发现的缺陷更多。自动化只能检查一些比较主要问题,如崩溃、死机,但是却无法发现一些一般的日常错误。

       4、测试脚本编写费时。在自动化测试中编写测试脚本工作量很大,有时候该工作量甚至超过了手动测试的时间。

       5、工具本身并无想象力。工具是相对机械、缺乏思维的东西,人是具有很强智能判断能力的动物。

       6、自动化测试不能取代手工测试。各有利弊,需相辅相成。

       7、测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。

 三、查询软件测试策略的各质量特性的定义

(1)测试级别:常见的测试级别有单元测试,集成测试和系统测试。大部分的测试组织里面,单元测试由开发负责,而集成测试和系统测试由测试部门或者质量保证部门负责。

(2)角色与职责:需要在测试策略里面明确定义各个角色,以及该角色的职责。比如项目经理,测试组长,测试工程师…

(3)环境需求:这一点非常重要,它将描述测试时需要的系统环境,包括软硬件以及网络环境等等。在澄清环境需求的时候,测试组织可以识别出资源方面的风险。

(4)风险分析:影响测试过程的风险都应该尽早被识别出来,而且必须有相应的解决办法以便消除或者减轻这些风险。

(5)测试进度:测试进度将会评估完成测试所需要的时间。在设定进度的时候,首先需要明确测试范围,然后根据测试资源的多少来制定能被各方面认可的测试进度计划。做一个非常准确的进度计划是困难的事情,因为测试过程中充满了各种不确定性,所以一般计划者需要考虑增加一定的buffer。当然,制定进度计划的时候可以参考已有的项目的数据。如果是一个全新的软件项目,专家认为将初始计划的时间翻倍比较靠谱!

(6)回归测试方法:回归测试用来保证之前fix bug的代码不会影响软件的其他部分,这样需要我们选择已经执行过的测试用例重新运行。测试人员需要找到一个方法来确定哪些测试用例应该在回归测试中运行,用例不能太多,因为资源有限,用例也不能太少,否则会达不到必须的测试强度。不过,如果测试部门对待测系统以及软件架构非常了解的话,就比较容易找到合适的回归测试集合。

(7)测试范围:这个没啥好说的,就是你要测试的内容,可能是某些模块,可能是某些指标,比如功能,性能,易用性…

(8)测试优先级:测试范围内的东西不会都是一样重要的,加上测试资源各种有限,所以为测试排定优先级是十分的必要。

 四、软件开发的生命周期有哪些环节?

软件生命周期模型

瀑布模型

1、计划

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

2、需求分析

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

3、软件设计

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

4、程序编码

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

5、软件测试

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

6、运行维护

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

迭代式模型

图1 迭代式模型

迭代式模型是是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。

迭代和瀑布差别

迭代和瀑布差别

迭代和瀑布的最大的差别就在于风险的暴露时间上。“任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么您的计划自然会更趋精确。有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。”  由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来,为了解决这些问题的风险是巨大的。"在迭代式生命周期中,您需要根据主要风险列表选择要在迭代中开发的新的增量内容。每次迭代完成时都会生成一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。"

快速原型模型

快速原型(Rapid Prototype)模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。在我的经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在你的原型面前往往口若悬河,有些观点让你都觉得非常的吃惊。在得到用户的需求之后,原型将被抛弃。因为原型开发的速度很快,设计方面是几乎没有考虑的,如果保留原型的话,在随后的开发中会为此付出极大的代价。至于保留原型方面,也是有一种叫做增量模型是这么做的,但这种模型并不为大家所接受,不在我们的讨论之内。 上述的模型中都有自己独特的思想,其实软件组织中很少说标准的采用那一种模型的。模型和实用还是有很大的区别的。  软件生命周期模型的发展实际上是体现了软件工程理论的发展。在最早的时候,软件的生命周期处于无序、混乱的情况。一些人为了能够控制软件的开发过程,就把软件开发严格的区分为多个不同的阶段,并在阶段间加上严格的审查。这就是瀑布模型产生的起因。瀑布模型体现了人们对软件过程的一个希望:严格控制、确保质量。可惜的是,现实往往是残酷的。瀑布模型根本达不到这个过高的要求,因为软件的过程往往难于预测。反而导致了其它的负面影响,例如大量的文档、繁琐的审批。因此人们就开始尝试着用其它的方法来改进或替代瀑布方法。例如把过程细分来增加过程的可预测性。

 V模型

W模型 

五、软件测试各阶段测试的重点是什么 ?

开发的5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试。(回归测试)(软件发布后)。

每阶段都有5个步骤:测试计划、测试设计、用例设计、执行结果、测试报告

1、单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试,测试重点是系统的模块,包括子程序的正确性验证等。

2、集成测试在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。其主要目的是检验软件各单位之间的接口是否正确。实践表明,一些模块虽然可以单独工作,但并不能**连接起来也能正常工作。程序在某些局部反映不出来的问题,在全局上可能暴露。测试重点是模块间的衔接以及参数的传递等。

3、确认测试确认测试的目标是验证软件的功能和性能以及其他特性是否与用户的要求一致。确认测试一般包括有效性测试和软件配置复查。一般由第三方测试机构进行。

4、系统测试是对已经集成好的软件系统进行彻底的测试,已验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确。重点:整个系统的运行以及与其他软件的兼容性。

5、验收测试旨在向软件的购买者展示该软件满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。

回归测试是在软件的维护阶段,对软件进行修改之后进行的测试,其目的是检验对软件的修改是否正确。

六、完成课堂任务后的收获的技术有哪些?

1、中断响应

2、中断某一处


bpafter http://119.3.152.250:3000/#/profile
bpu /bpafter清除中断请求、响应

 

热门文章

暂无图片
编程学习 ·

exe4j详细使用教程(附下载安装链接)

一、exe4j介绍 ​ exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面(GUI)或命令行的应用程序。如果你想在任务管理器中及Windows XP分组的用户友好任务栏…
暂无图片
编程学习 ·

AUTOSAR从入门到精通100讲(126)-浅谈车载充电系统通信方案

01 引言 本文深入研究车载充电系统策略,设计出一套基于电动汽车电池管理系统与车载充电机的CAN通信协议,可供电动汽车设计人员参考借鉴。 02 电动汽车充电系统通讯网络 电动汽车整车控制系统中采用的是CAN总线通信方式,由一个整车内部高速CAN网络、内部低速CAN网络和一个充电…
暂无图片
编程学习 ·

CMake(九):生成器表达式

当运行CMake时,开发人员倾向于认为它是一个简单的步骤,需要读取项目的CMakeLists.txt文件,并生成相关的特定于生成器的项目文件集(例如Visual Studio解决方案和项目文件,Xcode项目,Unix Makefiles或Ninja输入文件)。然…
暂无图片
编程学习 ·

47.第十章 网络协议和管理配置 -- 网络配置(八)

4.3.3 route 命令 路由表管理命令 路由表主要构成: Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低Genmask:目标网络对应的netmaskIface: 到达对应网络,应该从当前主机哪个网卡发送出来Gateway: 到达非直连的网络,…
暂无图片
编程学习 ·

元宇宙技术基础

请看图: 1、通过AR、VR等交互技术提升游戏的沉浸感 回顾游戏的发展历程,沉浸感的提升一直是技术突破的主要方向。从《愤怒的小鸟》到CSGO,游戏建模方式从2D到3D的提升使游戏中的物体呈现立体感。玩家在游戏中可以只有切换视角,进而提升沉浸…
暂无图片
编程学习 ·

flink的伪分布式搭建

一 flink的伪分布式搭建 1.1 执行架构图 1.Flink程序需要提交给 Job Client2.Job Client将作业提交给 Job Manager3.Job Manager负责协调资源分配和作业执行。 资源分配完成后,任务将提交给相应的 Task Manage。4.Task Manager启动一个线程以开始执行。Task Manage…
暂无图片
编程学习 ·

十进制正整数与二进制字符串的转换(C++)

Function one: //十进制数字转成二进制字符串 string Binary(int x) {string s "";while(x){if(x % 2 0) s 0 s;else s 1 s;x / 2;}return s; } Function two: //二进制字符串变为十进制数字 int Decimal(string s) {int num 0, …
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统: 微信小程序——辩论管理前台涉及技术:WXML 和 WXS…
暂无图片
编程学习 ·

树莓派驱动DHT11温湿度传感器

1,直接使用python库 代码如下 import RPi.GPIO as GPIO import dht11 import time import datetimeGPIO.setwarnings(True) GPIO.setmode(GPIO.BCM)instance dht11.DHT11(pin14)try:while True:result instance.read()if result.is_valid():print(ok)print(&quo…
暂无图片
编程学习 ·

ELK简介

ELK简介 ELK是三个开源软件的缩写,Elasticsearch、Logstash、Kibana。它们都是开源软件。不过现在还新增了一个 Beats,它是一个轻量级的日志收集处理工具(Agent),Beats 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstas…
暂无图片
编程学习 ·

Linux 基础

通常大数据框架都部署在 Linux 服务器上,所以需要具备一定的 Linux 知识。Linux 书籍当中比较著名的是 《鸟哥私房菜》系列,这个系列很全面也很经典。但如果你希望能够快速地入门,这里推荐《Linux 就该这么学》,其网站上有免费的电…
暂无图片
编程学习 ·

Windows2022 无线网卡装不上驱动

想来 Windows2022 和 windows10/11 的驱动应该差不多通用的,但是死活装不上呢? 搜一下,有人提到 “默认安装时‘无线LAN服务’是关闭的,如果需要开启,只需要在“添加角色和功能”中,选择开启“无线LAN服务…
暂无图片
编程学习 ·

【嵌入式面试宝典】版本控制工具Git常用命令总结

目录 创建仓库 查看信息 版本回退 版本检出 远程库 Git 创建仓库 git initgit add <file> 可反复多次使用&#xff0c;添加多个文件git commit -m <message> 查看信息 git status 仓库当前的状态git diff 差异对比git log 历史记录&#xff0c;提交日志--pret…
暂无图片
编程学习 ·

用Postman生成测试报告

newman newman是一款基于nodejs开发的可以运行postman脚本的工具&#xff0c;使用Newman&#xff0c;可以直接从命令运行和测试postman集合。 安装nodejs 下载地址&#xff1a;https://nodejs.org/en/download/ 选择自己系统相对应的版本内容进行下载&#xff0c;然后傻瓜式安…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…