File - testRUN New Zealand

advertisement
DbFit 3.0.1 for FitNesse
with Data Warehouse worked examples
Presented 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
a little more background…
Test & Agile Practitioner
One who practices testing & agile software development,
as a professional occupation.
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Chris SAUNDERS
Originally a Systems Engineer. Spent a decade on my OE in the United Kingdom.
Returned to Christchurch as a Test Manager; contracted for 5 years & now permanent.
Local Government
Healthcare
Christchurch
Utilities
Education
Auckland
New Zealand
Payroll
Tauranga
Palmerston North
Aviation
Healthcare
Wellington
2008
Christchurch
School &
Polytechnic
Education
Degree Education
Bachelor of Technology
(Honours), Information
Engineering
Graduated 1997
United
Kingdom
Financial Services
Stirling
Power Generation
Massey University
Edinburgh
Harrogate
Stockport
Fashion IT
1999
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)
SELECT DISTINCT Drink
FROM the.Fridge
WHERE Temperature = 'Cold'
AND Drink IN (
'Coke'
,'Ginger Beer'
)
AND (
Quality > 0
OR Quality IS NOT NULL
)
What is the result of the following SQL?
(Bottom table is the Fridge table)
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
ETL
[AdventureWorks2014]
Extract
Source Data
(multiple sources)
[AdventureWorksDW2014]
Transform
Load
Load
Stage
Data Warehouse
Person
Person
WorkingPerson
DimPerson
BusinessEntityID
BusinessEntityID
EmployeeKey
EmployeeKey
FirstName
FirstName
BusinessEntityID
FirstName
LastName
LastName
FirstName
LastName
MiddleName
MiddleName
LastName
MiddleName
PersonType
PersonType
MiddleName
SalesPersonFlag
…
…
SalesPersonFlag
…
…
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
What Point to Test
[AdventureWorks2014]
[AdventureWorksDW2014]
Extract
Source Data
(multiple sources)
Transform
Load
Load
Stage
Source
Source
Data Warehouse
Data Warehouse
Load
Data Warehouse
Load
DbFit 3.0.1 for FitNesse
Stage
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
What Point to Test
Considered each possible test points on the threads.
Load
Test Points
To test the whole system, one needs each thread.
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
Dimension Table
Fact 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)
DbFit 3.0.1 for FitNesse
[AdventureWorksDW2014].[dbo].[DimEmployee]
•
Provides filtering, grouping and labelling
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 Database
Connect 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 command
A 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 Records
table DimCustomer
[AdventureWorks2014]
[AdventureWorksDW2014].[dbo].[DimCustomer]
ETL
Known
Source Data
Data Warehouse
Data Warehouse
COUNT
18444
Check Data Warehouse table DimCustomer count record against a fixed value in
FitNesse wiki page.
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Records
Query command with fixed result
Brittle test due to the fact this test requires updating every time test data changes as
the DimCustomer table record will change.
Which SQL for COUNT and why?
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Records
table FactInternetSales
[AdventureWorksDW2014].[dbo].[FactInternetSales]
[AdventureWorks2014]
ETL
Known
Source Data
COUNT
Source
Data Warehouse
Data Warehouse
COUNT
Check Data Warehouse table FactInternetSales count records against a Source data.
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Records
Store Query command
Compare 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 fields
UnitPrice, table FactInternetSales
[AdventureWorksDW2014].[dbo].[FactInternetSales]
[AdventureWorks2014]
ETL
Known
Source Data
SUM
Source
Data Warehouse
Data Warehouse
SUM
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.
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Sum Data Warehouse fields
Store Query command
Compare 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
[AdventureWorks2014]
[AdventureWorksDW2014].[dbo].[DimProduct]
ETL
Known
Source Data
Source
Data Warehouse
Data Warehouse
EXCEPT (both ways)
Check each Data Warehouse ListPrice field, in table DimProduct, against Source data.
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
[AdventureWorksDW2014]
[DbFitNesseTest]
data
Test Database
Data Warehouse
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)
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Test Database
Report User Story Example
European 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
UnitedKingdom
2014
$0.00
$0.00
$0.00
2013 $1,578,511.80 $1,761,876.36 $2,124,007.29
2012 $648,065.54 $608,657.98
$712,700.96
2011 $410,845.33 $520,500.16
$550,591.22
2010
$3,399.99
$0.00
$699.10
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Test Database
[AdventureWorksDW2014]
[DbFitNesseTest]
data
Test Database
Data Warehouse
Data Warehouse
Create a table with expected results.
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Create Expected Results Table
Execute command
Commit 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 Table
Inspect 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 Table
Insert 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 Records
Store Query command
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Records
Compare Stored Queries command
Data
0.00
Rounding
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Count Data Warehouse Records
Compare 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 Commands
Update command
Execute 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
Adventure Works 2014 Sample Databases
http://msftdbprodsamples.codeplex.com/releases/view/125550
Microsoft SQL Server 2014 Express
http://msdn.microsoft.com/en-us/evalcenter/dn434042.aspx
Poor Man's T-SQL Formatter
http://www.architectshack.com/PoorMansTSqlFormatter.ashx
DbFit examples
http://www.testrun.co.nz/presentations.html (place under FitNesseRoot\DbFit\AcceptanceTests\DotNetTests)
DbFit 3.0.1 for FitNesse
with Data Warehouse worked examples
Presented by Chris SAUNDERS - September 2014
@chrisrsaunders
DbFit 3.0.1 for FitNesse
Chris SAUNDERS B.Tech (Info. Eng.) with Honours
Download