程序测试

Python unittest(PyUnit)单元测试框架

喜欢而已 提交于 2019-12-09 19:33:56
PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。 如果你使用的是 2.1 或更早版本的 Python,则可能需要自行下载和安装 PyUnit,现在的开发者通常不需要操心这些事情。 通过 PyUnit 可以让测试具有持久性,测试与开发同步进行,测试代码与开发代码一同发布。使用 PyUnit 具有如下好处: 可以使测试代码与产品代码分离。 针对某一个类的测试代码只需要进行较少的改动,便可以应用于另一个类的测试。 PyUnit 开放源代码,可以进行二次开发,方便对 PyUnit 的扩展。 PyUnit 是一个简单、易用的测试框架,其具有如下特征: 使用断言方法判断期望值和实际值的差异,返回 bool 值。 测试驱动设备可使用共同的初始化变量或实例。 测试包结构便于组织和集成运行。 PyUnit (unittest) 的用法 所有测试的本质其实都是一样的,都是通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致。 PyUnit 测试与其他 xUnit 的套路一样,基于断言机制来判断函数或方法的实际输出结果和期望输出结果是否一致,测试用例提供参数来执行函数或方法,获取它们的执行结果

黑盒测试、白盒测试到底差别是什么?

浪尽此生 提交于 2019-12-09 16:31:18
有句俗语说得好:不管白猫、黑猫,能抓到老鼠就是好猫。 如果用在软件测试领域,这句话也一点都没错。不管黑盒、白盒,能找出Bug、发现缺陷,保证软件质量才是王道。 对于刚踏足软件测试的新手小白来说,黑盒测试、白盒测试绝对是入门必学词汇之一。不过,他们说的黑是什么黑?白又是什么白?两者的区别到底在哪里呢?且听我一一道来。 最大区别:关注对象不一样 黑盒测试和白盒测试,二者最大的区别应该就是测试时关注的对象不一样。 黑盒测试主要针对的是程序所展现给用户的功能,白盒测试主要针对的是程序代码逻辑,简单的说,就是前者测试最终展示功能,后者测试后台程序。 黑盒测试 黑盒,顾名思义就是:把测试对象看作一个不能打开的黑盒子。测试时,测试人员完全不用考虑盒子里面的逻辑结构和具体运作,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明,检验输出结果对不对。 白盒测试 与黑盒恰恰相反,这种方法是把测试对象看作一个打开的透明盒子。测试时,测试人员会利用程序内部的逻辑结构及有关信息,通过在不同点检查程序状态,检验程序中的每条通路是否都能按预定要求进行正确工作。 举个栗子,加深理解 说到这里,我们来举一个生活中的小栗子,相信能更好的帮你理解这两种测试方法。 假设,小A和小B是一对情侣,决定在家做饭。小A让小B出门买菜,最好一个小时内能买齐回家。 如果在黑盒模式下,小A(测试人员

简单测试linq to sql性能

有些话、适合烂在心里 提交于 2019-12-09 13:47:18
前些日子,做了一个物业收费系统,cs模式,用到了linq to sql 技术,这是我第一次使用这个东东写程序存取数据库,迷迷糊糊搞得一塌糊涂,当时有个同学他们找好的分页组件,然后写好了调用方法,由于时间比较急,而且第一次用,所以没有怎么研究就直接按照注释使用他们写好的分页方法,然而开发过程中一直都对他们写的方法有怀疑,会不会是一种投机取巧,胡编乱造的?后来我也做过一些简单分析,我发现程序在业务逻辑层中每次都从数据库中将数据全部读取出来,然后循环将数据转成特定的List,也就是遍历整个数据集合,然后在显示层中将List进行分页,最后放到DataGridView中,其中列名自动设定为类的属性值,刚开始我还一直认为这样的方法好方便啊,一下子全部生成了,直到程序马上接近尾声时,我发现程序的操作日志记录已经达到了4500条,每次打开日志管理界面时,程序都要加载上半天才能出来,我彻底对linq产生了怀疑,确切的说并不是对linq产生怀疑,而是分页方法以及程序算法产生了怀疑。 显示层的分页代码部分: 1 dataGridView.DataSource = data.Take(pagerControl1.PageSize * pagerControl1.PageIndex).Skip(pagerControl1.PageSize * (pagerControl1.PageIndex - 1))

白盒测试案例

孤人 提交于 2019-12-08 11:00:01
白盒测试案例 白盒测试案例 案例 根据题目画出需求的流程图 根据所画流程图写出相应的程序 分别编写各种逻辑覆盖法的测试用例并执行测试用例写出测试结果 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 组合条件覆盖 基本路径覆盖 案例 编写循环程序,要求输入读入某汽车销售人员的销售数(以台 计)和每台销售的基础提成数(元)、以及销售人员工种(正式工或临时工),计算并输出他的销售提成。若销售人员销售超过40台且基础提成超过400元,则超过部分按基础提成的1.5倍的来计算。超过50台,如果是正式员工,则超过50台的部分按基础提成的2倍的来计算,否则销售提成仍按照基础提成的1.5倍的来计算。编写流程图,并使用各种逻辑覆盖法编写测试用例。 根据题目,画出需求的流程图; 根据所画流程图写出相应的程序; /************************************************************ FileName: CalculateSalComm.cpp Author: Switch Version : 1.0 Date: 2016-03-30 Description: 计算销售提成 // 模块描述 Function List: // 主要函数及其功能 1. main 输出销售提成 2. calculateSaleComm 计算销售提成 ****************

Flink架构、原理与部署测试

*爱你&永不变心* 提交于 2019-12-07 20:21:40
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。 现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型,因为它们所提供的SLA(Service-Level-Aggreement)是完全不相同的:流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理。 Flink从另一个视角看待流处理和批处理,将二者统一起来:Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的; 批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的 。 Flink流处理特性: 支持高吞吐、低延迟、高性能的流处理 支持带有事件时间的窗口(Window)操作 支持有状态计算的Exactly-once语义 支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作 支持具有Backpressure功能的持续流模型 支持基于轻量级分布式快照(Snapshot)实现的容错 一个运行时同时支持Batch on Streaming处理和Streaming处理 Flink在JVM内部实现了自己的内存管理 支持迭代计算 支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作

Unix系列shell程序编写从入门到精通(中)

百般思念 提交于 2019-12-07 10:21:53
3>在Shell中使用数据变量 用户可以在Shell中使用数据变量,例如ba.sh程序: cd/usr/icewalk ls|cpio -o > /dev/fd0 该程序中要备份的目录为一常量,即该程序只能用来备份一个目录。若在该程序中使用变量,则会使其更通用: workdir=$1 cd $workdir ls * |cpio -o > /dev/fd0 通过这一改变,用户可以使用程序备份变量$workdir指定的目录。例如我们要备份/home/www的内容,只要运行ba.sh /home/www即可实现。(若不明白 $1,下面将详细介绍shell参数的传递,$1代表本sh程序-ba.sh的第一个参数) 4>在Shell程序中加上注释 为了增加程序的可读性,我们提倡加入注释。在Shell程序中注释将以"#"号开始。当Shell解释到"#"时,会认为从"#"号起一直到该行行尾为注释。 5>对Shell变量进行算术运算 高级语言中变量是具有类型的,即变量将被限制为某一数据类型,如整数或字符类型。Shell变量通常按字符进行存储,为了对Shell变量进行算术运算,必须使用expr命令。 expr命令将把一个算术表达式作为参数,通常形式如下: expr [数字] [操作符] [数字] 由于Shell是按字符形式存储变量的,所以用户必须保证参加算术运算的操作数必须为数值

高并发性能调试经验分享

ε祈祈猫儿з 提交于 2019-12-06 22:06:10
引文 4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?知乎原贴地址如下: 腾讯实习生面试,这两道题目该怎么回答? - 编程 . 遗憾的是知乎很多答案在抨击这道题本身的正确性,虽然我不是这次的面试官,但我认为这是一道非常好的面试题。当然,只是道加分题,答不上,不扣分。答得不错,说明解决问题的思路和能力要超过应届生平均水平。 之所以写上面这段,是因为我觉得大部分后台服务端开发都有可能遇到这样的BUG,即使没有遇到,这样的题目也能够激发大家不断思考和总结。非常凑巧的是,我在4月份也遇到了一个类似的而且要更加严重的BUG,这是我自己挖的一个很深的坑,不填好,整个项目就无法上线。 现在已经过去了一个多月,趁着有时间,自己好好总结一下,希望里面提到的一些经验和工具能够带给大家一点帮助。 项目背景 我们针对nginx事件框架和openssl协议栈进行了一些深度改造,以提升nginx的HTTPS完全握手计算性能。 由于原生nginx使用本地CPU做RSA计算,ECDHE_RSA算法的单核处理能力只有400 qps左右。前期测试时的并发性能很低,就算开了24核,性能也无法超过1万。 核心功能在去年底就完成了开发,线下测试也没有发现问题。经过优化后的性能提升几倍,为了测试最大性能

awvs 中文手册详细版(含10.5及12版本)

戏子无情 提交于 2019-12-06 16:25:09
目录: 0×00、什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01、AWVS安装过程、主要文件介绍、界面简介、主要操作区域简介(Install AWVS and GUI Description) 0×02、AWVS的菜单栏、工具栏简介(AWVS menu bar & tools bar) 0×03、 开始一次新扫描之扫描类型、扫描参数详解(Scan Settings、Scanning Profiles) 0×04、AWVS的应用程序配置详解(Application Settings) 0×05、AWVS的蜘蛛爬行功能(Site Crawler) 0×06、AWVS的目标探测工具(Target Finder) 0×07、AWVS的子域名探测工具(Subdomain Scanner) 0×08、AWVS的SQL盲注测试工具(Blind SQL Injection) 0×09、AWVS的HTTP请求编辑器(HTTP Editor) 0×10、AWVS的HTTP嗅探工具(HTTP Sniffer) 0×11、AWVS的HTTP模糊测试工具(HTTP Fuzzer) 0×12、AWVS的认证测试工具(Authentication Tester) 0×13、AWVS的WEB WSDL扫描测试工具(Web Services

python中错误、调试、单元测试、文档测试

狂风中的少年 提交于 2019-12-06 12:54:14
错误分为程序的错误和由用户错误的输入引起的错误,此外还有因为各种各样意外的情况导致的错误,比如在磁盘满的时候写入、从网络爬取东西的时候,网络断了。这类错误称为异常 错误处理    普通的错误处理机制就是在出错的时候返回一个错误代码,但是这样十分不方便,一是因为错误码是和正常结果一样的方式返回的,判断起来十分不方便,二是错误还需要一级一级的向上报,直到错误处理程序。 所以高级语言通常都内置了一套 try...except...finally... 的错误处理机制,Python也不例外。 try: A#如果A中的代码执行过程中出错,就会执行B中的代码 except ZeroDivisionError as e: B finally: C#C中的代码无论是否出错都会正常执行(可以不要这个)<br>。。。 如果错误有不同的类型,可以说使用多个except语句,每个语句处理一个类型的错误 另外,可以在except后面加一个else,如果没有出错,会执行else Python 的错误其实也是一个类,所有的异常类型都是从BaseException类派生的 except在捕获错误时,不但捕获该类型的错误,而且还会把子类一网打尽 try: foo() except ValueError as e: print('ValueError') except UnicodeError as e: print

软件工程的几个步骤

青春壹個敷衍的年華 提交于 2019-12-06 12:29:37
软件工程的几个步骤[转载] 2008年01月08日 星期二 15:36 软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。 IEEE:软件工程是开发、运行、维护和修复软件的系统方法。 Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 软件工程学的内容 软件工程学的主要内容是软件开发技术和软件工程管理. 软件开发技术包含软件工程方法学、 软件工具 和 软件开发环境 ;软件工程管理学包含软件工程经济学和软件管理学。 软件工程基本原理 著名软件工程专家B.Boehm综合有关专家和学者的意见并总结了多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的七条基本原理。 (1)用分阶段的生存周期计划进行严格的管理。 (2)坚持进行阶段评审。 (3)实行严格的产品控制。 (4)采用现代程序设计技术。 (5)软件工程结果应能清楚地审查。 (6)开发小组的人员应该少而精。 (7)承认不断改进软件工程实践的必要性。 B.Boehm指出,遵循前六条基本原理,能够实现软件的工程化生产;按照第七条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。 软件工程(SoftWare