API ( Application Programming Interface )测试的自动化是软件测试最基本的一种类型。从本质上来说, API 测试是用来验证组成软件的那些单个方法的正确性,而不是测试整个系统本身。 API 测试也称为单元测试( Unit Testing )、模块测试( Module Testing )、组件测试( Component Testing )以及元件测试( Element Testing )。
单元测试( unit testing ),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如 C 语言中单元指一个函数, Java 里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。
Lua 里面的函数必须放在调用的代码之前,下面的代码是一个常见的错误:local i = 100i = add_one(i)local function add_one(i) return i + 1end你会得到一个错误提示:[error] 10514#0: *5 lua entry thread aborted: runtime error: attempt to call global 'add_one' (a nil value)为什么放在调用后面就找不到呢?
大家在使用 Lua 的时候,一定会遇到不少和 nil 有关的坑吧。有时候不小心引用了一个没有赋值的变量,这时它的值默认为 nil 。如果对一个 nil 进行索引的话,会导致异常。 如下: local person = {name = "Bob", sex = "M"}-- do somethingperson = nil-- do somethingprint(person.
在 lua 中,数组下标从 1 开始计数。官方: Lua lists have a base index of 1 because it was thought to be most friendly for non-programmers, as it makes indices correspond to ordinal element positions.在初始化一个数组的时候,若不显式地用键值对方式赋值,则会默认用数字作为下标,从 1 开始。
看下这个段伪代码:local value = get_from_cache(key)if not value then value = query_db(sql) set_to_cache(value , timeout = 100)endreturn value看上去没有问题,在单元测试情况下,也不会有异常。但是,进行压力测试的时候,你会发现,每隔 100 秒,数据库的查询就会出现一次峰值。