【测试开发】实训记录日志

news2024/11/16 1:35:08

软件测试系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 了解测试开发和软件测试


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 软件测试系列文章目录
  • 前言
  • 第一天
  • 一、软件测试是什么?
    • 1.软件测试的概念
    • 2.chatgpt的使用
  • 第二天
  • 二、软件测试环境的搭建
    • 1.python安装环境
    • 2.第一个脚本
    • 3.pytest的使用
    • 4.pytest环境的设置
  • 第三天
    • 1.pytest框架的使用
    • 2.参数组合
    • 3.前置条件
    • 4.allure的使用
    • 5.测试报告的生成
    • 6.allure的使用
    • 7.生成web网站
  • 第四天2023年6月8日
    • 1.练习生成网站和作业
    • 2.练习游戏的测试
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

第一天

一、软件测试是什么?

1.软件测试的概念

代码如下(示例):

测试开发实训
测试开发和软件测试是不同的
软件测试 测试开发
职责 业务测试  团队效能提升
工作形式 人工测试 自动化测试为主 测试开发能力建设
角色 外包 初级 测试开发工程师 开发工程师
薪酬 低 高
能力要求 低 高
已澄清的需求列表
产品待办列表
需求排期会
迭代待办列表
产品功能细化
迭代周期
每日站会
需求分析 设计 澄清
持续交付
质量保障与测试能力
业务测试 用例维护 自动化测试
用户端测试 服务端测试 专项测试
测试左移 测试右移
效能提升
测试工具 测试框架 测试平台
敏捷过程改进
薪资优势 属于研发线 
负责百度核心产品的测试工作
参与产品需求,系统设计和程序代码的评审工作并提出改进意见
评估项目质量风险并指定项目测试方案,设计并执行测试用例,跟踪定位产品软件中的缺陷或问题,保证项目质量
快速的产品以及业务学习能力,敏捷全面的逻辑思维能力
热爱互联网 对互联网相关
Baidu
Alibaba
Tencent
外包测试团队 负责基础功能的测试
测试团队 手工测试 自动化测试 持续集成
测试开发团队 负责测试中
外部测试服务 
智能家居技术架构

关键词的提问


2.chatgpt的使用

代码如下(示例):

hatgpt关键字
实现一套课程管理系统,只需要管理ppt即可,课程管理系统使用python编写,使用数据库存储,使用bootstrap做前端

关键词的提问


第二天

二、软件测试环境的搭建

1.python安装环境

代码如下(示例):

https://docs.python.org/3/ 6

https://www.python.org/downloads/windows/

2.第一个脚本

代码如下(示例):

from selenium import webdriver
driver = webdriver.Edge()
driver.get("https://ceshiren.com/t/topic/25737")

这是打开电脑的浏览器


3.pytest的使用

代码如下帮助文档:

https://docs.python.org/zh-cn/3/library/unittest.html?highlight=test

https://docs.pytest.org/en/7.3.x/

测试的文档


4.pytest环境的设置

代码如下(示例):

File-settings-tools-python-testing

在这里插入图片描述


第三天

1.pytest框架的使用

代码如下(示例)参数化:

@pytest.mark.parametrize('name', ['python', 'java', 'java编程语言', '操作系统', '计算机原理-编译原理'])
def test_add_course_name(name):
    teacher = Teacher('teacher1', 'teacher1@beifangminzudaxue.com')
    course = Course(name=('%s' % name))
    r = teacher.add_course(course)
    assert r == True
    assert name in [course.name for course in teacher.get_courses()]

参数的使用


2.参数组合

代码如下(示例)参数化:

import pytest

from shixun2.src.course_manager.course import Course

from shixun2.src.course_manager.student import Student
from shixun2.src.course_manager.teacher import Teacher


def test_get_courses():
    student = Student('seveniruby', 'seveniruby@ceshiren.com')

    teacher = Teacher('teacher1', None)
    course = Course(name='python')
    teacher.add_course(course)

    assert 'python' in student.get_course_name_list()


def test_get_info():
    student = Student('seveniruby', 'seveniruby@ceshiren.com')
    assert 'name=seveniruby' in student.get_info()

@pytest.mark.parametrize('name, email', [
    ['seveniruby', None],
    [None, 'seveniruby@ceshiren.com'],
    [None, None]
])

def test_get_info_none(name, email):
    student = Student(name, email)
    if name is None:
        name = '未填写'
    if email is None:
        email = '未填写'
    assert f'name={name}' in student.get_info()
    assert f'email={email}' in student.get_info()


@pytest.mark.parametrize('name, email, expect', [
    ['seveniruby', 'seveniruby@ceshiren.com', f'name=seveniruby'],
    ['思寒', 'seveniruby@ceshiren.com', None],
    ['思 寒', 'seveniruby@ceshiren.com', None],
    ['思-寒', 'sevenirubym', None],
    ['思.寒', 'seveniruby@ceshiren.com', None],
    ['思/寒', 'seveniruby@ceshiren.com', f'name=思寒']
])
def test_get_info_not_none(name, email, expect):
    if expect is None:
        expect = f'name={name}'
    student = Student(name, email)
    assert expect in student.get_info()
    assert f'email={email}' in student.get_info()

@pytest.mark.parametrize('name', [
    'seveniruby',
    '思寒',
    '思 寒',
    '思-寒',
    '思.寒',
    '思/寒',
])
@pytest.mark.parametrize('email', [
    'seveniruby@ceshiren.com',
    'seven-ruby@ceshiren.com',
    '@ceshiren.com',
    '思寒@ceshiren.com',
    '思寒@思寒.com'
])
def test_get_info_not_none(name, email):
    print(name)
    print(email)
    student = Student(name, email)
    assert student is not None

# from course_manager.person import Person
# from course_manager.school import current_school
from shixun2.src.course_manager.person import Person
from shixun2.src.course_manager.school import current_school


class Student(Person):

    def __init__(self, name, email):
        super().__init__(name, email)

    def get_courses(self):
        return current_school.get_courses()

    def get_course_name_list(self):
        return [course.name for course in current_school.get_courses()]


if __name__ == '__main__':
    # 反模式

    student = Student('seveniruby', 'seveniruby@ceshiren.com')
    print(student.get_info())

    student = Student('seveniruby', None)
    print(student.get_info())
    print(student.get_courses())

    student = Student(None, None)
    student.get_info()

参数组合的和多参数和单参数


3.前置条件

代码如下(示例)参数化:

https://blog.csdn.net/anndy_/article/details/119885380

前置条件


4.allure的使用

代码如下(示例)参数化:

安装
https://blog.csdn.net/lixiaomei0623/article/details/120185069
运行
https://blog.csdn.net/weixin_42683461/article/details/120727117

allure的使用


5.测试报告的生成

代码如下(示例)参数化:

生成报告
allure serve D:/PycharmProjects/shixun2/shixun2/docs
运行命令
pytest D:/PycharmProjects/shixun2/shixun2/tests --alluredir=D:/PycharmProjects/shixun2/shixun2/docs --clean-al
luredir

在这里插入图片描述


6.allure的使用

代码如下(示例)参数化:

安装
https://blog.csdn.net/lixiaomei0623/article/details/120185069
运行
https://blog.csdn.net/weixin_42683461/article/details/120727117

allure的使用


7.生成web网站

代码html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>课程管理系统</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container">
        <h1 class="text-center my-4">课程管理系统</h1>
        <form action="/add" method="POST" class="mb-4">
            <div class="mb-3">
                <label class="form-label">课程名</label>
                <input type="text" class="form-control" name="name">
            </div>
            <div class="mb-3">
                <label class="form-label">PPT</label>
                <input type="text" class="form-control" name="ppt">
            </div>
            <button type="submit" class="btn btn-primary">添加课程</button>
        </form>
        <hr>
        <h2 class="my-4">所有课程</h2>
        <ul class="list-group">
            {% for course in courses %}
            <li class="list-group-item d-flex justify-content-between align-items-center">
                {{ course.name }}
                <a href="/delete/{{ course.name }}" class="btn btn-danger">删除</a>
            </li>
            {% endfor %}
        </ul>
    </div>
</body>
</html>

html的代码以上


代码app.py:


from urllib import request

from flask import Flask, render_template,request, redirect

from shixun2.src.course_manager.course import Course
from shixun2.src.course_manager.school import School

app = Flask(__name__)

school = School()


@app.route('/', methods=['GET'])
def index():
    return render_template('index.html', courses=school.get_courses())


@app.route('/add', methods=['POST'])
def add_course():
    name = request.form.get('name')
    ppt = request.form.get('ppt')
    course = Course(name, ppt)
    school.add_course(course)
    return redirect('/')


@app.route('/delete/<course_name>', methods=['GET'])
def delete_course(course_name):
    # school.delete_course(course_name)
    school.remove_course(course_name)
    return redirect('/')


if __name__ == '__main__':
    app.run(debug=True)

app.py的代码
在这里插入图片描述


第四天2023年6月8日

1.练习生成网站和作业

代码如下(示例)参数化:

生成web网站
请设计一个课程管理系统,
学校可以管理课程。
课程包含课程名字与ppt。
老师可以添加课程到学校。
管理员可以添加课程与删除课程。

后端代码使用python开发,课程数据存储可以使用变量的方式。
前端代码使用bootstrap,前端界面界面支持对课程的新增、展示、删除。使用后端的模板技术实现。

不要提供注释。

练习3
使用类的方式实现测试装置 setup setup_class teardown teardown_class
生成测试报告

游戏的使用


2.练习游戏的测试

代码如下(示例)hero.py:

class Hero:
    def __init__(self, name, power, attack):
        self.name = name
        self.power = power
        self.attack = attack

    def action(self, target: 'Hero'):
        target.power = target.power - self.attack
        print(f"{self.name} power={self.power} -> {target.name} power={target.power}")

代码如下(示例)play.py:

from shixun2.src.game.hero import Hero


class Play:
    def __init__(self, main, target):
        self.main: Hero = main
        self.target: Hero = target

    def start(self):
        while self.main.power >= 0 and self.target.power >= 0:
            self.main.action(self.target)
            if self.target.power <= 0:
                return True
            self.target.action(self.main)
            if self.main.power <= 0:
                return False

    def pause(self):
        ...


代码如下(示例)test_play.py:

from shixun2.src.game.hero import Hero
from shixun2.src.game.paly import Play

class TestPlay:
    def test_fail(self):
        hero1 = Hero(name="李白", power=100, attack=20)
        hero2 = Hero(name='东皇太一', power=80, attack=40)
        play = Play(hero1, hero2)
        r = play.start()
        assert r == False

    def test_win(self):
        hero1 = Hero(name="李白", power=100, attack=20)
        hero2 = Hero(name='东皇太一', power=80, attack=30)
        play = Play(hero1, hero2)
        r = play.start()
        assert r == True

游戏测试的使用
在这里插入图片描述


总结

提示:这里对文章进行总结:

例如:记录实训内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建模杂谈系列226 流程与对象

说明 鲁迅说&#xff1a;我家门前门前有两棵树&#xff0c;一棵是枣树&#xff0c;另一棵也是枣树。 从编程语言的角度&#xff0c;可以分为两大类&#xff08;面向过程或面向对象&#xff09;&#xff0c;可以参考这篇文章 文章的内容其实不多&#xff0c;我贴一下&#xff1…

spark入门 YARN模式(六)

一、背景 独立部署&#xff08;Standalone&#xff09;模式由 Spark 自身提供计算资源&#xff0c;无需其他框架提供资源。这 种方式降低了和其他第三方资源框架的耦合性&#xff0c;独立性非常强。但是你也要记住&#xff0c;Spark 主 要是计算框架&#xff0c;而不是资源调度…

CATIA软件各版本区别

之前有个朋友问catia v5r21和catia v5-6r 2011&#xff0c;有什么区别&#xff0c;是一样的吗&#xff1f; 众联亿诚才发现&#xff0c;很多朋友似乎看不懂CATIA各种版本各种型号&#xff0c;那么今天&#xff0c;众联亿诚就来详细解释一下&#xff0c;希望能帮助朋友们解答心…

苹果电脑磁盘诊断工具 SMART Utility for mac

SMART Utility for mac是一款Mac上磁盘诊断工具&#xff0c;能够自动检测磁盘的状态和错误情况&#xff0c;分析并提供错误报告,以直观的界面让用户可明确地知道自己的磁盘状况。SMART Utilitymac版支持普通硬盘HDD和固态硬盘SSD&#xff0c;能够显示出详细的磁盘信息&#xff…

版权中心改革之后,软著办理需要多少钱?

版权中心改革之后&#xff0c;软著办理需要多少钱&#xff1f; 众所周知版权中心2年改了3次&#xff0c;每次改革官费都会涨&#xff0c;最近一次是在4月份&#xff0c;官费涨了近一倍。 其实费用涨了还不算最坏的情况&#xff0c;主要是每次改革办理软著的难度都会增加很多。…

(antD)vue项目使用图标

(antD)vue项目使用图标 效果&#xff1a; <a-icon type"arrow-left" class"backBtn" v-if"cardDiv" click"backBtn" />.backBtn {color&#xff1a;#ccc;font-size: 20px;//图标大小 }

程序员爬虫Scrapy框架知识学习

Scrapy是一个Python编写的高级网络爬虫框架&#xff0c;它可以帮助开发者快速、高效地从网站上获取数据。以下是学习Scrapy框架的一些步骤和建议&#xff1a; 学习Python基础知识&#xff1a;Scrapy是用Python编写的&#xff0c;因此需要掌握Python的基础知识&#xff0c;包括语…

利用彩虹线课程中的知识来制作精美的渐变色块和彩虹字

彩虹字 像这样的效果,同样我们可以使用“渐变色”的技巧。来看下面如何操作 选中字体,然后鼠标右键选”设置型状格式“ 选择“渐变” 有两处决定了彩虹字的样式。 拖动的箭头,这个箭头代表“每一个段”显示的色彩,如我DEMO中的字体是“两段颜色”-蓝+黄组合出来的;角度,…

在本地环境搭建GPT项目

先看效果: 在本地环境搭建gpt项目 1.简介 忽略不能写 2.准备环境 Docker的介绍和安装 Docker是一个开源的容器化平台,它可以帮助开发者和运维人员轻松地构建、打包和部署应用程序。使用Docker,您可以将应用程序及其所有依赖项打包到一个称为容器的独立单元中,使其可…

创新与互动的科技盛宴:探索3DVR元宇宙赛博科技世界虚拟展

导语&#xff1a; 在现代科技迅猛发展的时代&#xff0c;3DVR元宇宙虚拟展厅为我们带来了一场前所未有的科技盛宴。特别是在赛博科技领域&#xff0c;它展现了一系列令人惊叹的优势、优点和实质性的作用&#xff0c;为客户带来了非凡的体验和无限的可能。 一&#xff0e;创新科…

在windows上用gpu训练paddleocr模型所有遇到的坑与解决办法

这里写自定义目录标题 1.首先拉取paddleocr源代码下载预训练模型2.开始训练更改yml配置文件 3.遇到的报错1.ModuleNotFoundError: No module named Polygon2.最难解决的No module named lanms3.ImportError: cannot import name _print_arguments from paddle.distributed.util…

利用scikit-plot可视化机器学习模型!

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 scikit-learn (sklearn)是Python环境下常见的机器学习库&#xff0c;包含了常见的分类、回归和聚类算法。在训练模型之后&#xff0c;常见的操作是对模型进行可视化&#…

这么坑?3年经验我要25K,结果只给15K····

2023找到一份满意的工作实在是太难了呀&#xff0c;面试了十几家公司&#xff0c;没有一个满意的offer 我的情况 大概介绍一下个人情况&#xff0c;女&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xf…

北漂5年终上岸,年薪40W并非遥不可及····

关于我&#xff0c;普通二本&#xff0c;非计算机专业&#xff0c;培训出身&#xff0c;北漂&#xff0c;五年多的工作经验&#xff0c;做过外包&#xff0c;中间有过频繁的跳槽经历&#xff0c;手工点点点为主&#xff0c;最近确认了新Offer&#xff0c;远程办公&#xff0c;涨…

C++ Release版软件 程序运行丢失MSVCR120D.dll的解决方法

软件在Debug模式下运行时正常的&#xff0c;但是切换到Release模式下就弹出错误提示&#xff1a;无法启动此程序&#xff0c;因为计算机中丢失MSVCR120D.dll。尝试重新安装该程序以解决此问题。 解决方法如下&#xff1a; 1、项目“属性”---->配置给为“Release”版本----&…

Python数据分析——教育平台的线上课程智能推荐策略(2020泰迪杯数据分析技能赛)

赛题背景&#xff1a;近年来&#xff0c;随着互联网与通信技术的高速发展&#xff0c;学习资源的建设与共享呈现出新的发展趋势&#xff0c;各种网课、慕课、直播课等层出不穷&#xff0c;各种在线教育平台和学习 应用纷纷涌现。尤其是 2020 年春季学期&#xff0c;受新冠疫情影…

SciencePub学术 | 网络通信类重点SCIEI征稿中

SciencePub学术 刊源推荐: 网络通信类重点SCI&EI征稿中&#xff01;稳定检索56年&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 网络通信类重点SCI&EI 【期刊简介】IF&#xff1a;1.0-1.5&#xff0c;JCR4区&#xff0c;中科院4区…

metasploit-framework(msf)——学习与实践

MSF是Metasploit Framework的缩写&#xff0c;是一款广泛使用的渗透测试工具&#xff0c;具有强大的攻击功能。它提供了一个模块化的平台&#xff0c;通过将各种攻击载荷、漏洞利用和辅助工具组装在一起&#xff0c;可用于模拟各种攻击&#xff0c;测试系统安全性&#xff0c;也…

【深度学习】日常笔记2

一直以来其实对调参这个词不太熟悉&#xff0c;后面知道了比如学习率就为超参数&#xff0c;是被调参的对象&#xff1a; ↑标量方程对向量的导数 大概就是↓ 在对矩阵求导时&#xff0c;我们需要使用矩阵微积分中的求导法则。对于一个标量函数 f(x)&#xff0c;它关于向量 x 的…

小程序项目—知识付费系统源码(多版本)

随着互联网的发展&#xff0c;知识付费成为了一种新的商业模式&#xff0c;越来越多的人开始通过知识付费来获取所需的知识和技能。为了更好地管理和运营知识付费系统&#xff0c;需要开发一个管理后台&#xff0c;本文将介绍知识付费系统管理后台的功能和实现。 产品介绍 &am…