2020年6月

《Google软件测试之道》笔记

在Google,软件测试团队归属于一个被称为“工程生产力”的中心组织部门,这个部门的职责横跨开发测试人员使用工具的研发、产品发布和各种级别的测试,从单元级别的测试到探索性级别的测试。

Google是一家以创新和速度为基础的公司,快速地发布有用的代码(如果失败,也只有少数早期用户会失望)、迭代地增加早期用户希望使用的功能(最大化用户反馈)。

在整个公司,我们只有非常少的专职测试人员。

Google的测试团队并非雄兵百万,我们更像是小而精的特种部队。

测试人员的稀缺会导致测试资源变得非常昂贵,因此,我们的原则就是让这些稀缺且聪明的测试员工保持昂扬的斗志和充沛的精力。

在Google,写代码的开发人员也承担了质量的重任。质量从来就不仅仅是一些测试人员的问题。在Google,每个写代码的开发者本身就是测试者。

如果你是一名工程师,那么你同时也是一名测试人员。如果在你的职位头衔上有测试的字样,你的任务就是怎样使那些头衔上没有测试的人可以更好地去做测试。

质量不是被测试出来的。如果在最开始设计创建的时候就是错的,那它永远不会变成正确的。从最初的创建阶段就要做正确,否则将会陷入混乱的万丈深渊。

虽然质量不是被测出来的,但同样有证据可以表明,未经测试也不可能开发出有质量的软件。

停止开发与测试的隔离对立。开发和测试应该并肩齐驱。你需要在写完每一段代码后立刻测试这段代码。

测试不是独立隔离的活动,它本身就是开发过程的一部分。

还有谁能比实际写代码的人更适合做测试呢?还有谁能比实际写代码的人更适合去寻找bug呢?如果某个产品出了问题,第一个跳出来的肯定是导致这个问题发生的开发人员,而不是遗漏这个bug的测试人员。

开发人员自己要对自己写的代码负责,比专职的测试人员更适合做测试工作。

测试人员的存在是为了让开发人员的工作更有效率,并且很大一部分体现在避免因马虎粗心而导致的返工。

目的

构建环境,学习 《Linux设备驱动程序》 《Linux内核设计与实现》

Linux环境

Fedora 24,内核版本4.5.5。

Linux 4.5.5-300.fc24.x86_64

下载内核源码

https://www.kernel.org下载了4.19.128版本。

内核配置

使用make help查看所有make选项。

可以使用不同的方法进行配置,比如make configmake menuconfigmake xconfig等。

make xconfig是基于Qt的一个配置工具。

执行make xconfig,按照错误提示安装依赖库。

sudo install gcc-c++ qt qt-devel bison flex
make xconfig

最终在根目录生成.config文件。

编译遇到问题

执行qmake,提示编译器版本太低。

最终决定将Fedora从24升级到30。

升级Fedora

https://www.cnblogs.com/suodingsuiji/p/6288064.html

dnf install dnf-plugin-system-upgrade
dnf system-upgrade download --releasever=25
dnf system-upgrade reboot

- 阅读剩余部分 -

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import argparse

parser = argparse.ArgumentParser(description="程序描述")

# 互斥组(组内的各参数不能同时使用)
group = parser.add_mutually_exclusive_group()
group.add_argument("-a", "--aaa", help="a参数描述", action="store_true")
group.add_argument("-b", "--bbb", help="b参数描述", type=int)
group.add_argument("-c", "--ccc", help="c参数描述")
args = parser.parse_args()

if args.aaa:
    pass
elif args.bbb:
    pass
elif arg.ccc:
    pass
else:
    parser.print_help()

The Python Standard Library » Generic Operating System Services » argparse — Parser for command-line options, arguments and sub-commands

安装

sudo dnf install gcc python3-devel`
pip install psutil

使用

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import psutil

# 遍历所有进程,输出进程ID,CPU占比,内存,进程名称
for pid in psutil.pids():
    p = psutil.Process(pid)
    print("{},{},{},{}".format(
        p.pid, p.cpu_percent(), p.memory_info().rss, p.name()));

文档

https://psutil.readthedocs.io/en/latest