享受每一天,Just Enjoy !

0%

  • 生活中很多事情都会有反馈机制,比如考试完,成绩就是对这段时间学习效果的反馈;玩游戏经验值就是对你在游戏中投入精力的反馈等等。那么对于程序来说也需要反馈,比如安装一个软件,如果没有进度条,那么你一定会很抓狂。因为你根本无法确认程序是否在正常工作,还是任务已经被已系统挂起。那么本文就简单的介绍几种python常用到的反馈进度条方式(包括GUI进度条)

    本文首发于伊洛的个人博客:https://yiluotalk.com,欢迎关注并查看更多内容!!!

1. 使用 Progress
  • 安装
    1
    2
    3
    4
    5
    6
    (yiluo) ➜  ~ pip install progress
    Collecting progress
    Downloading https://files.pythonhosted.org/packages/38/ef/2e887b3d2b248916fc2121889ce68af8a16aaddbe82f9ae6533c24ff0d2b/progress-1.5.tar.gz
    Installing collected packages: progress
    Running setup.py install for progress ... done
    Successfully installed progress-1.5
  • 创建一个脚本,写入以下代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 伊洛Yiluo 
    # https://yiluotalk.com

    import time
    from progress.bar import IncrementalBar

    bar_list = [1, 2, 3, 4, 5, 6, 7, 8]

    bar = IncrementalBar('progress bar', max=len(bar_list))


    if __name__ == '__main__':
    for i in bar_list:
    bar.next()
    time.sleep(1)

    bar.finish()
  • 命令行运行
    1
    2
    (yiluo) ➜  AllDemo python demo.py
    progress bar |████████████ | 3/8
    2. 使用 Tqdm
  • 安装
    1
    2
    3
    4
    5
    6
    pip install tqdm
    Collecting tqdm
    Downloading https://files.pythonhosted.org/packages/8c/c3/d049cf3fb31094ee045ec1ee29fffac218c91e82c8838c49ab4c3e52627b/tqdm-4.41.0-py2.py3-none-any.whl (56kB)
    |████████████████████████████████| 61kB 239kB/s
    Installing collected packages: tqdm
    Successfully installed tqdm-4.41.0
  • 写入以下代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 伊洛Yiluo
    # https://yiluotalk.com

    import time
    from tqdm import tqdm

    _bar = [1, 2, 3, 4, 5, 6, 7, 8]


    for item in tqdm(_bar):
    time.sleep(1)
  • 命令行运行
    1
    2
    (yiluo) ➜  AllDemo python demo.py
    62%|█████████████████████████████████▊ | 5/8
    3. 使用 Alive Progress
  • 也是很常用的,和之前例子相差不大,有兴趣的可以看以下具体的使用文档
    Alive Progress 传送门
    4. 使用 Pysimplegui(GUI)
  • 安装
    1
    2
    3
    4
    5
    6
    (yiluo) ➜  ~ pip install pysimplegui
    Collecting pysimplegui
    Downloading https://files.pythonhosted.org/packages/22/a8/ec06b5ce8997411c542dc0f65848a89b6f852b1b9c0fde8ace89aec6703e/PySimpleGUI-4.14.1-py3-none-any.whl (288kB)
    |████████████████████████████████| 296kB 286kB/s
    Installing collected packages: pysimplegui
    Successfully installed pysimplegui-4.14.1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 伊洛Yiluo
    # https://yiluotalk.com

    import PySimpleGUI as sg
    import time
    bar_list = [1, 2, 3, 4, 5, 6, 7, 8]

    for i, item in enumerate(bar_list):
    sg.one_line_progress_meter('我是进度条!', i+1, len(bar_list), 'key')
    time.sleep(1)
  • 来看看GUI的效果

    在这里插入图片描述
    关注公众号获取更多内容

    欢迎下方【戳一下】【点赞】
    Author:伊洛Yiluo
    愿你享受每一天,Just Enjoy !

写在前面—Python的优势在于

1.与主要平台和操作系统兼容
2.许多开源框架和工具
3.可读且可维护的代码
4.强大的标准库
5.标准测试驱动的开发

本文首发于伊洛的个人博客:https://yiluotalk.com,欢迎关注并查看更多内容!!!

  • 话不多说了,本文是第二部分,将讲简单的列出几条日常工作中使用Python可能会用到的语法小技巧,希望会对你的工作有所帮助 just enjoy!
    第一部分是:老司机都知道的Python语法小技巧 (一)
    14.列表中元素出现的个数
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> from collections import Counter
    >>> list = [1,2,3,4,5,1,2,3,4,5,6]
    >>> count = Counter(list)
    >>> count
    Counter({1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 1})
    15.列表中查找出现最多的元素
    1
    2
    3
    4
    5
    6
    7
    8
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def most_frequement(list):
    ... return max(set(list), key = list.count)
    ...
    >>> number = [1,2,3,4,5,6,5,5,5,5,5]
    >>> most_frequement(number)
    5
    16. 将角度从度转换为弧度
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> import math
    >>> def degrees_to_radians(deg):
    ... return (deg * math.pi) / 180
    >>> degrees_to_radians(90)
    1.5707963267948966
    17. 计算执行一段代码所花费的时间(非装饰器)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 伊洛Yiluo
    # https://yiluotalk.com
    import time
    start_time = time.time()
    a, b = 10, 20
    c = a + b
    end_time = time.time()
    time_taken = (end_time- start_time)*(10**6)
    print('耗时', time_taken)


    output
    耗时 2.1457672119140625

    Process finished with exit code 0
    18. 字符串去重
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> string = "aabbccddeeffgg"
    >>> unique = set(string)
    >>> unique
    {'a', 'f', 'b', 'g', 'c', 'e', 'd'}
    >>> new_string = ''.join(unique)
    >>> new_string
    'afbgced'
    19. 使用lambda表达式
    1
    2
    3
    4
    5
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> x = lambda a, b, c :a + b + c
    >>> print(x(1, 2, 3))
    6
    20. 使用 filter
    1
    2
    3
    4
    5
    6
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> arr = [1, 2, 3, 4, 5]
    >>> arr = list(filter(lambda x : x%2 == 0, arr))
    >>> print(arr)
    [2, 4]
    21. 列表
    1
    2
    3
    4
    5
    6
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> number = [1, 2, 3]
    >>> squares = [number**2 for number in number]
    >>> print(squares)
    [1, 4, 9]
    22. 切片
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def rotate(arr, d):
    ... return arr[d:] + arr[:d]
    ...
    >>> arr = [1,2,3,4,5]
    >>> arr = rotate(arr, 2)
    >>> print(arr)
    [3, 4, 5, 1, 2]
    23. 链式函数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def subtract(a, b):
    ... return a - b
    ...
    >>> def add(a, b):
    ... return a + b
    ...
    >>> def subtract(a, b):
    ... return a - b
    ...
    >>> a, b = 5, 10
    >>> print((subtract if a > b else add)(a, b))
    15
    >>> a, b = 10, 5
    >>> print((subtract if a > b else add)(a, b))
    5
    在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
愿你享受每一天,Just Enjoy !

关注公众号获取更多内容

  • 话不多说,本文是第一部分,将讲简单的列出几条日常工作中使用Python可能会用到的语法小技巧,希望会对你的工作有所帮助 just enjoy!

    本文首发于伊洛的个人博客:https://yiluotalk.com,欢迎关注并查看更多内容!!!

    1. 两个变量直接做交换
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> num1 = 6
    >>> num2 = 10
    >>> num1, num2 = num2, num1
    >>> num1
    10
    >>> num2
    6
    2. 检查数字是否为偶数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def is_even(num):
    ... return num %2 == 0
    ...
    >>> is_even(100)
    True
    >>> is_even(99)
    False
    3. 字符串拆为列表
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 伊洛Yiluo
    # https://yiluotalk.com
    def split_lines(s):
    return s.split('/n')


    talk = 'The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex.'

    print(split_lines(talk))


    output
    ['The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex.']

    Process finished with exit code 0
    4. 查找对象内存
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> import sys
    >>> sys.getsizeof(5)
    28
    >>> print(sys.getsizeof("Python"))
    55
    5. 反转字符串
    1
    2
    3
    4
    5
    6
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> string = "python"
    >>> reversed_string = string[::-1]
    >>> reversed_string
    'nohtyp'
    6. 打印一个字符串n次(不用循环)
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def repeat(string, n):
    ... return (string * n)
    ...
    >>> repeat('hello', 8)
    'hellohellohellohellohellohellohellohello'
    7.判断字符串是否回文
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def palindrome(string):
    ... return string == string[::-1]
    ...
    >>> palindrome('python')
    False
    >>> palindrome('abba')
    True
    8. 将字符串列表合并为一个字符串
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> strings = ['yiluo', 'hello', '18']
    >>> print(','.join(strings))
    yiluo,hello,18
    >>> a = (','.join(strings))
    >>> a
    'yiluo,hello,18'
    >>> type(a)
    <class 'str'>
    9. 查找列表的第一个元素
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def head(list):
    ... return list[0]
    ...
    >>> head(['yiluo','tom', 1, 2])
    'yiluo'
    10.合并两个列表中共有的元素
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def union(a, b):
    ... return list(set(a + b))
    ...
    >>> union([1,2,3,4,5,6], [6,5,4,3])
    [1, 2, 3, 4, 5, 6]
    >>> union([1,2,3,4,5,6], [8,7,6,5,4,3,2,1])
    [1, 2, 3, 4, 5, 6, 7, 8]
    11. 给定列表中所有唯一元素
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def unique_element(numbers):
    ... return list(set(numbers))
    ...
    >>> unique_element([1,1,2,2,3,3,4,4,5,5])
    [1, 2, 3, 4, 5]
    12. 多参数平均值
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def average(*args):
    ... return sum(args, 0.0) / len(args)
    ...
    >>> average(2,4)
    3.0
    >>> average(2,4,6,8)
    5.0
    13. 检查列表元素是否唯一
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 伊洛Yiluo
    # https://yiluotalk.com
    >>> def unique(list):
    ... if len(list)==len(set(list)):
    ... print('都是唯一的')
    ... else:
    ... print('很不幸,有重复的')
    ...
    >>> unique([1,2,3,4,5])
    都是唯一的
    >>> unique([1,1,2,2,3,3,4,4,5,5])
    很不幸,有重复的
    待续>>>
    在这里插入图片描述

    欢迎下方【戳一下】【点赞】
    Author:伊洛Yiluo
    愿你享受每一天,Just Enjoy !

关注公众号获取更多内容

  • 自动化测试执行完毕后,需要测试报告来层现测试结果。有个‘像样’的报告的好处是毋庸置疑的,今天就来简单的讲述一下自动化测试后经常使用到的测试报告Allure

    本文首发于伊洛的个人博客:https://yiluotalk.com,欢迎关注并查看更多内容!!!

    1. 安装
  • Mac下安装直接homebrew
    1
    2
    3
    4
    #伊洛Yiluo 
    #https://www.yiluotalk.com

    brew install allure
  • 检查一下安装的结果
    1
    2
    3
    4
    #伊洛Yiluo 
    #https://www.yiluotalk.com
    ➜ ~ allure --version
    2.13.1
  • 以上说明已经成功安装
    2. 安装allure-pytest
1
2
3
#伊洛Yiluo 
#https://www.yiluotalk.com
pip install allure-pytest
3. 举个栗子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 伊洛Yiluo
# https://www.yiluotalk.com
import pytest


def test_success():
assert True


def test_failure():
assert False


def test_skip():
pytest.skip('跳过测试')


def test_broken():
raise Exception('出错了')
  • 生成报告分2个步骤(后面是生成报告的路径)
    1
    2
    3
    # 伊洛Yiluo
    # https://www.yiluotalk.com
    pytest --alluredir=/tmp/my_allure_results
    1
    2
    3
    # 伊洛Yiluo
    # https://www.yiluotalk.com
    allure serve /tmp/my_allure_results
  • 实际尝试下查看结果
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 伊洛Yiluo
    # https://www.yiluotalk.com
    E assert False

    test_sample.py:13: AssertionError
    ___________________________________ test_broken ___________________________________

    def test_broken():
    > raise Exception('出错了')
    E Exception: 出错了

    test_sample.py:21: Exception
    ===================== 2 failed, 1 passed, 1 skipped in 0.08s ======================
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    # https://www.yiluotalk.com
    Generating report to temp directory...
    Report successfully generated to /var/folders/76/fkp3njt56f97wsxgpy94mjh00000gn/T/1826909724101378741/allure-report
    Starting web server...
    2019-12-24 14:34:54.474:INFO::main: Logging initialized @13022ms to org.eclipse.jetty.util.log.StdErrLog
    Server started at <>. Press <Ctrl+C> to exit
    4. 查看测试报告
  • 执行完上面的命令后会自动打开默认的浏览器显示测试报告
    在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
愿你享受每一天,Just Enjoy !

关注公众号获取更多内容

无论做自动化测试还是测试开发或者其它工作中,肯定需要做一些配置并在程序中读取这些预设置好的配置内容,那么最常用的无疑是ini配置文件了

本文首发于伊洛的个人博客:https://yiluotalk.com,欢迎关注并查看更多内容!!!

1. ini配置文件
  • ini配置文件内容由,节,键(或者称为选项),值三部分构成
    1
    2
    3
    4
    [section_1]
    option_1 = value_1
    option_2 = value_2
    [section_2]
  • 大小写敏感
  • 另外有一个特殊的节( section),就是默认节(DEFAULT
    2. python读取配置文件
  • 首先我们写一个配置文件并预设内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 伊洛Yiluo
    # 自动化测试配置文件

    [test]
    # 测试人
    tester = yiluo
    # 测试环境
    environment = test
    # 测试版本
    versionCode = 1.0.0

    host = https://test.yiluotalk.com


    [release]
    tester = luoyi
    environment = release
    versionCode = 2.0.0
    # 正式域名(伊洛的个人博客)
    host = https://yiluotalk.com
  • 使用ConfigParser模块,并实例化
    1
    2
    3
    In [1]: from configparser import ConfigParser

    In [2]: config = ConfigParser()
  • 返回所有的节点
    1
    2
    3
    4
    5
    In [3]: config.read('test.ini')
    Out[3]: ['test.ini']

    In [10]: config.sections()
    Out[10]: ['test', 'release']
  • 查询section(节点)是否存在
    1
    2
    3
    4
    In [7]: config.has_section('test')
    Out[7]: True
    In [12]: config.has_section('demo')
    Out[12]: False
  • 返回指定节点(section)里面的所有选项
    1
    2
    In [14]: config.options('test')
    Out[14]: ['tester', 'environment', 'versioncode', 'host']
  • 获取伊洛正式环境个人博客的地址
    1
    2
    In [16]: config.get('release', 'host')
    Out[16]: 'https://yiluotalk.com'
  • 其余可能常用到的还有config.set/config.write/config.add_section
    在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
愿你享受每一天,Just Enjoy !

关注公众号获取更多内容

1. 原由
  • 最近写了一些文章都是在简书上面,打算转到自己的个人博客上,由于个人博客是Hexo支持,需要Markdown格式。于是就打算把简书的文章导出来,发现可以完美导出Markdown格式,但是貌似只能批量的导,不能单独导出
  • 于是乎就下载全部文章,但发现下载后是一个.rar文件
  • Mac并不像windows,得选择一个好的解压工具为好,于是乎选择了unrar来解决这个问题
    2. so easy的解压方式
  • 安装unrar
    1
    brew install unrar
  • unrar安装成功
  • 进入的下载.rar的目录中
  • 执行以下的命令(Download是笔者下载的目录)
    1
    2
    3
    4
    5
    6
    ➜  Downloads unrar x jianshu.rar

    UNRAR 5.80 freeware Copyright (c) 1993-2019 Alexander Roshal


    Extracting from jianshu.rar
  • 执行命令后解压的文件与.rar文件在同一目录中

在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
愿你享受每一天,Just Enjoy !

关注公众号获取更多内容

软件测试网络基础 Zero to Hero – OSI 与 TCP/IP 模型(一)

  • 接上文继续概念(内容是比较基础的概念,干货为主,适用初级测试工程师面试中可能会被问到的网络知识)
    1.物理层
    物理层的作用:保证原始数据比特流的无误传输
    任务:物理层定义电压,接口,线缆标准,传输距离。理层协议定义接口的四个基本功能特性:

    机械特性:说明了接口所用接线器的形状和尺寸、引线数目和排列等。
    电气特性:说明在接口电缆的哪根线上出现的电压应为什么范围。
    功能特性:说明某根线上出现的某一电平的电压表示何种意义。
    规程特性:说明对不同功能的各种可能事件的出现顺序

  • 传输介质
    传输媒体通常有:双绞线:UTP/STP,同轴电缆:RG58 A/U 细缆RG11粗缆,光纤,无线
  • 双绞线分2种:

1.屏蔽双绞线 STP
2.非屏蔽双绞线UTP(8根线两两相绞,成本低,有干扰)
注:100M只用1-2、3-6;1000M8根线都用。理论距离100米

  • 同轴电缆
    同轴电缆由内导体铜制芯线(单股实心线或多股绞合线)、绝缘层、网状编织的外导体屏蔽层以及保护塑料外层组成

1.基带同轴电缆一条电缆只用于一个信道,50Ω,用于数字传输
2.宽带同轴电缆 一条电缆同时传输不同频率的多路模拟信号,75 Ω,用于模拟传输,300—450MHz,100km,需要放大器

  • 光纤介质

    1.使用光波携带信息,不受电磁、电子干扰

2.速度快、衰减小,传输距离远
3.对外没有辐射,理论上无法窃听,安全性好
4.成本高,热熔接要求精密,不易民用

  • 光纤传送模式:MMF、SMF
  • 无线

    1.使用电磁波或光波携带信息

2.无需物理连接,节省成本、安装时间
3.适用于短距离或不便布线的场合(高温、高毒……)
4.易受干扰、安全性差

  • 无线电
  • 卫星通讯
    2.数据链路层与交换机
  • 数据链路层功能

    数据链路的建立、维护与拆除
    帧包装、帧传输、帧同步
    物理地址定义
    网络拓扑结构(以太网帧、令牌环帧)
    差错控制(帧的差错恢复)、流量控制
    采用透明传输的方法将帧中的数据和控制信息分开

  • 以太网
    以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,施乐公司(Xerox)用“以太”命名,使用了CSMA/CD这种争用方式的网络就叫以太网。包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网。它们都符合IEEE802.3
  • CSMA/CD
    CSMA/CD—带冲突检测的载波监听多路访问以太网采用CSMA/CD避免信号的冲突
    口诀:

    先听后发
    边听边发
    冲突停止
    延迟后发

  • 以太网的命名方法
    N-信号-物理介质
    N:以兆位为单位的数据速率,如10、100、1000
    信号:基带还是宽带
    物理介质:标识介质类型
  • 交换机数据转发原理(后续介绍)
    3.虚拟局域网(VLAN)
    VLAN:Virtual LAN(虚拟局域网)是物理设备上连接的不受物理位置限制的用户的一个逻辑组
    VLAN作用:广播控制
    安全性
    带宽利用
    VLAN的种类

1.基于端口划分的静态VLAN
2.基于MAC地址划分的动态VLAN

4.计算机网络协议
  • 基本概念和词汇

    子网 (subnet)
    网络地址 (network address) 及分类
    子网掩码 (subnet mask)
    路由器 (router)
    跳 (hop)

  • IP地址
    大家一定都很熟悉的概念了,IP地址的作用是:用来标识一个节点的网络地址
  • IP包头的格式(后续展开讲述)
  • IP地址的组成(后续展开讲述)
  • 子网掩码的适用 (后续展开讲述)
    5.静态路由与配置(……待续)
    在这里插入图片描述

    欢迎下方【戳一下】【点赞】
    Author:伊洛Yiluo
    愿您享受每一天,Just Enjoy !

关注公众号获取更多内容

(一) OSI 与 TCP/IP 模型

本篇内容比较基础,只面向初级软件测试工程师面试时可能会被问到的关于网络方面的概念

1.什么是通信,什么是媒体
  • 通信是通过某种媒体进行的信息传递
  • 传媒,就是传播各种信息的媒体
    2. 带宽,速率,延迟
  • 带宽一般用来描述两种对象:一个是信道(Channel),另一个是信号(signal)。信道的带宽:单位是Hz ,信号的带宽:单位是bps
    3. 协议,标准
    协议包含:

    1、 实现什么功能 、怎么实现
    2、 定义数据的封装格式标准则多了物理硬件的描述

    4.网络的组成
  • 一个简单的网络主要有三部分组成:需要通信或连网的计算机、通信介质、连网设备
    5.网络的分类

1.局域网
2.广域网
3.城域网

6.关于INTERNET
  • Internet
    本质上是一个计算机广域网
    7.网络通信系统设计中要解决的问题
  • 数字传输

1.模拟通信
2.数字通信

  • 数据通信方式
  1. 串行通讯,并行通讯
  2. 单工通信(举例:寻呼机),半双工(举例:对讲机),全双工通讯(举例:电话)
  • 数据通信类型

1.基带传输
2.频带传输
3.宽带传输
博客素材2.jpeg

8.计算机互联参考模型――OSI模型
  • OSI概述一个 独立的计算机系统的工作能力是有 限的, 只有将不同地区具有不同功能的计算机互连之 后,人们才 能共享计算机 强大的计算能力和信息资源。
    ISO(International standard Organization 国际标准化组织)的OSI-RM(Open
    System Interconnection Reference Model)是计算机网络及其互连的重要理论
    ,虽然目前没有完整的产品支持 该协议, 但它 对80年代后期至今 的电信网络、计算机网络及其互连 都有极深远 的影响,可以说OSI-RM 是各类网络互连设备的协议基础,也是我们 学习网络互连的理论基础
    9. OSI 网络分层(非常重要初级测试工程师经常会被问到)
  • 应用层
  • 表示层
  • 对话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层
    9.传输协议与应用
  • TCP协议:可靠的面向链接的协议

1.三次握手过程

1.TCP SYN, 2.TCP ACK SYN, 3.TCP ACK

  • UDP协议: 不可靠无链接协议
    10. TCP/IP 模型(初级面试经常会被问)
  • 网络接口层,网络层,传输层,应用层
    本文只列出了初级测试面试时可能被问到的网络基础概念,后续有时间每块内容再详细的讲述下
    在这里插入图片描述

    欢迎下方【戳一下】【点赞】
    Author:伊洛Yiluo
    2019年12月17日
    愿您享受每一天,Just Enjoy !

1. 异常的定义
  • 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)
2. 错误和异常
  • 写程序的时候通常会出现错误,目前(至少)有两种可区分的错误:语法错误异常
  • 语法错误:又称解析错误,经常容易遇到
  • 异常:即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误
    3. 简单的例子
    1
    2
    3
    4
    5
    # 伊洛Yiluo
    b = 1

    c = a + b
    print(c)
  • 上面很简单的代码执行后就会出错,因为并没有定义变量a
  • Python提供的异常处理方法来捕获并处理异常,处理方法为使用 try,exceptfinally 三个关键字
    3. try, except 的使用
  • try 代码块中写可能会出现异常的代码
  • except 代码块中添加处理异常的方法
  • 来将上面的代码处理一下
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    b = 1
    try:
    c = a + b
    print(c)
    except NameError as err:
    print('错误:{}'.format(err))
  • 依旧没有赋值a变量
  • 然后执行一下
1
2
3
错误:name 'a' is not defined

Process finished with exit code 0
  • 错误提示变量a没有被定义
  • NameError的指的是访问了一个未定义的变量
  • 常见的还有SyntaxError ,IndexError ,KeyError ,ValueError ,AttributeError
4.多个except
  • except可以有多个,每个处理不同类型的异常,也可以不写任何异常类型名称,则会处理所有捕获异常
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 伊洛Yiluo
    a = 2
    b = 1

    try:
    c = a + b
    print(c)
    f = open('/yiluo/bin/activate.txt')

    except NameError as err:
    print('错误:{}'.format(err))

    except FileNotFoundError as err2:
    print('错误:{}'.format(err2))
  • 打开一个不存在的文件
    1
    2
    3
    4
    3
    错误:[Errno 2] No such file or directory: '/yiluo/bin/activate.txt'

    Process finished with exit code 0
  • 系统抛出了异常,没有这个文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    b = 1

    try:
    c = a + b
    f = open('/yiluo/bin/activate.txt')

    except:
    print('总之就是有错误')
  • 不写任何异常类型
  • 运行一下
    1
    2
    3
    总之就是有错误

    Process finished with exit code 0
    5.finally的使用
  • 使用 finally 可以保证无论 try代码块中的代码是否抛出异常,都能够执行 finally 代码块里的内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 伊洛Yiluo
    a = 2
    b = 1

    try:
    c = a + b
    f = open('/yiluo/bin/activate.txt')

    except:
    print('总之就是有错误')

    finally:
    print('结束异常')
  • 执行代码
    1
    2
    3
    4
    总之就是有错误
    结束异常

    Process finished with exit code 0
  • finally成功的运行了
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 伊洛Yiluo
    a = 2
    b = 1

    try:
    c = a + b
    except:
    print('总之就是有错误')

    finally:
    print('结束异常')
  • 没有任何的异常执行下,看下finally会不会被运行
    1
    2
    3
    结束异常

    Process finished with exit code 0
  • finally成功运行
    6.抛出异常
  • 如果希望程序执行过程中抛出异常,可以使用 raise语句
    1
    2
    3
    4
    >>> raise NameError('Error ERROR')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: Error ERROR
  • 如上抛出了'Error ERROR'的异常
    ……待续
    在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
2019年12月16日
愿您享受每一天,Just Enjoy !

关注公众号获取更多内容

序(一点儿碎碎念)
  • 互联网公司研发自己的软件产品,会有属于自己公司的一套整体产研流程。关于项目流程方面,太多的方式。但其实并没有最好的,只要是适合自己公司产品迭代的流程就是正确的
  • 关于产品质量:一点小感悟,产品质量并不只能靠公司的测试人员来提升,要知道产品的质量不是测出来的而是项目整体协作一起艰难的构建出来的
    (一) 软件研发流程
    1.软件产品
  • 大多数人认为,软件产品仅仅是从互联网上下载或者从光盘上安装到计算机上的程序
  • 软件产品:是指向用户提供的计算机软件信息系统设备中嵌入的软件或在提供计算机信息系统集成应用服务等技术服务时提供的计算机软件
  • 软件是计算机程序程序所用的数据以及有关文档资料的集合
    2.项目流程中经常可能会出现的文档
  • 客户需求文档
  • 产品需求文档
  • 需求规格文档
  • 项目计划文档
  • 版本迭代计划文档
  • 技术选型文档
  • 竞争调研文档
  • 产品设计文档
  • 交互设计文档
  • 项目进度文档
  • 测试计划文档
  • 测试方案文档
  • 测试用例文档
  • 研发接口文档
  • 缺陷跟踪单(通常会使用bug管理工具 eg. JIRA)
  • 测试报告文档
  • 迭代复盘文档
  • 迭代遗留问题
    3.软件工程
  • 1983年IEEE给软件工程下的定义是:“软件工程开发、运行、维护和修复软件的系统方法。”这个定义相当概括,它主要强调软件工程是系统方法
    而不是某种神秘的个人技巧
  • 软件工程是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用的完善的工程化原则。”这个定义不仅指出软件工程的目标是经济地开发出高质量的软件,而且强调了软件工程是一门工程学科,它应该建立并使用完善的工程化原则
  • 1993年IEEE进一步给出了一个更全面的定义
    简而言之:系统化,规范化,可管理,讲软件开发变成一项工程
4.软件项目流程中可能出现的成员
  • 项目经理
  • 技术总监/架构师/系统工程师
  • 研发工程师/开发人员
  • 产品总监/产品经理
  • 设计总监/设计师
  • 测试经理/测试组长/测试工程师
  • 配置管理员
  • QA 质量管理人员
  • 市场人员
  • 其它人员
    5.软件通常开发的过程
  • 软件产品从最初构思到公开发行的过程,称为软件开发过程
  • 最常见的开发模型(后续具体叙述

1.瀑布模型
2.V模型
3.W模型
4.H模型
5.螺旋模型
6.快速原型

6.软件研发流程模型的目的
  • 保证最终产品满足用户需求
  • 提高产品质量,降低产品开发成本
  • 保证项目可管理,进度可控制
    7.软件生命周期
    需求,设计,编码,测试,维护,升级,废弃
    待续(详细软件研发流程梳理)
    在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
2019年12月16日
愿您享受每一天,Just Enjoy !

关注公众号获取更多内容