【Alpha】SimDep FaaS 测试报告

测试项目

具体的测试方案请参考‌‍⁣‌‌⁢⁤‍‍⁢⁣⁡‬⁢⁡‌⁢‬⁡⁤⁤⁤⁢‍⁣⁢⁡‬‬⁤‍⁣‬‬⁡⁢测试 - 飞书云文档 (feishu.cn),这里仅报告测试矩阵及结果。

前端测试

前端主要测试兼容性内容正确性

测试条例\操作系统,浏览器,设备Windows
Microsoft Edge
版本 112.0.1722.58(正式版本)(64 位)
Windows
Google Chrome
版本 112.0.5615.138(正式版本)(64 位)
MACOS
Apple Safari
版本 16.4 (18615.1.26.11.23)
Android
Microsoft Edge
版本 110.0.1587.66
页面元素检查,是否还原原型通过通过通过元素布局错乱
页面布局、缩放适应度检查缩放25%, 50%元素折叠缩放25%, 50%元素折叠缩放25%, 50%,75%元素折叠元素布局错乱
主页面测试通过通过通过-
Web IDE测试通过通过通过-
触发器页面通过通过通过-
日志查询页面通过通过通过-

因Android端元素布局错乱,且前端未对小设备做适配,因此我们未完成全部测试。

后端测试

单元测试

单元测试在开发过程中编写,用于保证后续开发不会影响之前接口的正确性。我们使用Github Actions将单元测试运行集成进ci中,自动生成,发布测试报告。最近开发版本的单元测试报告请参考Codecov

我们单元测试的覆盖率达到了90.32%,覆盖了大部分服务的api

场景测试

我们考虑两个较为常见的使用场景,进行部署测试。

场景1—开发入门初学者/爱好者
姓名守好嘉
年龄18
用户市场比例30%
用户重要性较为重要
典型场景刚刚学了一门新语言,想用它来干点什么?
动机初学编程,希望能做出一些应用的东西
困难只会一些基本的语法,距离能有效果的应用很远
偏好希望能得到一些正反馈
特点没有钱,不大能接受付费,但是是很好的宣传者

守好嘉想尝试网络API请求,于是编写了以下代码,并启动云函数服务。

def handler(request):
    return "Hello, Sim-Dep!"

之后,FaaS平台为其分配了一个用于测试的API:

Get call/ShouHaoJia/CallFunction

守好嘉使用Postman软件测试云函数的部署情况,并得到了如下的返回结果。

在这里插入图片描述

守好嘉非常开心,因为他在无需配置服务器的情况下,踏出了学习后端的第一步!

场景2-邮件整理
姓名支支
年龄22
用户市场比例20%
用户重要性很重要
典型场景使用FaaS平台简单部署一些静态页面或自动化任务
动机会一点例如python之类的语言,有例如页面展示,自动化任务等需求
困难没有动力和机会学习开发框架以及运维方法。
偏好希望能尽可能简单地完成任务
特点希望将类似平台作为生产力工具,占比较大而且有付费能力

支支首先编写了一个python脚本用于电子邮件归档她北航邮箱里邮件,并将整理后的邮件发送给自己。

import imaplib
import smtplib
import os
from email.message import EmailMessage
from email import message_from_bytes
from email.header import decode_header

# IMAP服务器配置
IMAP_SERVER = 'mail.buaa.edu.cn'
IMAP_PORT = 993
IMAP_USER = 'zhizhi@buaa.edu.cn'
IMAP_PASSWORD = 'zhizhi_zui_ke_ai'

# SMTP服务器配置
SMTP_SERVER = 'smtp.buaa.edu.cn'
SMTP_PORT = 587
SMTP_USER = 'zhizhi@buaa.edu.cn'
SMTP_PASSWORD = 'zhizhi_zui_ke_ai'

# 邮件配置
FROM_EMAIL = 'zhizhi@buaa.edu.cn'
TO_EMAIL = 'zhizhi@buaa.edu.cn'
SUBJECT = '[Sim-Dep FaaS]:邮件整理服务'
BODY = 'Sim-Dep FaaS:这是整理好的邮件,请查收。'
ATTACHMENT_DIR = ''


def decode(message_info):
    dh = decode_header(message_info)
    return dh[0][0].decode(dh[0][1]) if dh[0][1] else dh[0][0]


# 连接IMAP服务器并获取邮件
def get_emails():
    with imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT) as mail:
        mail.login(IMAP_USER, IMAP_PASSWORD)
        mail.select('inbox')
        typ, data = mail.search(None, 'UNSEEN')
        mail_ids = data[0].split()
        emails = []
        for mail_id in mail_ids:
            typ, data = mail.fetch(mail_id, '(RFC822)')
            emails.append(message_from_bytes(data[0][1]))
        return emails


# 将整理好的邮件发送回邮箱
def send_emails(emails):
    with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as smtp:
        smtp.ehlo()
        smtp.login(SMTP_USER, SMTP_PASSWORD)
        for email in emails:
            msg = EmailMessage()
            msg['From'] = FROM_EMAIL
            msg['To'] = TO_EMAIL
            msg['Subject'] = SUBJECT
            msg.set_content(BODY)
            attachment_path = os.path.join(ATTACHMENT_DIR,
                                           f'{decode(email["subject"]).replace("/", "").replace(" ", "")}.eml')
            with open(attachment_path, 'wb') as f:
                f.write(email.as_bytes())
            with open(attachment_path, 'rb') as f:
                attachment_data = f.read()
                msg.add_attachment(attachment_data, maintype='application', subtype='octet-stream',
                                   filename=attachment_path)
            smtp.send_message(msg)
            os.remove(attachment_path)


def handler(request):
    emails = get_emails()
    send_emails(emails)

之后支支将其提交到FaaS平台并配置了定时触发器,在每天的早上八点和晚上八点自动整理上一段时间邮件。在部署完成后的第一天,支支的邮箱里收到了以下的类似邮件。这让她十分高兴,这下终于不用时时刻刻注意邮箱中是否有新邮件了。

在这里插入图片描述

性能测试

负载测试

该部分使用JMeter,对已上线模块的高频访问接口进行压力测试。

在这里插入图片描述

  • 这里获取函数列表的接口在1000并发量的花费时间小于100并发量,我们根据错误码,推测这里是因为大量请求被服务端关闭,因此接口响应速度较快。
  • 除此之外,用户登录接口的1000并发量费时和异常率都较高。我们分析相应错误码后,发现大部分为请求超时,初步推断这里是对用户进行鉴权操作时,涉及Redis和Mysql两个数据库的多次增删查改,降低了性能。

用户管理服务部分测试报告展示

在这里插入图片描述

压力测试

该部分主要测试服务的稳定性。对于在线人数的测试条例,由于模拟多个用户存在的行为较为复杂,我们使用JMeter启动相应人次的线程,通过每隔10s访问函数查询完成测试的模拟。对于计算服务运行压力测试,我们在测试账户上同时启动相应人次的云函数,并通过python脚本不定时访问云函数的链接判断云函数的稳定性。

在这里插入图片描述

我们的结论是在高并发的负载测试下,我们的服务稳定性较差,仅可满足并发量为100的服务请求。但在长时间的压力测试下,我们的平台具有较好的稳定性。因此beta版本的优化目标为增加峰值高并发的处理能力。

问题回答

测试过程中发现了多少BUG

我们将测试过程中的BUG共享到飞书文档中。

场景测试

参考后端测试下的场景测试,以及我们发布的最佳实践部分

测试矩阵

测试矩阵请参考前端测试中的兼容性测试。

出口条件

Alpha版本我们立足于开发出一个可用、可测、预期功能完善的软件,因此会对细节与不紧急的bug有一定的容忍度。

我们认为可以暂时忽略或转换以下要求:

  • 具有简洁,美观的前端页面 ——> 具备功能齐全的前端页面
  • 体现良好的用户交互设计,上手简单 ——> 提供功能文档、教程
  • 稳定、满足高并发的服务系统 ——> 面向小规模用户服务

我们定义该版本的软件需要满足以下条件:

  • 通过基本的功能测试,无高优先级bug,无重大功能缺失。
  • 通过基本的兼容性测试,适配高频浏览器应用和主流的PC环境。
  • 通过基本的场景测试,能够部署上述典型的应用场景。
  • 通过基本的压力测试,面向小规模用户和并发量下提供稳定、可靠和高效的服务。

因此,对于上述条件。我们的软件虽然未能通过所有的测试情况,但在满足基本可用的前提下,已经完成了上述目标。因此作为测试人员,我认为我们的项目达到了alpha版本的发布条件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值