7-测试模型(2个)

目录

1.软件测试V模型

2.软件测试W模型(双V模型)


1.软件测试V模型

 V模型最早是由Paul Rook在20世纪80年代后期提出的,目的是改进软件开发的效率和效果。是瀑布模型的变种。

  • 明确地标注了测试过程中存在的不同类型的测试,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。
  • 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试。
  • 特点:左边是开发,右边是测试;类似于瀑布模型(在编码处转折了下)。
  • 优点:测试被划分为许多类型。
  • 缺点:测试人员介入太晚,问题发现太晚。

2.软件测试W模型(双V模型)

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
  • W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。
  • W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
  • 局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系, 上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。
  • 特点:开发一个V,测试一个V。
  • 优点:测试人员能够尽早介入了需求。
  • 缺点:测试人员和开发人员一定程度上还是串行的;不能拥抱变化,不适用于敏捷。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 U-Net 模型进行测试的示例代码,使用 PyTorch 框架: ```python import torch import torch.nn as nn from PIL import Image class UNet(nn.Module): def __init__(self, in_channels, out_channels): super(UNet, self).__init__() # Encoder self.conv1 = nn.Conv2d(in_channels, 64, kernel_size=3, padding=1) self.conv2 = nn.Conv2d(64, 128, kernel_size=3, padding=1) self.conv3 = nn.Conv2d(128, 256, kernel_size=3, padding=1) self.conv4 = nn.Conv2d(256, 512, kernel_size=3, padding=1) # Decoder self.upconv1 = nn.ConvTranspose2d(512, 256, kernel_size=2, stride=2) self.conv5 = nn.Conv2d(512, 256, kernel_size=3, padding=1) self.upconv2 = nn.ConvTranspose2d(256, 128, kernel_size=2, stride=2) self.conv6 = nn.Conv2d(256, 128, kernel_size=3, padding=1) self.upconv3 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2) self.conv7 = nn.Conv2d(128, 64, kernel_size=3, padding=1) self.conv8 = nn.Conv2d(64, out_channels, kernel_size=1) self.relu = nn.ReLU(inplace=True) def forward(self, x): # Encoder x1 = self.relu(self.conv1(x)) x2 = self.relu(self.conv2(x1)) x3 = self.relu(self.conv3(x2)) x4 = self.relu(self.conv4(x3)) # Decoder x = self.relu(self.upconv1(x4)) x = torch.cat([x, x3], dim=1) x = self.relu(self.conv5(x)) x = self.relu(self.upconv2(x)) x = torch.cat([x, x2], dim=1) x = self.relu(self.conv6(x)) x = self.relu(self.upconv3(x)) x = torch.cat([x, x1], dim=1) x = self.relu(self.conv7(x)) x = self.conv8(x) return x # 测试模型 model = UNet(3, 1) # 输入通道数为3,输出通道数为1 model.load_state_dict(torch.load('model.pth')) # 加载保存的模型参数 model.eval() # 切换到评估模式 image = Image.open('test.jpg') # 读取测试图像 image = image.convert('RGB') # 转换为RGB格式 image = image.resize((256, 256)) # 缩放为256x256大小 image = torch.tensor([transforms.ToTensor()(image)]) # 转换为张量 with torch.no_grad(): output = model(image) # 模型输出 output = output.sigmoid() # 将输出映射到0~1之间 output = (output > 0.5).float() # 将输出二值化 output = output.squeeze().cpu().numpy() # 转换为NumPy数组并去除批次维度 output = (output * 255).astype('uint8') # 将输出转换为0~255之间的整数 Image.fromarray(output).save('output.jpg') # 保存输出图像 ``` 在这个示例代码中,我们首先定义了一个 U-Net 模型,并加载了保存的模型参数。然后,我们读取一张测试图像,并将其转换为 PyTorch 张量。我们使用 `with torch.no_grad()` 上下文管理器来关闭自动求导,以减少内存占用和计算时间。 我们将测试图像输入到模型中,得到模型的输出。由于模型输出的值域为 $(-\infty, \infty)$,我们使用 `sigmoid()` 函数将其映射到 $(0, 1)$,然后使用阈值为 $0.5$ 的二值化操作将其转换为二值图像。最后,我们将输出转换为 NumPy 数组,并将其保存为图像文件。 在实际应用中,我们可以使用测试代码来评估模型的性能,并调整模型的超参数以获得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值