精华内容
下载资源
问答
  • 如何提高测试效率
    万次阅读
    2017-09-26 20:26:56

    总结实践经验,提高测试效率

    有些人感觉测试很累,有些人感觉测试很轻松,排除掉开发的因素和产品功能复杂度的因素,其实和测试技巧也有很大的关系,这一章先说说如何提高测试效率,其他的技巧会在后续章节介绍。


    所谓的测试效率就是测试产出和测试时间之比,假设测试产出是一个定值,那要提高测试效率,就是要缩短测试时间。那要怎么才能减少测试时间呢?


    1  不要做无效的测试

    一般项目前期bug都是较多的而且极为不稳定的,如果有多个较严重的bug,可以拒绝继续测试。一方面继续测试也没有意义,因为阻塞测试地方会有很多,也无法测试全:另一方面即便继续测试出很多bug,也可能由于那些bug引起的,倒不如等这些修复之后再继续测试。


    这样对于前期来说可以节约不少测试时间,把做无效测试的时间留出来想想如何优化测试顺序(这在后面会重点讲到,也是最有效提高测试效率的方法)


    2  不要做重复的测试

    要做到这点的前提是要对整个项目的架构,相互的之间的联系等等要十分了解,这样可以避免很多看似不同的测试点,但实际只是一个测试点,仅仅是外面包装的不同而已。


    于是当这一个测试点有bug,那些其他看似不同的测试点其实也不用测试了,肯定也是有问题的,那提bug的时候可以列出核心问题所在,并将其他涉及的点列出来,等验证的时候再把那些点都在验证一遍。这样等于少做了很多测试,只是在验证的同时把测试再覆盖全。


    3  不同测试版本的测试侧重点

    对于测试来说肯定需要测试很多轮,每一个测试版本作为一个测试轮,但是不是需要每个版本都做完整的测试呢?答案肯定是否定的,不然测试岂不是要累死?


    那应该怎么取舍和分配呢?这里提供一下思路

    • 第一轮:只测试大致功能,不需要细测,列出主要bug

    • 第二轮:验证第一轮bug,然后全面细测,列出所有能发现的bug

    • 第三轮——第x轮:验证上一轮的bug

    • 最后一轮:验证全部bug,并全面细测。

    有人要问怎么才能判断是不是最后一轮?很简单,当所有发现的bug均关闭状态,这个时候就可以作为最后一轮来判断,而这一轮也是最重要的一轮,因为涉及到上线所以需要验证前x轮的所有bug,以避免bug修复完被bug再次覆盖的情况。


    如果按照以上的思路,其实只是第二轮和最后一轮需要全面测试,这样对于测试轮数多的情况下又能节约很多测试时间。


    4  优化测试顺序

    以上3个都是基于bug多的情况下(而这是常态,没bug反而不是常态了),如果项目质量就是那么好,bug很少,那上面3个其实也省不了多少时间。所以最最关键的其实还是在于测试本身,如何通过优化测试顺序,来节约自己的测试时间呢?这里有一套反常规的理论,就是先测试异常情况,而不是先测试正常情况。


    举个例子就能明白其中的差异了!

    就拿注册功能来说,一般会分为3个步骤,注册,验证,登录,一般正常情况都是先测试正常注册,正常验证,正常登录,然后测试异常注册,异常验证,异常登录。但这样有一个缺点,会有重复无用的操作:

    1. 当完成正常测试后再测试异常之前,需要从登录状态退出,然后再点击注册入口进行注册。

    2. 当测试异常验证的时候,需要再次测试正常注册,不然就进入不了验证的步骤。

    3. 当测试异常登录的时候,又需要再次测试正常验证,不然就进入不了登录的步骤。

    就这3点也许大家觉得最多浪费几十秒的时间,但如果注册信息要填很多呢,如果验证邮件或者短信要延迟很久才收到呢,这样就是浪费了几分钟吧。如果有其中有bug,那可能要测试多次来定位问题,那就可能浪费了10分钟,而这仅仅是一个并不复杂的测试,如果涉及到更复杂的关联,可能会浪费更多的时间在于无效和重复的测试中。


    那么问题来了,这么调整测试顺序呢?

    1. 先测试异常注册,输入各种错误的注册信息,如果没有bug 的情况下是跳不到验证界面的

    2. 然后测试正常注册,可以正常跳到验证界面

    3. 接着测试异常验证,如果没有bug 的情况下是跳不到登录界面的

    4. 再测试正常验证,可以正常跳到登录界面

    5. 再测试异常登录,如果没有bug 的情况下是无法正常登录的

    6. 最后测试正常登录,可以登录完成

    这样其实覆盖的测试点一个没少,但却没有无效和重复的测试,调整顺序之后可以减少不必要的操作,积少成多的节约测试时间。


    上面只是一个简单的例子,为了只是提供一种思路,就是思考哪些测试步骤是无效和重复的,然后通过调整测试顺序过滤掉哪些,从而让测试变得轻松起来。


    这是多年测试的累积和思考探索中总结了一些提高测试效率的方法,当然还有很多测试的小技巧,会再后续继续分享,敬请期待^_^

    更多相关内容
  • 课程旨在帮助软件工程师如何提高自己的学习效率提高自己的学习水平。
  • 不过毕竟人脑不是电脑,很难保持长时间高度集中、高效率的工作,他的效率会随着一天内所做的事情的增多而逐渐减少,我们能做的只有想办法延长高效率时限,并在效率最高的这段时间里,产出更高的价值。 不妨可以...

    身在职场,我们可能每天都会面对一大堆的工作,有些人会感到无从下手,于是想到什么就做什么,甚至胡子眉毛一把抓,最后结果往往既费时费力,有没有取得预期的结果。 不过毕竟人脑不是电脑,很难保持长时间高度集中、高效率的工作,他的效率会随着一天内所做的事情的增多而逐渐减少,我们能做的只有想办法延长高效率时限,并在效率最高的这段时间里,产出更高的价值。

    不妨可以尝试一下Tracup,一键帮你解决所有难题,如此才有助于开发效率。

    下面来讲讲我们团队使用之后的一些感觉:

    1、需求管理:帮助我们建立起规范的需求管理流程

    2、高效协同办公:可以更加高效率地完成工作

    3、迭代开发:更直观的追踪和管理开发进度

    4、快速追踪 Bug:模板和个性化方便了我们不同程度的偷懒说完总结,我们再展开聊聊。

    一、甘特图(时间视图)

    当你遇到一个时程拉得很长而且非常复杂的任务时,你需要一个可以严格控管每一个进度时间点、进度负责人、进度完成度的工具时,「甘特图」就会派上用场。但是太专业的甘特图(时间视图)或许很难上手,「Tracup」这一款就会相对简单好上手的多。

    在可视化的时间视图中,能够直观了解每位成员工作排期和负荷,项目规划和调配资源更合理,项目进度一目了然;同时管理员可以通过任务时间视图把握进度,确保每个任务按照计划正常运转。

    二、全局项目管理

    为管理者提供跨项目的全局视野,在一个界面汇总各项目问题进展,多个项目并行,同步管理,免去不断切换项目,分别处理问题的麻烦,让所有问题了然于胸,真正做到全局管理。 

    为管理者提供跨项目的全局视野,在一个界面汇总各项目问题进展,多个项目并行,同步管理,免去不断切换项目,分别处理问题的麻烦,让所有问题了然于胸,真正做到全局管理

    三、个人任务管理

    为任务执行成员提供问题的精准筛选、个人工作台、个人日历等多种打开方式,专注查看仅自己或特定成员的工作安排与进度,合理规划手头任务,轻松规划个人任务。

    除上述外,Tracup 还有更多实用功能

    点击这里,即刻享受Tracup带来的超酷体验

    展开全文
  • 10个python办公黑科技,助你办公效率提高100倍

    万次阅读 多人点赞 2021-06-02 11:46:55
    bit哥,我学完python后怎么样才能人觉得我很厉害呢?

    1946年,世界上第一台通用计算机“ENIAC”在美国宾夕法尼亚大学诞生;“ENIAC”占地170平方米,重达30吨,耗电功率约150千瓦,每秒钟可进行5000次运算,这个庞然大物用于美国国防部进行弹道计算。

    在当时,计算机只是被用于了特殊部门。现如今已过60余年,人类在计算机发展进程中越走越远,技术的发展使价格越加便宜,体积也更加便于携带,计算机随之出现在了各行各业之中。在第47期《中国互联网络发展状况统计报告》中提到,截至2020年12月,中国网民数量达到9.89亿,互联网普及率达到70.4%,如此多的用户必然有着巨大的商业市场,所需要的计算机应用程序也越加多样,那么创造这些计算机应用程序就需要进行程序编写。

    在计算机中,编写程序需要使用计算机编程语言,由于种类及针对性不同,计算机语言存在上百种,那对于目前日益复杂的办公需求,到底什么语言才可以提高我们的办公效率呢?如今有了一个答案,这个热门的语言叫做 python,python 拥有着众多的第三方库,或者说这些库就是已经实现好的功能,正等着你去使用它,完成你需要的定制功能;我们只需要学会 python 基础语法,既可以在办公中提高自己的工作效率。

    今天这篇文章将会模拟解决 10 个办公需求为主要内容,带读者感受 python 的魅力;当然,读者也可以从本篇文中直接得到这 10 个问题解决办法。本篇文将要解决的 10 个办公需求如下:

    • 上班第一天,老板叫我从一堆文本信息中提取出手机号码,我改如何去做?
    • 上班第二天,领导叫我将第一天提取的电话号码存储到 Excel 中,我是如何快速解决的。
    • 上班第三天,今天叫我去文本中提取邮箱了,给了我一天时间,但我玩了半天才开始进行信息提取。
    • 上班第四天,今天给了我一堆图片,让我加上公司水印。
    • 上班第五天,前同事的电脑中太多重复文件,领导让我清理重复文件精简信息。
    • 上班第六天,领导跟我说数一下这个文本到底有多少个中文字符。
    • 上班第七天,帮助美工小姐姐将网址生成二维码图片。
    • 上班第八天,如何将图片生成 gif?我手到擒来。
    • 上班第九天,人事急匆匆的找到我让我急忙翻译一份英文文档,我立马答应下来。
    • 上班第十天,提取视频的音频信息并且升职加薪!

    上班第一天

    上班第一天,你的上级给你一堆文本文件,叫你去提取出手机号码。如果是常规的办公人员,获取信息会一个个的去文本中查找,但在如今计算机深度普及的时代,显然提高办公效率解放自身才是更好的选择;那么这时,就让 python 祝你一臂之力,在职场腾飞吧。

    首先我们可以考虑,文本文件为 txt 的后缀文件,这个文本文件第一件事情则是需要读取;读取文本信息需要使用 python 的 open 函数,此时创建一个 python 文件名为 day1.py 编写一个函数名为 get_str,传入参数为需要读取到的文件路径,该函数返回读取到的内容,函数代码如下:

    #读取目标文本文件
    def get_str(path):
        f = open(path,encoding="utf-8")  
        data = f.read()
        f.close()
        return data
    

    此时已经编写好了读取文本内容函数,那么接下来就应该需要在这个读取到的值之中提取电话号码,提取电话号码使用正则,在此不过多说明正则的使用用法;使用正则我们需要使用 re模块;引入 re 模块后,调用 re 模块的 findall 方法对电话号码进行读取,然后进行返回:

    import re
     
    #正则获取文本号码
    def get_phone_number(str):
        res = re.findall(r'(13\d{9}|14[5|7]\d{8}|15\d{9}|166{\d{8}|17[3|6|7]{\d{8}|18\d{9})', str)
        return res
    

    那么最后一步就还剩保存信息。保存信息创建一个函数名为 save_res,传入两个参数分别是提取号码的结果以及保存文件的路径,之后遍历结果使用 write 方法写入即可,该函数代码如下:

    #保存得到号码
    def save_res(res,save_path):
        save_file = open(save_path, 'w') 
        for phone in res: 
            save_file.write(phone) 
            save_file.write('\n') 
        save_file.write('\n号码共计:'+str(len(res)))
        save_file.close() 
        print('号码读取OK,号码共计:'+str(len(res)))
    

    那么最后一步就还剩如何如何调用已创建的代码。此时使用 input 接收两个输入值;一个为需要读取的目标文件路径,另一个为需要保存结果的文件路径,之后依次调用函数即可,代码如下:

    path=input("请输入文件路径:")
    save_path=input("请输入文件保存路径:")
    #read_str=get_str(path)
    res=get_phone_number(get_str(path))
    save_res(res,save_path)
    

    此时我们创建 1 个 txt 文件用于测试,文件名及后缀为 phone.txt,内容为:

    张三:15888888888
    李四:15888888888
    王五:15888888888
    草帽:15888888888
    李四:15888888888
    柳叶:15888888888
    柳叶:15888888888
    李四:15888888888
    柳叶:15888888888
    柳叶:15888888888
    李四:15888888888
    柳叶:15888888888
    柳叶:15888888888
    李四:15888888888
    柳叶:15888888888
    李四:15888888888
    李四:15888888888
    柳叶:15888888888
    

    接下来在 DOS 中运行 python 文件 day1,输入文件存储路径以及保存路径,当完成信息提取后将会有提示:

    此时到保存的文件 res.txt 查看,发现电话号码信息已经被提取:


    此时第一天的工作轻松搞定,并且还可以把脚本分享给同事,提高自己的形象,岂不美哉?

    上班第二天

    上班第二天,新分配给你的任务是将第一天的 phone.txt 文本使用 Excel 保存,此时如果该文本是上万条信息,可能你独自手动操作将会耗时非常久才能完成这个任务,并且大概率有遗漏。这时使用 python 进行自动化操作将会极大的减少你操作的时间,并且在程序正确的情况下遗漏数据概率极低。那 python 是否可以胜任第二天的功能呢?答案当然是“能!”。python 有一个第三方库叫做 xlwt,通过 xlwt 可以自动将数据保存到 Excel 文件中,接下来我们来看一下具体如何解决。

    首先创建一个 python 文件名为 day2.py,在头部引入 xlwt:

    import xlwt
    

    由于我们当前所需要的数据是第一天任务用到的,在这里我们继续使用第一天所用使用到的 get_str 函数:

    #读取目标文本文件
    def get_str(path):
        f = open(path,encoding="utf-8")  
        data = f.read()
        f.close()
        return data
    

    接着我们创建一个函数名为 save_excel,该函数功能包括了保存文件、设置 sheet 名、设置列名以及设置列值。save_excel 函数接收 4 个参数,分别为 save_path、sheetname、column_name_list、content。首先我们在函数内创建一个 Workbook 对象:

    def save_excel(save_path,sheetname,column_name_list,read_list):
        workbook = xlwt.Workbook()
    

    接着在函数体中使用 add_sheet 增加一个 sheet,add_sheet 函数接收一个参数为 sheet 名称,我们将接收的 sheetname 参数作为 sheetname 的值,add_sheet 函数将会返回创建的这个 sheet 对象,代码写为:

    sheet1 = workbook.add_sheet(sheetname=sheetname)
    

    接收完参数后,我们可以使用 for 循环将传递过来的列名 column_name_list 在该 sheet 上进行设置:

    for i in range(0,len(column_name_list)):
            sheet1.write(0,i,column_name_list[i])
    

    以上代码中 write 方法第一个参数为 sheet 的第几行,这里为 0 即为最开始的一行;参数 i 为第几列,由于 i 是从 0 开始到当前列元素长度位置进行对 column_name_list 的遍历,此时则是从 0 到 column_name_list 的最后一个元素,那么将会从最开头的列到对应最尾的列,则将所有列名填写值 sheet 页头部。

    接着就应该为这些列设置元素了。此时遍历传递过来的 read_list,read_list 为这些列的具体内容,例如姓名与电话号码。此时遍历 read_list 由于原始数据每一行将会是以 : 作为姓名与电话分隔,例如 “张三:15888888888”,这时遍历 read_list 列表应该将值再进行分隔,以列名设置同理进行赋值,在此不再赘述,代码如下:

    i=1
    for v in read_list:
        kval=v.split(':')
        for j in range(0,len(kval)):
            sheet1.write(i+1,j,kval[j])
            print(kval[j])
        i=i+1
    

    最后使用 workbook 对象调用 save 方法,传递保存地址即可。那么该 save_excel 自定义函数完整代码如下:

    #保存为Excel文件
    def save_excel(save_path,sheetname,column_name_list,read_list):
        workbook = xlwt.Workbook()
        sheet1 = workbook.add_sheet(sheetname=sheetname)
        for i in range(0,len(column_name_list)):
            sheet1.write(0,i,column_name_list[i])
        i=1
        for v in read_list:
            kval=v.split(':')
            for j in range(0,len(kval)):
                sheet1.write(i+1,j,kval[j])
            i=i+1
        workbook.save(save_path)
        print('信息保存 OK,记录条数共计:'+str(len(read_list)))
    

    此时已经完成了主要功能的编写,那么接下来就应该接受用户输入 文件路径、文件保存路径、sheetname、列名 以及对原始数据用换行符 “\n” 作为列表分隔符,调用部分完整代码如下:

    path=input("请输入文件路径:")
    save_path=input("请输入文件保存路径:")
    sheet_name=input("请输入sheetname:")
    column_name=input("请输入列名,并且使用英文逗号隔开:")
    column_name_list=column_name.split(',')
    
    read_str=get_str(path)
    read_list=read_str.split('\n')
    save_excel(save_path,sheet_name,column_name_list,read_list)
    

    此时运行 day2.py 文件,输入完所需内容将会出现成功提示:


    随后在保存的文件中可以看到提取出来的信息:

    上班第三天

    时间到了第三天,你领导问你如何知道python学习方向的?你告诉了他,是买了这一份知识图鉴:

    你把你的送给了领导并且自己又买了一份。第三天领导给你的任务是从文本中提取邮箱,这个任务跟第一个任务差不多,我们只需要替换正则即可完成任务。创建一个 python 文件名为 day3.py,day3.py 所有完整代码如下:

    import re
     
    #正则获取目标信息
    def get_re_str(str):
        res = re.findall(r'^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', str)
        return res
    
    #读取目标文本文件
    def get_str(path):
        f = open(path,encoding="utf-8")  
        data = f.read()
        f.close()
        return data
    
    #保存得到的信息
    def save_res(res,save_path):
        save_file = open(save_path, 'w') 
        for phone in res: 
            save_file.write(phone) 
            save_file.write('\n') 
        save_file.close() 
        print('信息读取OK,信息共计:'+str(len(res)))
    
    path=input("请输入文件路径:")
    save_path=input("请输入文件保存路径:")
    #read_str=get_str(path)
    res=get_re_str(get_str(path))
    save_res(res,save_path)
    

    在以上代码中,我们为了函数功能与名称对应,修改了部分函数名以及必要的正则信息,在此我们就已经知道,如果从一个文本中提取出常用信息只需要修改对应的正则即可,不会写正则我们可以搜索引擎搜索,直接替换即可完成该功能;在这里,邮箱的正则为 '^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'。我们此时运行该文件,填上必要的输入信息即可取出对应文本中的邮件文本信息。

    上班第四天

    今天是第四天,你在前三天都做的很不错,自然而然你的上级将会更加看重你。此时你的上级给了你一个G大小的压缩包,告诉你里面的图片都需要添加水印,此时你该如何实现这个功能呢?当然可以通过其他软件付费,但是自己大概率是会垫付这几十块钱,既然已经学会了 python 完成了部分任务,那么就应该去寻找一下 python 是否有相关的支持库。如果你已经开始寻找相关的 python 支持,我可以告诉你“恭喜!你的想法非常正确”。使用 python 的 opencv 库即可完成这个操作。

    安装好 opencv 库后,导入 opencv 库并且引入 os,因为我们将对某一个文件夹下的文件进行批量水印操作,会涉及到目录文件读取:

    import cv2 
    import os  
    

    接下来根据用户输入路径确定需要操作的目录下图片:

    path=input("请输入需要加水印的文件夹路径:")
    

    接着获取目录下所有文件:

    file_list = os.listdir(path)
    

    最后循环遍历每一份图片,使用 imread 方法读取图片获得该图片对象,并且使用 putText 方法为该图片对象添加水印信息,水印信息参数已在注释中说明,最后再使用 imwrite 方法保存图片即可:

    for filename in file_list:
        img1 = cv2.imread(path+filename,cv2.IMREAD_COLOR) 
        cv2.putText(img1,'CSDN',(10,10) , 1, 1, (255,255,255),1)  #图片,文字,位置,字体,字号,颜色,厚度 
        cv2.imwrite(path+filename, img1)
    

    运行程序输入路径后,最终生成的图片结果如下:


    上班第五天

    你在公司已经小有名气,这时你的上级领导跟你说“你上一位同事的电脑中太多重复文件,导出文件过多,需要删除重复文件”;这时你得到了这个任务,那如何去删除重复文件呢?没错,是使用文件的 md5 值进行对照,相同文件的 md5 值一样,只需要遍历该目录的文件 md5 值,若出现重复 md5 则删除该文件即可。

    第一步导入两个模块,其中 hashlib 作为 md5 计算所需的模块:

    import hashlib,os
    

    接着编写一个函数,需要传入一个文件路径,从而获取这个文件的 md5:

    def getMD5(filepath):
        f = open(filepath,'rb')
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        hash = md5obj.hexdigest()
        f.close()
        return str(hash).upper()
    

    以上代码中,hashlib.md5() 为获取一个 md5 加密对象,md5obj.update() 为指定加密的信息,最后 md5obj.hexdigest() 获取加密后的 16 进制字符串,此时就可以得到 md5 加密后的 16 进制了,最后将其返回。接着我们就需要请用户输入需要过滤重复文件的目录:

    path=input("请输入需要重复文件过滤文件夹路径:")
    

    随后获取目录下的文件信息,并且创建一个列表记录 md5 值:

    file_list = os.listdir(path)
    file_md5=[]
    

    接着使用 for 循环对指定目录进行遍历:

    for filename in file_list:
        md5val=getMD5(path+filename)
        if md5val in file_md5:
            os.remove(path+filename)
        else:
            file_md5.append(md5val)
    print("处理完毕...")
    

    以上代码中调用 getMD5 方法获取文件的 md5 值,随后判断该 md5 值是否在记录列表中,如果在则使用 os 的 remove 方法移除该文件,否则就将记录该 md5 值,这样就实现了重复文件删除的操作。

    运行程序输入目录后将清理完重复文件:

    上班第六天

    今天你的领导跟你说,需要读取作者的中文字数,以便于给予发放稿费,但是只能算中文字符;由于之前据说是让实习生慢慢数的,所以希望你能够加快数中文字符的速度。

    当然,对于用了几天 python 的你来说自然难不到,这是一个很简单的操作。需要完成这个需求很简单,我们需要用到 python 两个模块,一个是 os 另一个是 re;os 用于读取文本信息,re 用于判断中文字符,我们先创建一个函数名为 get_str 接收文本路径作为参数,然后返回文本信息;由于这段时间都是使用这个函数,具体的解释并不过多赘述,函数实现如下:

    #读取目标文本文件
    def get_str(path):
        f = open(path)  
        data = f.read()
        f.close()
        return data
    

    接下来依旧是输入目标路径代码:

    path=input("请输入文件路径:")
    

    接着,我们只需要使用 re 模块中的 findall 方法即可提取,我们在 findall 方法中指定中文字符的范围为 \u4e00-\u9fa5 即可:

    path=input("请输入文件路径:")
    
    word=re.findall('([\u4e00-\u9fa5])',get_str(path))
    print("中文字符,除特殊字符外共:",len(word))
    

    最后我们把需要技术的内容复制到一个文本中,运行脚本,结果如下:

    上班第七天

    今天美工小姐姐跟你说,制作海报需要官网的二维码,可是她不知道去哪得到,非常需要你的帮助,你跟她说让她稍等片刻马上发送给她。那,你是怎么实现的呢?

    在 python 中有个库叫做 qrcode,qrcode可以直接生成指定 url 的二维码,首先引入 qrcode 库。

    import qrcode
    

    接着设置你所需要创建二维码的具体信息,例如大小、尺寸、容错等,代码及注释如下:

    qr = qrcode.QRCode(
    	version=2,#尺寸
    	error_correction=qrcode.constants.ERROR_CORRECT_L,#容错信息当前为 7% 容错
    	box_size=10,#每个格子的像素大小
    	border=1#边框格子宽度
    )#设置二维码的大小
    

    接着指定 url、生成二维码图片最后进行保存即可:

    qr.add_data("https://www.csdn.net/")#指定 url
    img = qr.make_image()#生成二维码图片
    img.save("F:\work\day7\csdn.png")#保存
    

    运行脚本这时 csdn 官网链接就生成了:

    上班第八天

    上班第八天来了,你的技巧赢得了领导、同事的肯定,同事小王跟你说要你制作一个 gif 图片,他不懂怎么去做,但是有多张图片,你一口答应下来;小王给了你一个文件夹,文件夹中有按序号排列的图片,你需要按照需要进行动图制作。为了介绍方便,我们以以下两张图为例:

    此时所需要的 python 库为 imageio,使用 imageio 可方便的使多张图片生成 gif 图。首先我们需要一个列表存储图片路径,此处为了方便演示,直接使用列表作为存储,并且创建一个变量为图片的保存路径:

    import imageio
    image_list = [r'F:\work\day4\1.png', r'F:\work\day4\2.png']
    gif_name = r'F:\work\day4\gif.gif'
    

    接下来创建一个列表存储读取后的图片信息,方便合成 gif 图片:

    frames = []
    

    接着遍历图片路径,随后使用 imageio 的 imread 方法读取图片添加到 frames 列表之中:

    for image_name in image_list:
        frames.append(imageio.imread(image_name))
    

    接下来使用 imageio 的 mimsave 方法传入 gif_name 保存路径信息、frames 图片信息、‘GIF’ 生成图片类型以及 gif 图的切换秒数 duration 参数为 2:

    imageio.mimsave(gif_name, frames, 'GIF', duration=2)
    

    最后运行该脚本,得到以下 gif 图片:

    上班第九天

    第九天到来,今天一早人事跟你说需要你翻译一份文档成中文,不需要质量太好但是一定要快速。你依旧一口应下,那么你的自信来源于哪呢?当然是来源于 python 的强大。python 中有一个库叫做 translate 可以直接翻译英文文本,我们首先引入该库:

    from translate import Translator
    

    随后设置翻译的语言类型:

    translator = Translator(to_lang="Chinese")
    

    接着设定翻译的语言文本,在此我们创建一个函数直接获取文本信息:

    def get_str(path):
        f = open(path)  
        data = f.read()
        f.close()
        return data
    

    接着要求用户输入文件路径并且获得文件文本:

    path=input("请输入文件路径:")
    text=get_str(path)
    

    文本信息为:

    Virtual Group Coaching: How to Improve Group Relationships in Remote Work Settings
    

    最关键的一步,我们将文本拿去 translate 方法中进行翻译,最后输出:

    translation = translator.translate(text)
    print(translation)
    

    我们最后运行脚本,得到结果:

    上班第十天成功转正并升职

    第十天,今天领导给了你一个视频文件,希望你能够提取出音频,他对你非常看重,并且跟你说过完今天转正后提前升职加薪,你也是非常兴奋,当场3句代码直接提取出了指定视频的音频。

    python 对视频进行操作可以使用 moviepy 库,第一步引入 moviepy:

    from moviepy.editor import AudioFileClip
    

    随后使用 AudioFileClip 获取视频信息:

    my_audio_clip = AudioFileClip("E:\PyVedio\py02.mp4")
    

    最后直接使用 方法将视频的音频写入到文件之中:

    my_audio_clip.write_audiofile("E:\PyVedio\py02.wav")
    

    看完了 python 那么多的“神奇”妙用,你还不赶紧用于办公吗?当下社会对办公效率的要求日益加深,合理的学会一门编程语言进行高效的办公是突出个人能力的途径之一。python 作为当下最流行的语言之一,拥有许许多多强大的第三库支持,在办公领域方面应用得当将会祝你在职场中斩荆披棘、突破自我。

    上班第十一天跟领导出差突遇紧急事件

    今天你们出差来到一个偏僻的地方,酒店wifi服务员自己也不懂,只记得很简单,你直接使用python进行了破解,随后领导跟你说要马上做一个舆论分析非常紧急,你立马开始着手制作。领导怎么知道你懂那么多?那是因为他也买了CSDN 的 python 知识图鉴,知道了 python 的全部学习路线,你也想知道吗?那就购买一份吧,30块钱祝你腾飞~

    展开全文
  • 如何提高团队的研发效率呢?

    千次阅读 2021-04-25 00:09:03
    研发效率是在现代企业都关注的,注意是因为靠谱的工程师是有限的,而且软件工程师的人力成本较高,时间成本更高。在大多数情况下,软件工程是一个团队活动,通过协作实现突破。好的想法从不匮乏,但高速...

    研发效率是在现代企业都关注的,注意是因为靠谱的工程师是有限的,而且软件工程师的人力成本较高,时间成本更高。在大多数情况下,软件工程是一个团队活动,通过协作实现突破。好的想法从不匮乏,但高速执行却不那么容易。高效团队会习惯于更高的标准。当研发速度停滞时,人们会创造性地寻找重建高速产出的方法,但是如果长时间停滞,也会造成人员的流失。

    如何提升研发效率呢?或者说,研发速度是否可控呢?

    高效的目标——方向

    速度是位移和时间的函数,很多时候,位移方向的目标更容易被忽视。然而,项目失败的最常见原因是团队构建了错误的东西。“绕树三匝,何枝可依。”,实际上,方向错了,停止就是进步。

    确定方向本身就是很困难的事,例如预测产品或市场匹配度等。通常需要关注客户的声音,成功不是提供一个特性,而是学习如何解决客户的问题。理想情况下,我们希望倾听客户的意见,满足他们的需求,同时只发布他们最感兴趣的那20% 。

    即使那些所谓具具远见的创新者,也很难预测客户到底需要什么。由于在选择方向时需要一些猜测,因此系统的灵活性和可扩展性就变得至关重要。灵活性可能表现为开放性,最大限度地提高试验的速度,减少对给定计划的承诺,快速发展的产品,以及在决策中区分可逆和不可逆的功能特性。尽管,可扩展性使犯错的代价比想象的要低,而“time to market”则肯定是昂贵的。

    高效的感知——度量

    有很多人尝试直接观察软件团队的研发效率,但众所周知,这样的测量是非常困难的。为了弥补这一缺陷,企业会使用员工参与度来调查与研发效率相关的问题。这样的调查往往局限于对员工参与度和与公司目标一致性的高层次衡量,这也是OKR模式的辅助手段。利用这些调查来决定是否实现了高速迭代,询问工程师实际花费了多少时间来设计和编写代码,工具是否充分,过程是否有效,以及技术债务的影响等。

    在着手进行这类问题的调查之前,一般会承诺根据调查结果采取行动,以便这些行动对目前的调查和今后对这类调查的答复产生积极影响。

    高效的组织——自治

    可扩展性可以通过自治团队来改进,这些团队围绕着有良好边界的特定责任区形成高度的内部凝聚力。团队所负责的服务彼此公开API; 在理想情况下,不存在跨团队沟通,因为与业务逻辑交互所需的全部都是API,而业务逻辑是业务团队的责任。

    服务的实现细节通常是不共享的,并且不存在对远程服务所依赖的数据存储进行私有访问。即使服务需要不前向兼容,API的新旧版本仍然通常会在重叠的一段时间内可用,因此业务可以在旧版本被弃用之前进行迁移。

    服务的拥有者可以按照团队自己的速度发展并发布变更,独立于可能发生的其他变更,并在时间上与其脱钩。这就是所谓的“无许可创新”。然而,确定责任领域之间的接口是具有挑战性的,这些接口会不可避免地随着时间的推移而演变,完美的自治永远是虚幻的。

    一组软件服务不断进化,就像一个鲜活的生命。发布新的接口,整个服务可能分离或合并,单个服务可能经历重大的重新设计或被弃用。理想情况下,内部团队拥有高度的自治,在组织结构上与“高内聚、低耦合”的软件设计原则相一致。

    基于康威定律,这些团队提供的服务应该是独立的。理想条件下,不需要对所依赖的服务进行任何更改,任何团队就可以实现80% 的任务。在剩下的20% 中,通过特定的接口实现。

    在符合研发路线图的情况下,服务拥有者会同意那些有意义的变更,但是在路线图上的优先级较低。这时,业务方可能会提供一个“援助团队”来实现所请求的更改。援助团队由来自业务团队的开发人员组成,这些工程师临时加入拥有服务的团队。设计、测试、编码和发布都需要服务拥有者的逐步批准; 当完成更改后,援助人员将返回到他们原来的团队。这个方式的一个附加价值是交叉授粉,在团队之间缺乏沟通的情况下尤其有效。

    高效的方式——敏捷

    产品开发的敏捷方法可以迭代和速度之间做平衡。

    即使在需求快速变化的世界里,团队井然有序的积压工作也是可以的,只要最新版本用于sprint即可。团队明确承诺从待办列表中完成一系列任务,而作为回报,则是团队获得了一个不可中断的受保护时间窗口,这是一个尽可能快速工作的冲刺。在完成这个不间断、无波动的幸福周期之后,sprint 的成果将展示团队履行的承诺。

    在下一个 sprint 计划会议继续之前,团队将进行回顾。这是一个内省会议,其中团队评估其达到的速度,并确定在随后的sprint中提高速度的方法。一个诚实的回顾,建立在信任和自我意识的基础之上,可以找出在进入下一个sprint之前如何“提高研发效率”。

    高效的条件——专注

    专注是实现高效研发的必要条件。

    团队希望专注于解决客户的问题,高速实现所责任的业务逻辑。他们不希望不能控制自己的团队。可靠的基础架构和基础设施是无许可创新的助推器,更是是软件架构转变的推动者。勿在浮沙筑高台,不为繁华易匠心。

    高效的土壤——文化

    一个高效团队注重培养一种文化,这种文化鼓励团队成员高效交付成果。这是一种自我强化,具有高效文化的团队往往能够吸引到高手。重要的是,要假定团队成员是有才华的,与使命保持一致,并且希望高效工作。文化中对研发效率产生积极影响的方面包括: 多样性和包容性、谦逊、信任、乐于学习、愿意带着“紧迫感和重点”前进、自主性以及集体承诺取得成果的意愿等等。

    高效的实现——工具

    为了实现高效研发,有必要投资那些使工程师能够高速工作的系统,并最大限度地将他们的时间花费在自己的责任领域。显而易见,出发点是构建、集成和部署代码的工具和过程,以及那些在代码发布后用来运营的工具和过程,确保代码满足可用性、可靠性、性能和安全性的要求。

    虽然基于服务的体系结构可能带来自治性的好处,但跨服务边界的故障可能更难排查。如果日志采集、传输、监控、报警和问题跟踪在各个服务之间都是通用的,那么就会很有帮助。可观测性的能力应能够进行分布式跟踪,便于精确检测关键信号和指标,并逐步细化排出空间,从而精确找到问题的根本原因。

    高效的实验——试错

    为了提高创新速度,需要积极寻求降低实验成本,以便能够做更多的实验。高实验率可以促进更频繁纠错。但实际上,高比率的实验可以被看作是大量丢弃的想法、文档垃圾、死代码和失败,造成资源的大量浪费。

    成功的团队拥抱失败,是指做出的大多数错误选择是容易逆转的。失败,如果处理得当,可能是一个成长的机会。错误并不是必要的罪恶,是做新事物的必然结果,可以被看作是有价值的。

    但是,我们客观地认识到了自己的错误么?!

    小结

    尽管大家都觉得软件工程越来越重要,但是太多的软件项目最终还是偏离了目标,并且超出了预算。有效的交付需要对所要的东西有一个完美的视野,同时要朝着那个视野坚定地前进,对所有的干扰视而不见,这可能是一个长期存在的误区。提高研发效率的一个更可靠路径是优化研发速度,提倡高效文化,开放的实验和学习,自治而敏捷的组织,不忘初心。

    【关联阅读】

    展开全文
  • 爬虫 - 提高爬虫效率的方法

    千次阅读 多人点赞 2019-09-07 18:54:47
    提高爬虫的效率有很多,我们可以了解一下,并加以使用
  • 怎样提高数据库查询效率

    千次阅读 2019-05-13 09:50:03
    主要通过三种途径提高数据库查询效率:1.SQL的性能优化,2.数据库的性能优化,3.查询优化 1.SQL的性能优化 SQL语句是用户访问关系数据库中数据的唯一方法,通常在一个关系数据库上,服务器的SQL进程会使用该服务器...
  • 面试官一定要我从计算机底层开始说....
  • 码农提高工作效率

    千次阅读 2017-03-04 17:49:31
    俗话说,天下武功,唯快不破。也就是说要练成天下高手的话,出招速度一定要快,这样才能在江湖上立足,不至于掉了脑袋。...而我本人很喜欢各种各样的方式来提高自己的工作效率,可以分享给大家一些经验。
  • 如何提高测试工作效率

    千次阅读 2017-08-21 16:37:45
    3. 测试文档严格评审,杜绝臃肿的测试用例,减少测试用例数量,提高测试覆盖率,只需设计代表性强的等价类用例 4. 严格测试提测标准,减少提测版本数量,一旦发现重大问题或未通过冒烟测试,则测试中断,版本打回至...
  • 研发人员如何提高工作效率

    万次阅读 多人点赞 2018-08-30 19:58:37
    大家都是程序员,接到同样的工作任务,有人每天忙碌加班弄到身心俱疲却还无法完成,而有人不仅能按时保质保量完成工作,还能有自己的时间健身、学习和充电。是什么原因导致这样的差别呢?小米的创始人雷军有一句名言...
  • 居家办公提高工作效率的八点建议

    千次阅读 2020-02-06 21:30:50
    所以从2月3号开始,部分企业组织员工进行居家办公了,从昨天到今天,已经有两天了,相信大家都有相同的感受,精力无法集中,团队协作效率明显降低,总想休息或者玩耍,工作效率十分低,下面我结合我居...
  • 提高软件开发效率的方法

    万次阅读 2019-01-12 21:28:23
    一个开发任务下达以后,我们希望尽快的实现的,对软件开发工程师的...提高效率的第一个办法就是加人和加班,这也是目前大多数企业采用的方法,特别的简单粗暴。首先看看加人,加人对项目开发效率的影响在起初人少...
  • 操作系统是如何提高CPU的使用效率

    千次阅读 2019-03-19 09:24:22
    之前一直困惑任务一直在运行,CPU是如何提高使用效率的?下面博主将按照自己的的理解来说明这个问题。 图中有两个任务A,B按照以往没有操作系统的情况下就不需使用一个任务一个任务的运行所以连个任务运行完就的...
  • 怎么提高网络爬虫效率

    千次阅读 2019-05-27 13:13:23
    怎么提高网络爬虫效率?1.对爬虫的抓取频率进行提升,可以对一些网站的验证信息进行破解,网站采取的验证一般是验证码或者需要登录用户。2.爬虫使用多线程,电脑要有充足的内存。还要使用代理IP,代理IP要找稳定...
  • C++编程中提高程序运行效率的方式(不断更新)

    千次阅读 多人点赞 2018-08-16 19:07:07
    不断提高程序的运行效率,而又不影响程序功能是程序员的不竭追求! 以下是我在工作中总结的提高程序代码效率的方式: 1.整型运行速度快于浮点型,所以能用整型的地方尽量不要用浮点型计算,尤其是除法!移位运算的...
  • 提高数据库效率的方法

    千次阅读 2017-07-26 21:50:55
     如果说我建300个索引,我很乐意,因为提高运作效率的,而外键只是检测严谨性,对数据库的运作效率只有降低,没有任何提高的可能性;    其实这只是设计习惯的问题,有兴趣大家随便聊聊自己的习惯。
  • Mac 常用的 20 款效率神器推荐

    万次阅读 2022-02-05 14:39:54
    本文仅仅是总结了这 20 款个人认为比较好的效率神器软件,这些软件在我平时使用过程中帮我提高效率也节约了很多时间,希望通过我分享的这些神器对你有所帮助,Mac 系统上的效率神器软件很多,所以也非常欢迎你留言...
  • 如何提高 matlab 计算速度 运算效率

    万次阅读 多人点赞 2016-10-20 01:10:10
    最近在网上查了一些资料,并结合自己的经验,就如何提高matlab计算效率,总结一下几个原则: 1. 提前给数组分配大小。 2. 尽量用矢量计算,减少 for 循环。 3. 尽量调用 maltab自带的函数来实现一些功能。 4...
  • 如何提高单元测试效率

    千次阅读 2018-05-05 15:33:13
    3、界面操作功能优化,提高操作效率,减少误操作 备注:本文根据前面的博文改造而来,改进之处为可配置化更强,可移植性更好。 见:https://blog.csdn.net/salerzhang/article/details/80079300 包克斯测试,代码见...
  • 如何提高工作效率

    千次阅读 2016-03-19 14:44:17
    现在做了小头目以后,要带几个丁搞项目,自觉责任重大,又有业绩压力,再也不能这样活,必须发粪涂墙,提高效率。如何提高工作效率呢?我认为应该酱紫:1、要有计划 凡事要有计划。项目必须有项目实施进度计划。不...
  • 其实告诉大家,大可不必,因为程序一旦出错了,正是我们提高自己技术的时候。你想一想,对一个初学者他怎么可能写代码一行都不出错呢?这是不可能的,对吧?你比如说一些基本语法出错了,或者是字母大小写写错了,...
  • 提高程序运行效率的10个简单方法

    万次阅读 多人点赞 2018-06-13 21:18:20
    但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下...
  •   /**   *@author annegu   *@date 2009-12-02   */    ...Hashmap是一种非常常用的、应用广泛的数据...网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。  1...
  • 提高Fortran代码运行效率以及速度

    千次阅读 2019-03-30 11:14:04
    最近一直在研究自己的Fortran程序的运行效率,查阅了一些资料和做了大量的程序测试,总结如下: 程序编写方面: 1.Module的使用:尽可能多使用 某些数组以及变量值要重复用到,比如有多个子程序需要调用,存在...
  • 10个提高工作效率的超实用工具

    万次阅读 2018-06-08 13:52:51
    还支持团队协同编辑和评论,你的团队工作效率极大提高。“标注”功能开发人员一键查看原型标注,高效完成设计稿的交付… 网址: https://modao.cc/ 加入墨刀,快速制作交互原型,成为下一个刀友! (九)上线了 ...
  • 提高工作效率的12个小建议

    千次阅读 2018-10-26 11:13:49
    想要提高自己的工作效率,必须得学习时间管理,善于利用自己的工作时间,使时间价值最大化,从而提高工作效率。**工作是无限的,时间却是有限的。**时间是最宝贵的财富。没有时间,计划再好,目标再高,能力再强,也...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 869,041
精华内容 347,616
关键字:

如何让自己效率提高