DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
DbFit 3.0.1 for FitNesse
with Data Warehouse worked examplesPresented by Chris SAUNDERS - September 2014
@chrisrsaunders
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
99% Presentation
Presenter’s Background [2%]
Audience Survey [4%]
DbFit Intro [5%]
Data Warehouse Intro [8%]
Worked Examples [75%]
Discussion [5%]
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Presenter’s Background
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Chris SAUNDERS
Test & Agile PractitionerOne who practices testing & agile software development,
as a professional occupation.
a little more background…
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Returned to Christchurch as a Test Manager; contracted for 5 years & now permanent.
Chris SAUNDERSOriginally a Systems Engineer.
Healthcare
Financial Services
Power Generation
Fashion IT
United Kingdom
HarrogateStockport
StirlingEdinburgh
1999
Spent a decade on my OE in the United Kingdom.
New Zealand
Christchurch
Auckland
Wellington
Palmerston North
Utilities
Degree Education
Bachelor of Technology (Honours), Information
Engineering
Graduated 1997
Massey University
Tauranga
School & Polytechnic
Education
2008
Healthcare
Education
Payroll
Local Government
Christchurch
Aviation
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Audience Survey
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Audience Survey
Who… has used FitNesse? has used DbFit? has worked with Data Warehouses? has an understanding SQL? (Structured Query Language)
What is the result of the following SQL?(Bottom table is the Fridge table)
SELECT DISTINCT DrinkFROM the.FridgeWHERE Temperature = 'Cold'AND Drink IN ( 'Coke' ,'Ginger Beer' )AND ( Quality > 0 OR Quality IS NOT NULL )
dbo is the "default" schema for SQL Server;(database owner)
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
DbFit Intro
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
What is DbFit?DbFit is a set of fixtures which enables FIT/FitNesse tests to execute directly against a database.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
What is DbFit?DbFit is a set of fixtures which enables FIT/FitNesse tests to execute directly against a database.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
What is DbFit?DbFit is a set of fixtures which enables FIT/FitNesse tests to execute directly against a database.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Data Warehouse Intro
Environment
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Data Warehouse Environment[AdventureWorks2014]
Source Data(multiple sources)
Person
BusinessEntityID
FirstName
LastName
MiddleName
PersonType
…
Load
Extract
Person
BusinessEntityID
FirstName
LastName
MiddleName
PersonType
…
Stage
Transform
WorkingPerson
EmployeeKey
BusinessEntityID
FirstName
LastName
MiddleName
SalesPersonFlag
…
[AdventureWorksDW2014]
Data Warehouse
Load
DimPerson
EmployeeKey
FirstName
LastName
MiddleName
SalesPersonFlag
…
ETL
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
What Point to Test[AdventureWorks2014]
Source Data(multiple sources)
Load
Extract
Stage
Transform
[AdventureWorksDW2014]
Data Warehouse
Load
Source Data Warehouse
Source Load
StageLoad
Data Warehouse
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
SourceSource
What Point to Test
Considered each possible test points on the threads.
Stage
Load
Data Warehouse
To test the whole system, one needs each thread.
Test Points
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Data Warehouse Intro
Facts & Dims
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Facts & Dimensions[AdventureWorksDW2014].[dbo].[DimEmployee]
Dimension TableFact Table[AdventureWorksDW2014].[dbo]. [FactResellerSales]
• Consists of the measurements, metrics or facts of a business process
• Calculations can be done on the measures (e.g. sum, count, min, max)
• Provides filtering, grouping and labelling
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Worked Examples
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Connection to the DatabaseConnect command
Specifying the full connection string using the full ADO.NET or JDBC connection string.
or
Specifying server, username, password, and database name.
Connect Using File commandA file contains the connection information, therefore can be environment related.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Recordstable DimCustomer
Data Warehouse
[AdventureWorks2014]
KnownSource Data
ETL
[AdventureWorksDW2014].[dbo].[DimCustomer]
Data Warehouse
Check Data Warehouse table DimCustomer count record against a fixed value in FitNesse wiki page.
COUNT
18444
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse RecordsQuery command with fixed result
Which SQL for COUNT and why?
Brittle test due to the fact this test requires updating every time test data changes as the DimCustomer table record will change.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Recordstable FactInternetSales
Data Warehouse
[AdventureWorks2014]
KnownSource Data
ETL
[AdventureWorksDW2014].[dbo].[FactInternetSales]
Data Warehouse
Check Data Warehouse table FactInternetSales count records against a Source data.
Source COUNTCOUNT
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse RecordsStore Query commandCompare stored queries command
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Visualise SQL with Design Query in Editor
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Sum Data Warehouse fieldsUnitPrice, table FactInternetSales
Data Warehouse
[AdventureWorks2014]
KnownSource Data
ETL
[AdventureWorksDW2014].[dbo].[FactInternetSales]
Data Warehouse
Check Data Warehouse field’s UnitPrice total sum in table FactInternetSales, against a Source data.
Measures can be summed up, for all records or for a sub-set of records.
Source SUMSUM
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Sum Data Warehouse fieldsStore Query commandCompare stored queries command
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Check each Data Warehouse field,ListPrice in table DimProduct
Data Warehouse
[AdventureWorks2014]
KnownSource Data
ETL
[AdventureWorksDW2014].[dbo].[DimProduct]
Data Warehouse
Check each Data Warehouse ListPrice field, in table DimProduct, against Source data.
Source
EXCEPT (both ways)
SQL’s EXCEPT function, returns any distinct values from the left query that are not also found on the right query.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Check each Data Warehouse field
Limit number of errors in FitNesse. TOP 3
Return results in the same order. ORDER BY 1, 2 (or else missing records will be displayed)
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Lets Change Focus
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Test Database
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Test Database
Data Warehouse
[DbFitNesseTest]
Test Database
[AdventureWorksDW2014]
Data Warehouse
Test Database is used for:• Store Test data (either as a source or created from other sources)• Store procedures (to be executed from FitNesse)• Storing results (to compare in the future)
data
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Test DatabaseReport User Story ExampleEuropean Internal Sales Report
As an European Sales Manager,I want a Report on total “Europe Internal Sales" for each year,So that future business decisions can be made.
Acceptance Criteria : 1. To include all available years 2. Only 3 countries; France, UK & Germany 3. …
Year France Germany UnitedKingdom2014 $0.00 $0.00 $0.002013 $1,578,511.80 $1,761,876.36 $2,124,007.292012 $648,065.54 $608,657.98 $712,700.962011 $410,845.33 $520,500.16 $550,591.222010 $3,399.99 $0.00 $699.10
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Test Database
Data Warehouse
[DbFitNesseTest]
Test Database
[AdventureWorksDW2014]
Data Warehouse
Create a table with expected results.
data
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Create Expected Results TableExecute commandCommit command
Create a table and commit to database.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Truncate Expected Results TableInspect Table command
Truncate table and commit to database.Inspect Table to confirm it’s truncated (does not Pass or Fail).
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Insert into Expected Results TableInsert command
Insert data into table and commit to database.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse RecordsStore Query command
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse RecordsCompare Stored Queries command
Rounding
Data0.00
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse RecordsCompare Stored Queries command
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Drop Expected Results Table
Drop table and commit to database.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Other Commands
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Other CommandsUpdate commandExecute Procedure command
Update command similar to insert command.
Execute Procedure will executes a stored procedure or function for each row of data table and will bind input/output parameters to columns of the data table.
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Thank you
DbFit 3.0.1 for FitNesse Chris SAUNDERS B.Tech (Info. Eng.) with Honours
DbFit 3.0.1 for FitNesse
with Data Warehouse worked examplesPresented by Chris SAUNDERS - September 2014
@chrisrsaunders
Adventure Works 2014 Sample Databaseshttp://msftdbprodsamples.codeplex.com/releases/view/125550Microsoft SQL Server 2014 Expresshttp://msdn.microsoft.com/en-us/evalcenter/dn434042.aspxPoor Man's T-SQL Formatterhttp://www.architectshack.com/PoorMansTSqlFormatter.ashxDbFit exampleshttp://www.testrun.co.nz/presentations.html (place under FitNesseRoot\DbFit\AcceptanceTests\DotNetTests)