千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

当前位置:首页  >  零基础学IT  >  零基础学软件测试  > 零基础学软件测试第1步:先搞清楚测试到底是干什么的_千锋教育

零基础学软件测试第1步:先搞清楚测试到底是干什么的_千锋教育

来源:千锋教育
发布人:cli
时间: 2026-07-03 18:48:32 1783075712

01 一个社交App的崩溃现场

假设你刚加入一家创业公司,负责一款名为“友圈”的社交App。上线前夜,你收到一条用户反馈:“发送图片后,对方收到的是一张黑图。” 你打开App,重复操作三次,图片发送正常。但你并没有关掉这个Bug,因为你知道:测试不是验证功能能用,而是找它什么时候不能用。

你开始排查:是WiFi下必现?还是4G网络下偶发?是Android 12特有?还是iOS 16全中?你写了一个简单的测试脚本,模拟50次并发发送图片的操作:

python
# 模拟并发发送图片的测试脚本
import threading
import requests
import time

def send_image(user_token, image_path):
    """模拟用户发送图片"""
    url = "https://api.friendcircle.com/v1/image/upload"
    headers = {"Authorization": f"Bearer {user_token}"}
    files = {"file": open(image_path, "rb")}
    try:
        response = requests.post(url, headers=headers, files=files, timeout=10)
        if response.status_code != 200:
            print(f"发送失败,状态码: {response.status_code}")
    except Exception as e:
        print(f"网络异常: {e}")

if __name__ == "__main__":
    tokens = [f"user_{i}" for i in range(50)]
    threads = []
    for token in tokens:
        t = threading.Thread(target=send_image, args=(token, "test.jpg"))
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
    print("并发测试完成")

运行后发现:当并发数超过30时,服务端返回503错误,且部分请求的图片数据被截断。你定位到了问题:服务端未做并发限流,导致图片分片上传时出现竞态条件。

这就是测试的核心:不是证明软件能用,而是找出它在什么条件下会失效。

02 测试不是“点点点”,而是“找边界”

很多新人以为测试就是跟着用例点按钮,看到界面正常就PASS。但真实的测试,是在系统、数据、环境、用户四个维度上寻找边界。

维度具体问题测试动作
系统边界并发300用户时系统崩溃压力测试,监控CPU/内存/响应时间
数据边界用户名长度255字符时数据库报错边界值分析,输入256字符
环境边界Android 9以下版本图片无法加载多机型兼容测试
用户边界连续快速点击“发送”导致重复消息异常操作模拟

还是“友圈”App,你在测试“点赞”功能时,发现当用户点赞数超过1000后,点赞按钮的响应延迟从200ms飙升到3秒。你检查了代码,发现前端每次渲染时都重新遍历整个点赞列表:

python
# 优化前的代码(每次渲染全量遍历)
def render_likes(likes_list):
    for like in likes_list:  # 列表长度超过1000时,渲染时间线性增长
        render_like_item(like)

# 优化后的代码(只渲染增量)
def render_likes(likes_list, last_id):
    new_likes = [like for like in likes_list if like.id > last_id]
    for like in new_likes:
        render_like_item(like)

你把Bug提交给开发,并附上了性能测试数据:1000点赞时渲染耗时2.8秒,优化后降到80毫秒。你发现了一个开发没注意到的性能隐患,这就是测试的价值:不让小问题在线上放大。

03 测试的三种角色:守门员、侦探、教练

测试不是单一工种。根据你在团队中的位置,你需要切换三种角色:

守门员:上线前拦截低级Bug。比如密码输入框允许含空格、退费金额为负数时仍能提交。这个阶段,你的工作是对照需求文档,用等价类划分和边界值分析构造用例。

侦探:定位问题的根因。比如用户反馈“朋友圈发不出”,你通过抓包发现是本地Token过期后未刷新,而非服务端宕机。你写一段抓包代码验证:

python
# 使用mitmproxy抓包分析Token失效问题
from mitmproxy import http

def request(flow: http.HTTPFlow):
    if "api.friendcircle.com" in flow.request.pretty_url:
        auth = flow.request.headers.get("Authorization", "")
        if "Bearer expired_token" in auth:
            print("检测到过期Token,请求将被拒绝")

教练:推动团队建立质量意识。你发现开发频繁提交低级Bug后,可以提议在CI流水线中加入静态代码检查,并编写自动化冒烟测试用例,让每次提交都跑一遍:

python
# 冒烟测试用例(使用pytest)
def test_login_with_valid_credentials():
    response = client.post("/login", json={"username": "test", "password": "123456"})
    assert response.status_code == 200
    assert "token" in response.json()

这三种角色没有高低之分,但决定了你的工作重心:是盯着屏幕点鼠标,还是深入代码找根因。

---

测试不是找Bug,而是让团队在交付前,先自己看到风险。

行动指引:明天上班后,找出你们产品最近一周的线上故障列表,挑一个自己复现一遍,然后问自己:“如果我在上线前多做一步测试,能拦截它吗?”

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT